特許第6575772号(P6575772)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マーベル ワールド トレード リミテッドの特許一覧

特許6575772ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法
<>
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000005
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000006
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000007
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000008
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000009
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000010
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000011
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000012
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000013
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000014
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000015
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000016
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000017
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000018
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000019
  • 特許6575772-ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6575772
(24)【登録日】2019年8月30日
(45)【発行日】2019年9月18日
(54)【発明の名称】ネットワークデバイス内のフレームの送信をブロックするためのシステムおよび方法
(51)【国際特許分類】
   H04L 12/931 20130101AFI20190909BHJP
   H04L 7/04 20060101ALI20190909BHJP
【FI】
   H04L12/931
   H04L7/04
【請求項の数】28
【全頁数】49
(21)【出願番号】特願2016-571730(P2016-571730)
(86)(22)【出願日】2015年6月9日
(65)【公表番号】特表2017-521914(P2017-521914A)
(43)【公表日】2017年8月3日
(86)【国際出願番号】US2015034879
(87)【国際公開番号】WO2015191564
(87)【国際公開日】20151217
【審査請求日】2018年5月10日
(31)【優先権主張番号】62/010,542
(32)【優先日】2014年6月11日
(33)【優先権主張国】US
(31)【優先権主張番号】62/011,760
(32)【優先日】2014年6月13日
(33)【優先権主張国】US
(31)【優先権主張番号】14/733,370
(32)【優先日】2015年6月8日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502188642
【氏名又は名称】マーベル ワールド トレード リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】パンネル、ドナルド
【審査官】 玉木 宏治
(56)【参考文献】
【文献】 特開2006−303724(JP,A)
【文献】 特表2014−507917(JP,A)
【文献】 米国特許出願公開第2015/0188835(US,A1)
【文献】 特開平11−275066(JP,A)
【文献】 米国特許出願公開第2009/0195281(US,A1)
【文献】 米国特許出願公開第2013/0215743(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00−955
H04L 7/04
(57)【特許請求の範囲】
【請求項1】
フレームを格納するように構成された第1のキューと、
ローカルクロック信号を生成するように構成された第1のタイミングモジュールと、
(i)グローバルクロック信号の第1のエッジに基づいて、前記グローバルクロック信号の第2のエッジの予期時間、および(ii)前記グローバルクロック信号の前記第2のエッジ前記予期時間の中心に置かれるウィンドウを判断するように構成された調整モジュールと、
前記ローカルクロック信号の第1のエッジの時間をキャプチャするように構成されたレジスタモジュール
ブロックシェーパと、を備え、
前記調整モジュールは前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間および前記グローバルクロック信号の前記第1のエッジの前記時間に基づいて、前記ローカルクロック信号の第2のエッジを前記ウィンドウの中心に置くための調整信号を生成
前記ブロックシェーパは、前記ローカルクロック信号の前記第2のエッジの調整後、前記ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからの前記フレームの送信をブロックするように構成される、ネットワークデバイス。
【請求項2】
複数のポートであって、前記複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含み、前記複数のキュー状態テーブルの各々は複数のエントリを含み、前記複数のエントリの各々は対応する前記ポートの前記複数のキューのうちのそれぞれのものの状態を含み、前記複数のポートは第1のポートを含み、前記第1のポートは前記第1のキューを含み、
前記エグレスモジュールの各々は前記複数のキュー状態テーブルのうちの対応するものにある前記複数のエントリを循環するように構成された、複数のポートと、
ポートテーブルを格納するように構成されたメモリであって、前記ポートテーブルは前記複数のポートのそれぞれに対する複数の遅延を含み、
前記エグレスモジュールの各々はそれぞれの前記遅延に基づいて、対応する前記ポートの前記複数のキューの循環を開始するように構成された、メモリと、をさらに備える、請求項1に記載のネットワークデバイス。
【請求項3】
前記第1のポートの前記エグレスモジュールは、前記ポートテーブル内の対応する前記遅延に基づいて、前記ローカルクロック信号のエッジから遅延するように構成され、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環し、
前記第1のポート以外の前記複数のポートの前記エグレスモジュールの各々は、前記ポートテーブル内の対応する複数の前記遅延に基づいて、前記複数のポートのうちの連続する前のものによって行われる動作から遅延するように構成され、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、請求項2に記載のネットワークデバイス。
【請求項4】
前記第1のタイミングモジュールまたは前記調整モジュールは、複数の前記テーブルにわたる、前記複数のポートのサイクル開始時間を調整すべく、前記ローカルクロック信号のタイミングを調整するように構成された、請求項3に記載のネットワークデバイス。
【請求項5】
前記第1のタイミングモジュールまたは前記調整モジュールは、前記ポートテーブルの前記複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整するように構成された、請求項4に記載のネットワークデバイス。
【請求項6】
前記第1のタイミングモジュールまたは前記調整モジュールは、前記複数のポートの前記複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整するように構成された、請求項4に記載のネットワークデバイス。
【請求項7】
前記調整モジュールは、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの予め定められた時間範囲内にない場合、前記ローカルクロック信号のタイミングの調整を控えるように構成され、および
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの前記予め定められた時間範囲内にある場合、前記ローカルクロック信号の前記第2のエッジが前記ウィンドウの中心に置かれるように、前記ローカルクロック信号の前記タイミングを調整するように構成された、請求項1から6のいずれか一項に記載のネットワークデバイス。
【請求項8】
前記タイミングモジュールは、前記グローバルクロック信号に基づいて、前記ローカルクロック信号を生成するように構成された、請求項1から7のいずれか一項に記載のネットワークデバイス。
【請求項9】
前記グローバルクロック信号に基づいてトリガ信号を生成するように構成された第2のタイミングモジュールをさらに備え、
前記レジスタモジュールは、前記トリガ信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間をキャプチャするように構成された、請求項1から8のいずれか一項に記載のネットワークデバイス。
【請求項10】
前記レジスタモジュールは、前記グローバルクロック信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間をキャプチャするように構成された、請求項1から9のいずれか一項に記載のネットワークデバイス。
【請求項11】
テーブルを格納するように構成されたメモリをさらに備え、
前記テーブルは複数の遅延時間を含み、
前記複数の遅延時間は前記ネットワークデバイスの複数のポートのそれぞれのためのものであり、
前記複数のポートの動作タイミングは(i)前記複数の遅延時間、および(ii)前記ローカルクロック信号に基づく、請求項1に記載のネットワークデバイス。
【請求項12】
前記複数の遅延時間は、前記グローバルクロック信号または前記ローカルクロック信号のエッジからのそれぞれの遅延量を指す、請求項11に記載のネットワークデバイス。
【請求項13】
テーブルを格納するように構成されたメモリであって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する前記状態にとどまる継続時間を含む、メモリと、
前記テーブルの前記複数のエントリを循環するように構成されたエグレスモジュールと、をさらに備え、
前記ブロックシェーパは、前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックするように構成された、請求項1に記載のネットワークデバイス。
【請求項14】
テーブルを格納するように構成されたメモリであって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む、メモリと、
前記テーブルの前記複数のエントリを循環するように構成されたエグレスモジュールと、をさらに備え、
前記ブロックシェーパは、前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックするように構成された、請求項1に記載のネットワークデバイス。
【請求項15】
ネットワークデバイスを動作する方法であって、前記ネットワークデバイスは第1のキューを含み、前記方法は、
前記第1のキュー内にフレームを格納する段階と、
ローカルクロック信号を生成する段階と、
(i)グローバルクロック信号の第1のエッジに基づいて、前記グローバルクロック信号の第2のエッジの予期時間、および(ii)前記グローバルクロック信号の前記第2のエッジ前記予期時間の中心に置かれるウィンドウを判断する段階と、
前記ローカルクロック信号の第1のエッジの時間をキャプチャする段階と、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間および前記グローバルクロック信号の前記第1のエッジの前記時間に基づいて、前記ローカルクロック信号の第2のエッジを前記ウィンドウの中心に置くための調整信号を生成する段階と、
前記ローカルクロック信号の前記第2のエッジを調整する段階の後、前記ローカルクロック信号のタイミングに基づいて、前記ネットワークデバイスからの前記フレームの送信をブロックする段階と、を備える、方法。
【請求項16】
前記ネットワークデバイスは複数のポートを含み、前記複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含み、前記複数のキュー状態テーブルの各々は複数のエントリを含み、前記複数のエントリの各々は対応する前記ポートの前記複数のキューのうちのそれぞれのものの状態を含み、前記複数のポートは第1のポートを含み、前記第1のポートは前記第1のキューを含み、前記方法は、
前記エグレスモジュールの各々を介し、前記複数のキュー状態テーブルのうちの対応するものにある前記複数のエントリを循環する段階と、
ポートテーブルを格納する段階であって、前記ポートテーブルは前記複数のポートのそれぞれに対する複数の遅延を含む、段階と、
前記エグレスモジュールの各々を介し、およびそれぞれの前記遅延に基づいて、対応する前記ポートの前記複数のキューの循環を開始する段階と、をさらに備える、請求項15に記載の方法。
【請求項17】
前記第1のポートの前記エグレスモジュールを介し、および前記ポートテーブル内の対応する前記遅延に基づいて、前記ローカルクロック信号のエッジから遅延させる段階であって、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、段階と、
前記第1のポート以外の前記複数のポートの前記エグレスモジュールの各々を介し、および前記ポートテーブル内の対応する複数の前記遅延に基づいて、前記複数のポートのうちの連続する前のものによって行われる動作から遅延させる段階であって、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、段階と、をさらに備える、請求項16に記載の方法。
【請求項18】
複数の前記テーブルにわたる、前記複数のポートのサイクル開始時間を調整すべく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、請求項17に記載の方法。
【請求項19】
前記ポートテーブルの前記複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、請求項18に記載の方法。
【請求項20】
前記複数のポートの前記複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、請求項18に記載の方法。
【請求項21】
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの予め定められた時間範囲内にない場合、前記ローカルクロック信号のタイミングの調整を控える段階と、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの前記予め定められた時間範囲内にある場合、前記ローカルクロック信号の前記第2のエッジが前記ウィンドウの中心に置かれるように、前記ローカルクロック信号の前記タイミングを調整する段階と、をさらに備える、請求項15から20のいずれか一項に記載の方法。
【請求項22】
前記グローバルクロック信号に基づいて、前記ローカルクロック信号を生成する段階をさらに備える、請求項15から21のいずれか一項に記載の方法。
【請求項23】
前記グローバルクロック信号に基づいて、トリガ信号を生成する段階をさらに備え、
前記トリガ信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間はキャプチャされる、請求項15から22のいずれか一項に記載の方法。
【請求項24】
前記グローバルクロック信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間はキャプチャされる、請求項15から23のいずれか一項に記載の方法。
【請求項25】
テーブルを格納する段階であって、前記テーブルは複数の遅延時間を含み、前記複数の遅延時間は前記ネットワークデバイスの複数のポートのそれぞれのためのものである、段階と、
前記複数のポートの動作タイミングを(i)前記複数の遅延時間、および(ii)前記ローカルクロック信号に基づいて制御する段階と、をさらに備える、請求項15に記載の方法。
【請求項26】
前記複数の遅延時間は、前記グローバルクロック信号または前記ローカルクロック信号のエッジからのそれぞれの遅延量を指す、請求項25に記載の方法。
【請求項27】
テーブルを格納する段階であって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する前記状態にとどまる継続時間を含む、段階と、
前記ネットワークデバイスのエグレスモジュールを介し、前記テーブルの前記複数のエントリを循環する段階と、
前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする段階と、をさらに備える、請求項15に記載の方法。
【請求項28】
テーブルを格納する段階であって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む、段階と、
前記ネットワークデバイスのエグレスモジュールを介し、前記テーブルの前記複数のエントリを循環する段階と、
前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする段階と、をさらに備える、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本開示は、2015年6月8日に出願された米国実用特許出願第14/733,370号に基づく優先権を主張し、2014年6月11日に出願された米国仮出願第62/010,542号および2014年6月13日に出願された米国仮出願第62/011,760号に基づく優先権の利益を主張する。本開示は、2015年6月8日に出願された米国実用特許出願第14/733,296号(発明の名称「ガードバンドの残りの期間のサイズに基づきキューのソフトブロックを実行するためのシステムおよび方法」および代理人整理番号MP5903)と関連する。本願は、2012年3月8日に出願された米国実用特許出願第13/415,112号(現在米国特許第8,982,896号)とも関連する。上記複数の出願の開示は、参照により本明細書にそれら全体が組み込まれる。
【0002】
本開示はネットワークに関し、より具体的には、非恣意的ネットワークにおけるデータソースおよびブリッジのポートからのタイミング制御されたデータ転送に関する。
【背景技術】
【0003】
データ通信ネットワークは複数のトーカ(または複数のデータソース)および複数のレシーバを含んでよい。任意の数のブリッジが複数のトーカおよびレシーバのそれぞれの間で、デイジーチェーンで接続されてよい。データ通信ネットワークは恣意的ネットワーク(ノンエンジニアードネットワークと呼ばれる)または非恣意的ネットワーク(エンジニアードネットワークと呼ばれる)であってよい。恣意的ネットワークとは、例えば住宅用ローカルエリアネットワーク(LAN)であってよく、LANはネットワーク内の様々なポイントにランダムな時間において恣意的に接続および切断する複数の異なるネットワークデバイス(例えば、コンピュータ、携帯電話、テレビ、プリンタおよび電子タブレット)を有してよい。複数のネットワークデバイスは、恣意的ネットワーク内で送信されるデータの優先レベルに関わらず、いつでも接続および切断してよい。
【0004】
非恣意的ネットワークとは、例えば車両内の自動車用ネットワークまたは製造アセンブリラインネットワークであってよい。一般に、非恣意的ネットワーク内のネットワークデバイスは固定されており、非恣意的ネットワークへ接続される、および/または非恣意的ネットワークから切断されることはない。ネットワークデバイスが非恣意的ネットワークへ接続される、および/または非恣意的ネットワークから切断されることはあり得るものの、非恣意的ネットワークへ接続される、または非恣意的ネットワークから切断されるネットワークデバイスとの通信は、優先度の高いデータの送信期間中は阻止される。これらの送信期間中は、優先度の高いデータが非恣意的ネットワーク内の複数のネットワークデバイス間で送信される。
【0005】
例えば、米国電気電子学会(IEEE)802.1BAに従い動作する非恣意的なEthernet(登録商標)ネットワークは、トーカ(またはソース)、複数のブリッジおよびリスナ(またはレシーバ)を含んでよい。トーカは、周期的な送信時間間隔のうち割り当てられた送信期間中に、優先度の高いデータをリスナにブリッジを介して送信してよい。優先度の高いデータとは、例えば低レイテンシ要件を持つクラスAまたはクラスBデータを指してよい。レイテンシという用語は、フレームが非恣意的ネットワークの1または複数のホップを介して送信されるための時間を指す。単一ホップのレイテンシは、そのホップについて、フレームの最後のビットがネットワークデバイスによって受信される時間から、最後のビットがネットワークデバイスから送信される時間までで測定される。格納および転送方法では、単一ホップのレイテンシは、ネットワークデバイスに入る最後のビットから、ネットワークデバイスから出る最後のビットまでで測定される。カットスルー方法では、当該レイテンシはネットワークデバイスに入る第1のビットから、ネットワークデバイスから出る第1のビットまでで測定される。単一ホップとは、非恣意的ネットワークのトーカ(エンドステーションと称される)またはブリッジを指してよい。
【0006】
非恣意的ネットワークにおいては、送信されるデータは、例えば3つの優先レベルのうちの1つを有してよい。クラスAデータは、最優先レベルを持つオーディオビデオブリッジング(AVB)データを含んでよい。AVBデータはオーディオデータおよび/またはビデオデータを含んでよいが、AVBデータはまた制御データ、ユーザデータ、参照データ、または他のタイプのデータを含んでよい。最優先レベルデータは、予め定められた量の帯域幅および予め定められた最大レイテンシで提供されてよい。これは、クラスAデータが割り当てられた期間中に送信されること、および予め定められた数のホップを経由し、および/または複数のエンドステーション間でクラスAデータを送信することに関連するレイテンシが予め定められた最大レイテンシ未満であることを保証する。クラスBデータは次の最優先レベルを持つAVBデータであってよい。非AVBデータは最も低い優先レベルを有してよい。一般に、より優先度の高いデータが、より優先度の低いデータの前に送信される。
【0007】
IEEE 802.1 QbvはAVB第2世代ネットワークにおける時間認識シェーパのための仕様であり、時間感知ネットワーク(TSN)と称される。IEEE 802.1 Qbvに従い動作する複数のネットワークデバイスは、いつでもネットワークに接続してよい。しかしながら、複数のネットワークデバイスによる通信および/または複数のネットワークデバイスによる使用の前に、高い優先度のデータがネットワークを通過することを許可されるように、複数のネットワークデバイスによる通信および/または複数のネットワークデバイスによるネットワークの使用は制御されてよい。
【0008】
高速Ethernet(登録商標)(FE)とは、100メガビット/秒(Mbits/s)でのデータ送信を指す。ギガバイトEthernet(登録商標)(GE)とは、1ギガビット/秒(Gbits/s)の送信を指す。第1世代のEthernet(登録商標)ネットワークのIEEE802.1 AVB規格(FEまたはGEの送信速度における)によると、クラスAデータフレームは7回のホップを2ミリ秒(ms)未満で通過し、クラスBデータフレームは7回のホップを50ms未満で通過することになる。第2世代ネットワークのIEEE802.1 AVBのゴール1によると、クラスAフレームは32回のGE送信速度のホップを125μs未満で通過することになる。無線接続経由でのデータ送信時間は、有線接続経由でのデータ送信時間より長い。
【発明の概要】
【0009】
ネットワークデバイスが提供され、ネットワークデバイスはキュー、タイミングモジュール、調整モジュール、レジスタモジュールおよびブロックシェーパを含む。キューは、フレームを格納するよう構成される。タイミングモジュールは、ローカルクロック信号を生成するよう構成される。調整モジュールは、(i)グローバルクロック信号の第1のエッジに基づいて、グローバルクロック信号の第2のエッジの予期時間、および(ii)グローバルクロック信号の第2のエッジの予期時間の中心に置かれるウィンドウを判断するよう構成される。レジスタモジュールは、ローカルクロック信号の第1のエッジの時間をキャプチャするよう構成される。調整モジュールは、ローカルクロック信号の第1のエッジのキャプチャされた時間およびグローバルクロック信号の第1のエッジの時間に基づいて、ローカルクロック信号の第2のエッジをウィンドウの中心に置くための調整信号を生成するよう構成される。ブロックシェーパは、ローカルクロック信号の第2のエッジの調整後、ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからのフレームの送信をブロックするよう構成される。
【0010】
他の特徴において、キュー、タイミングモジュール、複数のポートおよびメモリを含むネットワークデバイスが提供される。キューは、フレームを格納するよう構成される。タイミングモジュールは、ローカルクロック信号を生成するよう構成される。複数のポートの各々は、(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれものと、を含み、複数のキュー状態テーブルの各々は複数のエントリを含み、複数のエントリの各々は対応するポートの複数のキューのうちのそれぞれのものの状態を含み、複数のポートは第1のポートを含み、第1のポートは第1のキューを含み、複数のエグレスモジュールの各々は複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。メモリはポートテーブルを格納するよう構成され、ポートテーブルは複数のポートのそれぞれに対する複数の遅延を含む。複数のエグレスモジュールの各々は、それぞれの遅延に基づいて、対応するポートの複数のキューの循環を開始するよう構成される。第1のポートのエグレスモジュールは、ポートテーブル内の対応する遅延に基づいて、ローカルクロック信号のエッジから遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。第1のポート以外の複数のポートの複数のエグレスモジュールの各々は、ポートテーブル内の対応する複数の遅延に基づいて、複数のポートのうちの連続する前のものによって行われる動作から遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。
【0011】
本開示の利用可能なさらなる領域は、詳細な説明、特許請求の範囲、および図面から明らかになるであろう。詳細な説明および具体定例は、専ら例示を目的とし、本開示の範囲を限定することを意図していない。
【図面の簡単な説明】
【0012】
図1】本開示の一態様による、グランドマスタ(またはグローバル)クロック信号、ローカルクロック信号およびキュータイミング信号のプロットである。
【0013】
図2】本開示の一態様による非恣意的ネットワークの機能ブロック図である。
【0014】
図3】本開示の一態様によるトーカの機能ブロック図である。
【0015】
図4】本開示の一態様によるブリッジの機能ブロック図である。
【0016】
図5】本開示の一態様によるネットワークデバイスの機能ブロック図である。
【0017】
図6】本開示の一態様による時間非認識ブロックシェーパの機能ブロック図である。
【0018】
図7】本開示の一態様による、時間非認識ブロックシェーパの経時的なカウント値を示すグラフである。
【0019】
図8】本開示の一態様による、時間認識ブロックシェーパの機能ブロック図である。
【0020】
図9】本開示の一態様による、ウィンドウロッキングシステムを組み込んだネットワークデバイスの機能ブロック図である。
【0021】
図10】本開示の一態様によるリングネットワークの図である。
【0022】
図11】本開示の一態様によるQbvウィンドウを示すタイミングプロットである。
【0023】
図12】本開示の一態様による時間認識ブロック構成方法を示す。
【0024】
図13】本開示の一態様によるカットスルーモードのためのタイミングプロットである。
【0025】
図14】本開示の一態様による複数のQbvウィンドウを示すタイミングプロットである。
【0026】
図15】本開示の一態様によるローカルクロックロッキング方法を示す。
【0027】
図16】本開示の一態様によるソフトブロック方法を示す。
【0028】
図面中、参照符号は繰り返し使用され、類似および/または同一の要素を識別することがある。
【発明を実施するための形態】
【0029】
IEEE 802.1 Qbvは、AVB第2世代ネットワークにおける時間認識シェーパのための仕様であり、タイムセンシティブネットワーク(TSN)と称される。時間認識シェーパはネットワークデバイスのポート内のキューからのデータの通過をブロックするために使用される。時間認識シェーパはPTP(precise timing protocol:正確なタイミングプロトコル)時間に基づいて動作してよい。非恣意的ネットワークにおける各時間認識デバイス(またはPTP時間に基づいて動作する任意のデバイス)は「ホールドオーバ(hold over)」、PTP時間が一定期間、利用不可能(または「消失している」)なときに動作できる必要がある。時間認識ブロックシェーパの例が少なくとも図5〜6および図8〜9に示され、それらを参照して以下記載される。
【0030】
「ホールドオーバ」機能に対応すべく、各時間認識機能および/またはネットワークデバイスのポートに対し、別個のクロック回路が提供されてよい。ローカルクロックの周波数および位相を判断し得る時間認識シェーパが以下開示される。ローカルクロックは、対応するクロック回路(またはタイミングモジュール)によって提供される。ネットワーク内の複数のネットワークデバイスのそれぞれのローカルクロックの一定周波数および/または位相の維持を含む複数の例が開示される。周波数および位相はグローバルクロック信号に対して維持される。
【0031】
ネットワーク内の複数のネットワークデバイスはそれぞれの水晶オシレータを有してよく、それら水晶オシレータは異なる基本周波数を有するそれぞれのローカルクロック信号を生成する。それら基本周波数は、互いにプラスマイナス100の分脈泊数(PPM)の範囲内であってよい。基本周波数は、温度変化に起因して経時的に変更可能である。温度変化に対応すべく、周期的な訂正が実行される。グランドマスタクロック(場合によって「グローバルクロック」と称される)に基づき、クロック周波数の差に対応すべく、PTPプロトコルが使用されてよい。グランドマスタクロックとは、非恣意的ネットワーク内で複数のネットワークデバイスによって共有されるグローバルクロック信号を生成するクロックである。ローカルクロックおよびグローバルクロックは、アナログまたはデジタルのクロック信号を生成してよい。
【0032】
IEEE 802.1QbvはEthernet(登録商標)ネットワークからの可能な限り低いレイテンシをサポートする。これは、クリティカルデータフローを送信する必要がある場合の時間窓中に、他のデータフローをブロックすることによって、最低レイテンシデータフローへの輻輳を阻止することによって実現される。この輻輳阻止には、ポートからフレーム全体が受信される前に、ポートからフレームの一部が送信されることを許容することによって、さらなるレイテンシの低減をサポートする「カットスルー」動作が含まれ得る。IEEE802.1Qbvは、時間認識ブロック(TAB)ウィンドウを使用することによって、カットスルー動作をサポートする。TABウィンドウは、データの通過を許可するとき、および/またはデータの通過をブロックするときのための基準ポイントを提供する。複数のスイッチから構成される長いデイジーチェーンでは、ネットワークデバイスの複数のポートに対し、同一の反復TABウィンドウが提供されてよい。TABウィンドウは、対応するネットワークデバイスにおけるローカルクロックに基づいて生成されてよい。
【0033】
以下の開示例は、複数のスイッチから構成される長いデイジーチェーンおよびリングネットワーク等の他のアプリケーションに対応するための、ネットワークデバイスの各ポート用の独立した反復TABウィンドウを提供する。リングネットワークは、リング状態に接続された複数のネットワークデバイスを含み、データが複数の方向において同一のネットワークデバイスに移動できるようにする。複数のTABウィンドウは同一のローカルクロックに基づいて生成されてよく、それらはすべて同一の期間を有してよいが、当該TABウィンドウのオープンおよびクローズ(または開始および終了)時間は、同一のポートについてキューごとに加え、ポートごとに独立である。
【0034】
カットスルー動作を最大化すべく、クリティカル(またはカットスルー)データが定期的な時間間隔で送信される準備がなされている場合、カットスルーデータがポートから送信される期間中、ポートの他のデータおよび/またはキューが遮断されていれば、カットスルーの低レイテンシが保証可能である。これには、カットスルーウィンドウの間、すべての他のトラフィックをブロックするための複数のブリッジ(または複数のスイッチ)が必要である。この機能は、時間認識ブロックスケジューラ(またはタイミングモジュール)によって実行されてよい。
【0035】
図1は、グランドマスタ(またはグローバル)クロック信号10、ローカルクロック信号12およびキュータイミング信号14を示す。グランドマスタクロック信号10およびローカルクロック信号12の各サイクル(または周期的な送信タイミング間隔)は、例えば8キロヘルツ(kHz)信号について125マイクロ秒(μs)の長さを有してよい。周期的な送信時間間隔のそれぞれの間に送信可能なフレームの最大数は、例えば8個であってよい。
【0036】
ローカルクロック信号12はグローバルクロック信号10と同期されてよく、またはパルス16、18によって示されるように、グローバルクロック信号から時間がずれてよい。ネットワークデバイスの1または複数のポートは、ローカルクロック信号12に基づいて動作してよい。キュータイミング信号14は、ネットワークデバイスのポートのキューからのクリティカルデータの送信タイミングを指してよい。ポートは、ローカルクロック信号12の立ち上りエッジからクリティカルデータを送信してよい。キューからのクリティカルデータの送信との干渉を阻止すべく、ポートの他のすべてのキューは、ローカルクロック信号の立ち上がりエッジの前に開始する予め定められた期間、送信をブロックされてよい。ガードバンドと称されるこの予め定められた期間が図示されている。上記ブロックにより、ローカルクロック信号12の立ち上がりエッジの発生時、ポートはアイドルであること、およびクリティカルデータの送信が干渉なく行われることが保証される。
【0037】
線形回路網(例えば、一連に接続された複数のネットワークデバイスを有するネットワーク)またはリングネットワーク(例えば、リング状に接続された複数のネットワークデバイスを有するネットワーク)において、および拡張期間にわたり、複数のネットワークデバイスのローカルクロックはグローバルクロックと同期されなくなってよい。線形回路網の一例が図2に示されている。リングネットワークの一例が図10に示されている。例えば、ローカルクロックの立ち上がりエッジおよび/または立ち下りエッジは、グローバルクロックの立ち上がりエッジおよび立ち下りエッジとの差分時間において発生してよい。ローカルクロックは、グローバルクロックに対して、それぞれの時間遅延(または位相差)を有してよい。時間遅延は、経時的に変化および/または増加してよい。複数のネットワークデバイスの各々はそれぞれのローカルオシレータを有してよい。ローカルオシレータの製造誤差、ローカルオシレータおよび/またはネットワークデバイスにおける動作温度における誤差および/またはジッタに起因して、ローカルオシレータによって生成されたローカルクロック信号はグローバルクロック信号と非同期になる可能性があり、および/または位相における誤差は変化および/または増加する可能性がある。これら誤差は経時的に累積する可能性がある。以下に開示される例では、グローバルクロックおよびローカルクロック間の同期および/または位相差を維持する。ネットワークデバイスの複数のポートのローカルクロック信号をグローバルクロック信号へロックするための複数の例が提供される。グローバルクロックとローカルクロックとの間のPPM差に対応すべく、ローカルクロック周波数を調整するタイミングモジュール(またはタイムアプリケーションインタフェース(TAI))が提供される。ローカルクロック周波数は、予め定められたインクリメント(例えば、ピコ秒インクリメントまたは他のインクリメント)で調整されてよい。
【0038】
開示された例はまた、グローバルクロックに対して、および/またはグローバルクロックに基づいてネットワークデバイス(またはステーション)遅延を判断し、並びにローカルクロックに対して、および/またはローカルクロックに基づいてポート遅延を判断する。複数のネットワークデバイスの各々は、複数のスケジュールされたポート送信時間、複数の継続期間および/または複数の遅延を含むテーブルを有してよい。テーブルは複数のポート状態およびそれぞれの遅延を識別してよい。一実施形態において、テーブルは複数の継続期間を含まずに、複数の連続的な相対遅延を含む。各ポートは異なる遅延期間を有してよい。例示的なポート遅延期間が後述の式1によって表される。各遅延期間とは、次の連続する(または第2の)ポートで特定の動作を実行するまでの、グローバルクロック信号からのそれぞれの遅延量および/または第1のポートの特定の動作からのそれぞれの遅延を指してよく、および/またはそれらに基づいてよい。特定の動作とは、各ポートの複数のキュー状態を含む対応するQbvテーブルの複数のエントリの循環を再設定および/または再開することであってよい。各遅延期間とは、第1のポートのアクティベーションおよび/または初期化と、次の連続するポートのアクティベーションおよび/または初期化との間の遅延を指してよく、および/またはそれに基づいてよい。代替的に、各遅延期間とは、(i)第1のポートがデータの送信を開始または終了するときと、(ii)次の(または第2の)連続するポートがデータの送信を開始するときとの間の遅延量を指してよく、および/またはそれに基づいてよい。これにより、(i)ポートの遅延および/またはポート内の複数のキューの状態の継続期間を変更することなく、ローカルクロックが独立して調整されること、および(ii)すべてのポートのタイミングが、グローバルクロックに対して直接的または間接的に調整されること、を可能にする。ローカルクロックの周波数は、任意の恣意的な周波数に調整可能である。
【0039】
上記例はさらに、ソフトブロックが非クリティカルデータ(すなわち、最優先ではないデータ)のためにガードバンド期間を利用することを可能にする。ハードブロックとは、最優先ではないすべてのキューをガードバンドの少なくとも一部の間ブロックして、最優先キュー(すなわち、ガードバンドの終端にある、データを送信するようスケジュールされた次のキュー)からのデータ送信を可能にすることを指す。ソフトブロックには、フレームおよび/またはパケットのサイズを判断すること、クリティカルデータの送信前にフレームおよび/またはパケットを送信するための残り時間が十分あるかを判断すること、およびクリティカルデータの送信前にフレームおよび/またはパケットの送信を許可することが含まれる。クリティカルデータは、例えばクラスAデータまたは他のデータを含んでよい。クラスAデータとは、GEの最優先レベルを持つデータを指してよい。フレーム若しくはパケットが大きすぎる場合、および/またはフレーム若しくはパケットがクリティカルデータのスケジュールされた送信の前に送信できない場合、フレームおよび/またはパケットはブロックされる。例えば、ガードバンドおよび/またはガードバンドの残りの部分の長さが、フレームおよび/またはパケットを送信するために必要な長さ未満の場合、フレームおよび/またはパケットはブロックされる。この判断は、フレームおよび/またはパケットのサイズ(すなわちバイト数)並びにガードバンドのバイト単位のサイズ(すなわち長さ)に基づいてなされてよい。
【0040】
サイズに基づいてソフトブロックを実行することによって、純粋に時間に基づくアプローチよりも、より正確で信頼性のある技術がもたらされる。例えば、フレームおよび/またはパケットを送信すべかを判断する場合、送信時間はナノ秒で判断されてよい。フレームおよび/またはパケットの送信は、ガードバンド間隔の残りの部分より1ナノ秒未満短くまたは長くてよい。結果的に、フレームおよび/またはパケットがガードバンド間隔の残りの部分より短い場合、フレームおよび/またはパケットは過度にブロックされ、または他のデータの送信中に誤って送信される可能性がある。
【0041】
図2には、非恣意的ネットワーク150が示されている。非恣意的ネットワーク150は線形回路網であり、1または複数のトーカ(トーカ152、154、156の3つが示されている)、1または複数のブリッジ(ブリッジ158、160の2つが示されている)およびリスナ162を含む。トーカ152、154、156は、トーカがデータをリスナ162に送信するので、ソースと称されてよい。リスナ162は、リスナ162がデータをトーカ152、154、156から受信するので、レシーバと称されてよい。トーカ152、154、156およびブリッジ158、160の各々は、それぞれエグレスモジュール164、166、168、170、172を含んでよい。ブリッジ158、160は、正確なタイミングプロトコル(PTP)を規定するIEEE802.1 ASを満たしてよい。ブリッジ158、160は、エンドステーション(例えば、トーカ152、154、156およびリスナ162)間に、複数のネットワークデバイスで構成されるデイジーチェーンを提供する。エグレスモジュール164、166、168、170、172の各々は、それぞれシェーパ174、176、178、180、182および/またはタイミングモジュール184、186、188、190、192を含んでよい。
【0042】
シェーパ174、176、178、180、182はブロックシェーパを含んでよい。ブロックシェーパは、時間非認識ブロックシェーパおよび時間認識ブロックシェーパ(TABS)を含んでよい。時間非認識ブロックシェーパおよび時間認識ブロックシェーパの例が図5〜6および図8〜9に示されている。時間認識ブロックシェーパはグランドマスタクロック200によって生成されるグローバルクロック信号に基づいて動作する。グランドマスタクロック200は、ネットワーク150の複数のネットワークデバイスのうちの任意のものに配置されてよい。グローバルクロック信号はネットワーク150内の複数のネットワークデバイスのうちの任意のものと共有されてよい。一例として、グランドマスタクロック200が第2のトーカ154内に示されているが、グランドマスタクロック200は他のトーカ152、156のうちの1つ、ブリッジ158、160のうちの1つ、リスナ162またはネットワーク150に接続された他のネットワークデバイスに配置されてよい。
【0043】
時間認識ブロックシェーパは、非最優先度のデータ(例えば、非クラスAデータまたはクラスBデータおよび/または非AVBデータ)の送信開始を遅延させてよい。この遅延は、最優先度のデータ(例えば、クラスAデータ)の送信タイミングに基づいて実行されてよい。クラスAおよび非クラスAデータの送信タイミングは、優先度タイミング信号またはキュー状態出力信号を生成し得るタイミングモジュール184、186、188、190、192によって提供されてよい。各優先度タイミング信号および/またはキュー状態出力信号は、対応するデータの送信が許可され、または許可されないウィンドウを示してよい。非クラスAデータ(またはクラスBデータおよび/または保護されていないデータ)に対し生成された優先度タイミング信号および/またはキュー状態出力信号は、各周期的な送信時間間隔の中で割り当てられた期間に基づいて生成されてよい。最優先度のデータ(クラスAデータ)が割り当てられた期間の各々の中で送信される。これにより、クラスAバーストが他のデータ(非最優先度のデータ)の送信によって干渉されないように、エグレスモジュールの出力がアイドルであることを保証する。
【0044】
グランドマスタクロック200を含むネットワークデバイスまたはネットワーク150内の他の複数のネットワークデバイスのうちの1つは、時間管理モジュール202を含んでよい。グランドマスタクロック200および/または時間管理モジュール202を有するネットワークデバイスは、マスタデバイスと称されてよい。グランドマスタクロック200および/または時間管理モジュール202を有さないデバイスは、スレーブデバイスと称されてよい。時間管理モジュール202は、グランドマスタクロック200および/または時間間隔モジュール204を含んでよい。時間間隔モジュール204は、周期的な送信時間間隔(すなわち、周期的な送信時間間隔の継続期間)および複数の周期的な送信時間間隔の各々の開始時間tを設定してよい。グローバルクロック信号、周期的な送信時間間隔、および複数の周期的な送信時間間隔の開始時間tは、管理情報ベース(MIB)モジュールおよび/または簡易管理ネットワークプロトコル(SMNP)を使用して、複数のネットワークデバイス間で共有されてよい。
【0045】
トーカ(例えば、トーカ152)に最も近接するブリッジ(例えば、ブリッジ158)が時間変換デバイスとして実行されてよい。時間変換デバイスは、時間認識ブロックシェーパを有さないトーカと、時間認識ブロックシェーパを有するブリッジとの間に組み込まれてよい。ブリッジは単一の入力ポートおよび単一の出力ポートを有してよく、またはブリッジの複数のポートのうちの2つが、ブリッジの他の複数のポートが無効にされている間、有効にされてよい。ブリッジのエグレスモジュールはこれらポートを有効および無効にしてよい。これはポートテーブルの内容に基づいてよく、その場合、本明細書で開示される通り、ポートテーブルは対応する複数の遅延を持つ複数のエントリを含む。時間変換デバイスとして動作する間、ブリッジは有効にされた単一の入力ポートおよび有効にされた単一の出力ポートを有する。また、時間変換デバイスとして動作する間(時間変換モードで動作中と称される)、ブリッジは非クラスAフレームの時間認識ブロックを実行し、クラスAフレームおよび/または非クラスAフレームの送信タイミングを調整する。
【0046】
リスナ162は、ブリッジ158、160を介してトーカ152、154、156からデータを受信する。リスナ162は、リスナ制御モジュール210を含んでよい。リスナ制御モジュール210は、トーカ152、154、156から受信されるデータに基づいて動作してよく、および/または、それらに基づいて1または複数のセンサ、モータ、アクチュエータ、若しくはネットワークの他のデバイスをモニタリング若しくは動作させてよい。
【0047】
トーカ152、154、156、ブリッジ158、160および/またはリスナ162は、有線若しくは無線接続および/または媒体を介して互いに通信してよい。無線接続および/または媒体は、例えばIEEE規格802.11、802.11a、802.11b、802.11g、802.11h、802.11n、802.16および802.20を満たしてよい。
【0048】
図3には、図2のネットワークのトーカ152、154、156(220と指定)のうちの1つの例が示されている。トーカ220は、ホスト制御モジュール222およびインタフェースモジュール224を含む。ホスト制御モジュール222は、例えばプロセッサを含んでよく、インタフェースモジュール224に対し、異なる優先レベルのデータを提供してよい。データはクラスAデータ、クラスBデータ、および非AVBデータを含んでよい。インタフェースモジュール224は、例えばネットワークインタフェースカードまたは他の好適なインタフェースであってよい。インタフェースモジュール224は、トーカイングレスモジュール226およびトーカエグレスモジュール228を含む。
【0049】
トーカイングレスモジュール226は、例えばトーカ解析モジュール230およびトーカメモリ232を含んでよい。トーカ解析モジュール230は、ホスト制御モジュール222からデータのパケット234を受信し、パケット234を解析し、パケット234の複数のフレーム内に提供された複数のヘッダーに基づいて複数の記述子236を生成してよい。複数のヘッダーおよび/または記述子236の各々は、対応するパケットおよび/またはフレームのサイズ、周期的な送信時間間隔の開始時間、周期的な送信時間間隔の長さ、並びに/またはソースアドレスおよび/またはデスティネーションアドレスを含んでよい。受信された各パケットは、予め定められたデータフレーム数を含んでよい。複数のパケット234および複数の記述子236は、トーカメモリ232内に格納されてよく、記述子信号の中でトーカエグレスモジュール228に提供されてよい。
【0050】
トーカエグレスモジュール228は、トーカシェーパ240(例えば、図2のトーカシェーパ174、176、178)およびトーカタイミングモジュール242(例えば、図2のトーカタイミングモジュール184、186、188のうちの1つ)を含む。トーカシェーパ240は、トーカタイミングモジュール242からの優先度タイミング信号および/またはキュー状態出力信号に基づいて動作する。トーカイングレスモジュール226および/またはトーカエグレスモジュール228は、メディアアクセス制御(MAC)を含んでよい。
【0051】
図4に、図2のブリッジ158、160(250と指定)のうちの一例が示されている。ブリッジ250は、入力ポート1〜N、ブリッジイングレスモジュール252、ブリッジエグレスモジュール254および出力ポート1〜Mを含む。ポートN、Mは入力ポートおよび出力ポートとして表示されているが、ポートN、Mの各々は入力ポートおよび/または出力ポートとして実行されてよい。また、ポートN、Mの各々は、ブリッジイングレスモジュール252および/またはブリッジエグレスモジュール254に接続されてよい。また、ブリッジ250は任意の数の入力ポートおよび出力ポートを含んでよい。
【0052】
ブリッジイングレスモジュール252は、ブリッジ解析モジュール256およびブリッジメモリ258を含む。ブリッジ解析モジュール256は、トーカ、ブリッジ、および/または時間変換デバイスからデータを受信してよい。ブリッジ解析モジュール256は、受信されたパケット260を解析し、パケット260の複数のフレーム内に提供される複数のヘッダーに基づいて複数の記述子262を生成してよい。複数の記述子262の各々は、対応するパケットおよび/またはフレームのサイズ、周期的な送信時間間隔の開始時間、周期的な送信時間間隔の長さ、並びに/またはソースアドレスおよび/またはデスティネーションアドレスを含んでよい。受信された各パケットは、予め定められたデータフレーム数を含んでよい。複数のパケット260および複数の記述子262は、ブリッジメモリ258内に格納されてよく、記述子信号の中でブリッジエグレスモジュール254に提供されてよい。ブリッジエグレスモジュール254は、ブリッジシェーパ264(例えば、図2のブリッジシェーパ180、182)およびブリッジタイミングモジュール266(例えば、図2のブリッジタイミングモジュール190、192のうちの1つ)を含む。ブリッジシェーパ264は、ブリッジタイミングモジュール266からの優先度タイミング信号および/またはキュー状態出力信号に基づいて動作する。ブリッジイングレスモジュール252および/またはブリッジエグレスモジュール254はMACを含んでよい。
【0053】
図5に、ネットワークデバイス270が示されている。ネットワークデバイス270は、イングレスモジュール272を持つデータブロックシステム271、およびエグレスネットワーク276を持つエグレスモジュール274を含む。図2のネットワーク150のトーカ152、154、156およびブリッジ158、160の各々は、ネットワークデバイス270と置換されてよく、並びに/またはイングレスモジュール272および/またはエグレスモジュール274を含んでよい。ネットワークデバイス270はトーカ、ブリッジおよび時間変換デバイスとして動作してよく、それ故、トーカモード、ブリッジモード、および時間変換モードを有する。
【0054】
イングレスモジュール272は、トーカ、ブリッジ、および/または時間変換デバイスのホスト制御モジュールから、データフレーム(以下、フレームと言う)を受信する。イングレスモジュール272はフレームを解析し、フレームをエグレスモジュール274のそれぞれキューに提供する。エグレスネットワーク276は、単一の出力ポート(例えば、図4の複数の出力ポートMのうちの1つ)に関連付けられてよい。エグレスモジュール274は、他の複数の出力ポートに対し、類似するエグレスネットワークを含んでよい。エグレスネットワーク276は、それぞれの優先度レベルを有するキュー1〜Xを含む。エグレスネットワーク276は、各優先レベルに対し、任意の数のキューを含んでよい。一例として、エグレスモジュール274は、クラスAデータを受信する1または複数のクラスAキュー278、クラスBデータを受信する1または複数のクラスBキュー280、および非AVBデータを受信する1または複数の非AVBキュー282を含んでよい。キュー1‐Xの各々はレジスタとして実行され、それぞれの優先度レベルのフレームを格納してよい。エグレスモジュール274は、対応するポートのQbvキューテーブル内の複数のエントリを循環してよい。当該複数のエントリは、さらに詳細に後述される通り、複数のキュー状態並びにそれぞれの継続期間および/または遅延を含んでよい。
【0055】
エグレスネットワーク276はまた、タイミングモジュール290、時間非認識ブロックシェーパ294(図5にブロックシェーパfとして示される)、時間認識ブロックシェーパ296(TABS、図5にブロックシェーパfとして示される)、選択モジュール298、アクティベーションモジュール300、および第1のマルチプレクサ302を含む。時間非認識ブロックシェーパ294および時間認識ブロックシェーパ296は、個別にブロックシェーパ、および/またはまとめて複数のブロックシェーパと称されてよい。複数のブロックシェーパ294、296の各々はシェーパモジュールと称されてよい。
【0056】
タイミングモジュール290は、グローバルクロック信号293に基づいてローカルクロック信号291を生成するローカルクロックジェネレータ292を含む。タイミングモジュール290はまた、複数の時間認識ブロックシェーパ296の各々に提供される複数のキューゲート出力信号295を生成してよい。複数のキューゲート出力信号295の各々は、データがキューから通過することが許可されるか、またはキューがブロックされるかを示すキュー状態ビットを提供する。これは、時間窓(または継続期間)および/または遅延期間に基づいてよく、そこにおいて、複数の時間認識ブロックシェーパ296は、データの通過を許可するか、または対応するキューについて、データが選択モジュール298によって選択されることをブロックするかのいずれかを行う。時間窓、継続期間および/または遅延はテーブル内に格納されてよく、その一例が図8に示されている。複数の時間認識ブロックシェーパ296のために生成される複数のキューゲート出力信号295は、時間認識ブロックシェーパ296がクラスAキュー、クラスBキューおよび非AVBキュー内のデータをいつブロックするかを示してよい。複数の時間認識ブロックシェーパ296は、それぞれのキューゲート出力信号295を受信する。
【0057】
ネットワークデバイス270は任意の数のブロックシェーパを含んでよい。ブロックシェーパの数は、クラスAキューの数、クラスBキューの数および非AVBキューの数に依存してよい。複数のブロックシェーパおよび対応する送信パスは、より低い優先レベルを持つ他の送信パスからの干渉が阻止されるので、最も低いレイテンシレベルを提供する。
【0058】
複数の時間認識ブロックシェーパ296を使用して、データが、例えばトーカおよび/または時間変換デバイスから適切な時間において送信されることを保証してよい。トーカモードで動作する場合、ネットワークデバイス270は、クラスAバーストの前に、クラスAキュー278内のクラスAフレームを読み込んでよい。クラスAバーストは、クラスAキュー278からのクラスAフレームを転送すること、周期的な送信時間間隔内の予め定められた期間にわたり、ネットワークデバイス270からクラスAフレームを送信することを含む。時間認識ブロックシェーパ296は、クラスAバーストの開始時を制御し、さらにクラスAバーストの間、クラスAフレームの送信タイミングを制御する。クラスAバーストの間、複数の時間認識ブロックシェーパ296は非クラスAフレーム(例えば、クラスBフレームまたは非AVBデータ)の送信をブロックし、非クラスAキューをアイドル状態にする。
【0059】
クラスAキュー278およびクラスBキュー280はそれぞれ、対応する時間非認識ブロックシェーパ(例えば、複数の時間非認識ブロックシェーパ294のうちの1つ)を有してよい。クラスAキュー278、クラスBキュー280および非AVBキュー282はそれぞれ対応する時間認識ブロックシェーパ(例えば、複数の時間認識ブロックシェーパ296のうちの1つ)を有してよい。複数の時間非認識ブロックシェーパ294はブロックシェーパ296および時間認識ブロックシェーパ296のそれぞれと直列で接続される。複数の時間非認識ブロックシェーパ294は、フレーム送信をペース調整するために使用され、IEEE802.1 Qavを満たしてよい。複数の時間認識ブロックシェーパ296は、クラスAキュー278、クラスBキュー280、非AVBキュー282の1または複数の他のフレームの送信期間中に、クラスAキュー278、クラスBキュー280の特定のものにあるフレーム並びに非AVBキュー282内にあるフレームを選択モジュール298が選択することをブロックする。これにより、フレームの干渉を阻止し、レイテンシを最小化する。
【0060】
複数の時間非認識ブロックシェーパ294は、選択モジュール298に対しブロックシェーパ296と並行して動作してよい。例えば、クラスAデータは、複数のブロックシェーパ296のうちの1つおよび複数の時間非認識ブロックシェーパ294のうちの対応する1つに基づいて、クラスAキュー278から第1のマルチプレクサ302へ渡されてよい。クラスBデータは、複数の時間非認識ブロックシェーパ294および複数の時間認識ブロックシェーパ296のうちの対応するものに基づいて、クラスBキュー280から第1のマルチプレクサ302へ渡されてよい。
【0061】
キュー1‐Xおよびブロックシェーパ294、296の各々は、関連付けられた送信パスを有する。各送信パスは、キュー1‐Xのうちのそれぞれを含み、ブロックシェーパ294、296のうちの1または複数を含んでよい。ブロックシェーパ294、296は、それぞれのブロック信号を生成する。ブロック信号は選択モジュール298によって受信され、ブロック信号はフレームが対応するキューに存在するとき、およびフレームが第1のマルチプレクサ302に転送準備ができているときを示す。
【0062】
フレームはキューに存在してよく、対応するブロック信号はキュー内にフレームが存在しないこと、および/またはフレームが選択される準備がなされていないことを示してよい。ブロック信号は、対応するキューゲート出力信号に基づいて、フレームが存在しないこと、および/またはフレームが送信される準備がなされていないことを示してよい。これにより、不適切な時点におけるフレームの送信をブロックする。一例として、複数の時間認識ブロックシェーパ296のうちの1つは、クラスBフレームがクラスBキュー280内に存在するとき、ブロック信号を生成してよい。ブロック信号は、クラスBフレームがクラスBキュー280内に存在しないことを示してよく、それによって、例えばクラスAフレームの送信期間前および/または送信期間中に、選択モジュール298がクラスBフレームを選択することをブロックする。これにより、クラスAフレームとの送信干渉を阻止する。
【0063】
選択モジュール298は、キュー1‐Xからフレームを選択するために、第1のマルチプレクサ302によって受信される選択信号を生成する。選択モジュール298は、厳格なスタイルセレクタであってよい。厳格なスタイルセレクタは、送信されるべきフレームを有する最優先レベルキュー内にあるすべてのフレームを許可した後、次の最優先レベルキューからのフレーム送信を許可する。これは、フレームがキュー内に存在するかどうかを判断することを含み、厳格なセレクタが直接的にキューの状態をモニタリングする際に起こる。
【0064】
以下の実装においては、選択モジュール298がキュー1‐Xの状態を直接モニタリングする代わりに、選択モジュール298は、ブロックシェーパ294、296から受信されるブロック信号をモニタリングする。選択モジュール298はその後、ブロック信号に基づいて、キューからのフレームの通過を許可するための選択信号を生成する。ブロックシェーパ294、296は、選択モジュール298に、キュー1‐X内に存在するフレームを直接「見せる」ことを阻止する。
【0065】
アクティベーションモジュール300は、ネットワークデバイス270の動作モードに基づいて、ブロックシェーパ294、296を有効化および無効化する。例えば、トーカモードおよび/または時間変換モードでの動作時、1または複数のブロックシェーパ294、296は無効化されてよい。クラスAフレームのレイテンシを低減すべく、複数の時間非認識ブロックシェーパ294は無効化されてよい。残りの時間認識ブロックシェーパ296のうちの1または複数は有効化されてよい。一実装において、複数の時間認識ブロックシェーパ296は無効化される。別の例として、ブリッジモードでの動作時、ブロックシェーパ294、296のうちの1または複数は有効化されてよい。
【0066】
別の例として、ネットワークデバイス270がプロオーディオ環境で使用される場合、複数の時間非認識ブロックシェーパ294が有効化されてよい。さらなる別の例として、自動車用環境においてクラスAフレームが送信される場合、複数の時間非認識ブロックシェーパ294は無効化されてよく、複数のブロックシェーパ296のうちの1つが無効化されてよい。これにより、クラスAフレームのレイテンシを低減し、さらに予め定められた帯域幅要件および最大フレームレイテンシ要件を満たすことを可能にする。
【0067】
時間変換モードでの動作時、ネットワークデバイス270はトーカの出力に接続されてよい。ネットワークデバイス270は時間変換デバイスとして構成されてよく、時間非認識トーカの出力において組み込まれてよく、クラスAフレームのブロックを阻止し、クラスAフレームの送信タイミングを調整してよい。ネットワークデバイス270は、他の複数のポートを無効化しつつ、単一の入力ポートおよび単一の出力ポートを有効化してよい。これは、トーカが複数の時間認識ブロックシェーパを含まない場合に実行されてよく、クラスAフレームが適切な時間に送信されることを保証する。適切な時間にクラスAフレームを送信することは、ローカルクロック信号291の周期的な送信時間間隔の予め定められた開始時間tにおけるクラスAフレームの送信、および周期的な送信時間間隔の予め定められたクラスAバーストウィンドウ中の適切な時間にクラスAフレームの送信を開始することを含む。
【0068】
エグレスモジュール274はまた、カットスルーモードで動作してよく、カットスルーモジュール310および第2のマルチプレクサ312を含んでよい。カットスルーモジュール310および第2のマルチプレクサ312を使用して、最優先度のフレーム(例えば、クラスAフレーム)のレイテンシをさらに最小化する。カットスルーモジュール310はローカルクロック信号291を受信すること、およびローカルクロック信号291に基づいて動作することによって、時間を認識してよい。カットスルーモジュール310は、時間認識カットスルーシェーパ(TACS)と称されてよい。
【0069】
カットスルーモジュール310は、ネットワークデバイス270の出力314(例えば、出力ポート)におけるアクティビティをモニタリングし、クラスAフレームまたは他のフレームが、対応するキュー、対応するブロックシェーパおよび/または時間非認識ブロックシェーパ、並びに第1のマルチプレクサ302をバイパスして、イングレスモジュール272から第2のマルチプレクサ312へ渡されることを許可する。カットスルーモジュール310は、イングレスモジュール272でのフレーム全体および/またはパケット全体の受信の前に、第2のマルチプレクサ312からフレームの一部および/またはパケットの一部を送信することを許可してよい。図示の通り、出力314におけるアクティビティは直接モニタリングされてよく、またはカットスルーモジュール310は選択モジュール298および/またはエグレスモジュール274によって生成されるラインアクティビティ信号を受信してよい。ラインアクティビティ信号は、出力においてデータ送信アクティビティがあるかどうかを示してよい。
【0070】
カットスルーモジュール310は、第1のマルチプレクサ302の出力315およびイングレスモジュール272のデータ出力316のうちの1つを選択するための第2の選択信号を生成する。第2のマルチプレクサ312は第2の選択信号を受信し、第2の選択信号に基づいて、出力315または出力316のいずれかからのクラスAフレーム(または他のフレーム)を転送する。出力316からのクラスAフレームの送信は、タイプ3データ送信と称されてよい。
【0071】
カットスルーモジュール310によって実行されるバイパスは、イングレスモジュール272が送信されるパケットのすべてのフレームを受信する前および/または1フレームのすべてのビットを受信する前に行われてよい。予め定められたバイト数(例えば、64バイト)のデータがイングレスモジュールによって受信済みの後、当該バイトはイングレスモジュール272から第2のマルチプレクサ312へ渡されてよい。予め定められたバイト数は、例えば、ヘッダデータと関連付けられてよい。ヘッダデータはソースアドレスおよびターゲットアドレス、フレームサイズ、データタイプ、並びに/または他のパケットおよび/またはフレーム情報を含んでよい。
【0072】
複数の時間認識ブロックシェーパ296はクラスAバースト中、非クラスAのデータフレームをブロックするので、出力314はアイドルであり、クラスAフレームは、第2のマルチプレクサ312を介して出力314に直接渡されてよい。これにより、クラスAキュー278および対応するブロックシェーパ内にフレームを格納することに関連するレイテンシを除去する。
【0073】
カットスルーモジュール310が有効にされ、クラスAフレームをバイパスするために使用される場合、ブリッジのクラスAフレームの最大レイテンシは、ブリッジの時間遅延tBridgeにカットスルーポイント(例えば、第2のマルチプレクサ)に関連する時間遅延tCutをプラスし、ケーブル最大送信時間tCableをプラスしたものに等しい。一例として、2つのスロット時間(または1.024μs)のブリッジ遅延および1つのスロット時間(0.512μs)のカットスルー遅延時間を合わせると、最大ケーブル送信時間tCableが0.538μsの場合、最大レイテンシは2.074μsであってよい。このレイテンシは送信されるクラスAフレームのサイズに関わらず規定される。というのは、すべてのクラスAビットがブリッジによって受信される前に、クラスAビットはブリッジから送信され、および/またはクラスAビットはイングレスモジュール272から出力されるからである。タイプ3送信に関連するレイテンシは、タイプ1(例えば、13.898μs)およびタイプ2(例えば、4.122μs)送信に関連するレイテンシ未満である。
【0074】
カットスルーモジュール310は、クラスAフレームをクラスAキューに提供する代わりに、イングレスモジュール272に対し、クラスAフレームを第2のマルチプレクサ312にバイパスするようシグナリングしてよい。図示の通り、カットスルーモジュール310はエグレスモジュール274内に存在する代わりに、イングレスモジュール272に組み込まれてよい。
【0075】
ここでまた図6を参照すると、時間非認識ブロックシェーパ320が示されている。時間非認識ブロックシェーパ320は、図5の複数の時間非認識ブロックシェーパ294のうちの任意の1つに置き換わってよい。時間非認識ブロックシェーパ320は、グローバルクロック信号に基づいて動作しなくてよい。一実施形態において、時間非認識ブロックシェーパ320は、ローカルクロック321に基づいて動作する。ローカルクロック321は、グローバルクロック信号と独立したクロック信号を生成してよい。クロック信号はまた、図5のローカルクロックジェネレータ292によって生成されるローカルクロック信号とは独立であってよい。時間非認識ブロックシェーパ320は送信前にデータフレームを拡散し、選択モジュール298に、保護されたデータを持つキュー278、280内のフレームを「見せる」することを阻止する。これには、シーケンシャルなデータフレームの各ペア間にIFGを提供することが含まれる。
【0076】
時間非認識ブロックシェーパ320は、第1のカウンタ322およびキューモニタリングモジュール324を含む。第1のカウンタ322は、モニタリングされるキュー326(例えば、キュー278、280のうちの1つ)のクレジットをカウントする。キューモニタリングモジュール324は、キュー326内にフレームが存在するかどうかをモニタリングし、フレームがキュー326内に存在し、それがキュー326から第1のマルチプレクサ302へ渡されることが許可されない場合、第1のカウンタ322をインクリメントする。キューモニタリングモジュール324は、フレームが第1のマルチプレクサ302に渡される場合、第1のカウンタ322をデクリメントする。第1のカウンタ322は、キュー326に関連する第1のカウントを最大化する上限値を有してよい。第1のカウンタ322はまた、キュー326に関連する第1のカウントを最小化する下限値を有してよい。
【0077】
ここでまた図7を参照すると、時間非認識ブロックシェーパ320の経時的なカウント値を示すグラフ330が示されている。フレームがキューから第1のマルチプレクサ302に渡されることが許可されないときの第1のカウントのインクリメントは、第1の線分332によって表わされている。フレームは干渉に起因して、通過を許可されなくてよい(すなわち、送信される1または複数の他のキュー1‐X内のフレーム)。その後、第1のカウントは上限値334に到達し、現在のカウント値で維持される。その後、フレームは第1のマルチプレクサ302へ渡されることが許可され、第1のカウントが第1の垂線336によって表されるようにデクリメントされる。その後、第1のカウントは、フレームがキュー326から第1のマルチプレクサ302に渡されないとき、線分338によって表される通り、再度インクリメントされる。
【0078】
キュー内にフレームが存在しない場合、第1のカウントは線分340によって表わされる通り、ゼロにリセットされてよい。フレームがキュー326内に到着し、第1のカウントがゼロになった後に送信され、干渉が存在しない場合、第1のカウントは下限値342にデクリメントされてよい。キュー内に送信するためのフレームが存在しない場合、カウントは線分344によって表される通り、ゼロに増加されてよい。上記のインクリメントおよびデクリメントはローカルクロック321、予め定められた時間間隔、および/またはライン状態信号(346と指定)に基づいてよい。
【0079】
ライン状態信号346は、データがエグレスモジュール274から送信されているかどうかを示してよい。ライン状態信号346は、第1のマルチプレクサ302の出力、第2のマルチプレクサ312の出力を示してよく、並びに/または、選択モジュール298および/またはエグレスモジュール274によって生成されてよい。
【0080】
キューモニタリングモジュール324は、第1のカウンタ322の第1のカウント値に基づいて、第1のブロック信号350を生成する。第1のブロック信号350は、イングレスモジュール272からの記述子信号352に基づいて生成されてよい。記述子信号352は、キュー326内にフレームが存在するとき、およびそのフレームのサイズ(または行頭(head‐of‐line)フレーム)を示してよい。データがキュー326から、キューモニタリングモジュール324を通って、対応する時間認識ブロックシェーパ(354と指定)に渡された後、第1のマルチプレクサ302へ渡される。
【0081】
図5および図8を参照すると、タイミングモジュール290、メモリ360、および時間認識ブロックシェーパ380が示されている。図8中、タイミングモジュール290は単一の時間認識ブロックシェーパに対し示されているが、タイミングモジュール290は任意の数の時間認識ブロックシェーパに対し動作し、および/または信号を提供してよい。タイミングモジュール290は、ローカルクロックジェネレータ292、カウンタモジュール362およびキューゲートモジュール364を含む。カウンタモジュール362はローカルクロック信号291をモニタリングする。またカウンタモジュール362はキューゲートモジュール364の出力をモニタリングして、次のスケジュールされたキューについて、1または複数のガードバンドのサイズおよび/または残りの継続期間を判断してよい。サイズおよび/または残りの継続期間は時間(例えば、ナノ秒またはピコ秒)で判断されてよく、並びに/または、例えば、ビットおよび/またはバイトで判断されてよい。一実施形態において、サイズおよび/または残りの継続期間は時間で判断され、その後、ビット数および/またはバイト数に変換される。カウンタモジュール362は、サイズおよび/または残りの継続期間を示すためのソフトブロック信号SizeSBを出力する。キューゲートモジュール364は、上記の通り、キューゲート出力信号を生成する。キューゲート出力信号は、ローカルクロック信号291および、メモリ360内に格納された複数のテーブル366のうちの1つであるキューテーブル内の情報に基づいて生成されてよい。キューテーブルは、Qbvテーブルと称されてよい。情報は、複数のキューの状態並びにポートの複数のキューの各々のための対応する複数の継続期間および/または複数の遅延を含んでよい。ポートは、キューテーブル内に示された順序で複数のキューを循環してよい。後にさらに詳細に説明される通り、テーブルはまた、ネットワークデバイスのポートの一覧を含むポートテーブルを含んでよい。上記の通り、ポートテーブルは、ネットワークデバイスの複数のポートの状態およびローカルクロック信号に対する、および/または互いに対する、当該ポートのそれぞれの遅延を含んでよい。メモリ360はまた、複数のレジスタ368を含んでよく、複数のレジスタ368は、タイミングモジュール290、時間認識ブロックシェーパ380、および/またはタイミングモジュール290の1または複数のモジュール並びに時間認識ブロックシェーパ380によって使用されるパラメータを格納する。複数のレジスタ368について、以下さらに記載する。
【0082】
時間認識ブロックシェーパ380は、図5の複数の時間認識ブロックシェーパ296のうちの任意の1つに置き換わってよい。クラスAデータが第1のマルチプレクサ302に転送され、および/またはネットワークデバイス270から送信される間、時間認識ブロックシェーパ380は、対応するキュー382(例えば、キュー280、282のうちの1つ)内のデータをブロックする。時間認識ブロックシェーパ380は、第1のロジックモジュール384およびデータ通過モジュール386を含む。
【0083】
ロジックモジュール384は、図5のキューゲート出力信号(388と指定)のうちの1つおよびフレーム信号PK1を受信する。キューゲート出力信号は、メモリ360内に格納されたQbvテーブル内の情報を含んでよい。一実装において、キューゲート出力信号は、対応するキューがQbvテーブルに従い、特定の時点に送信されるようスケジュールされているかを示すキュー状態ビットを含む。フレーム信号PKT1はデータ通過モジュール386によって生成されてよく、キュー382内にフレームが存在するときを示してよい。ロジックモジュール384は、図示の通りANDゲートおよび/または他の好適なロジックデバイスを含んでよい。ANDゲートの入力は、キューゲート出力信号388およびフレーム信号PKT1を受信してよい。ロジックモジュール384は、第1の通過信号PASS1を生成する。
【0084】
データ通過モジュール386は、第2のロジックモジュール400、比較モジュール402およびサイズ判断モジュール404を含む。サイズ判断モジュール404は、記述子信号352に基づいて、次のフレームおよび/またはパケットのサイズを判断する。記述子信号352は、キュー382内の次のフレームおよび/またはパケットのサイズを示してよい。当該サイズは、信号SizeF/Pによって表される。比較モジュール402は、信号SizeSBおよびSizeF/Bを比較し、結果的にもたらされる信号RESを生成する。結果的にもたらされる信号RESは、フレームおよび/またはパケットのサイズが、ソフトブロック信号SizeSBによって示されるサイズより小さいまたはそれに等しいかを示す。結果的にもたらされる信号RESは、フレームおよび/またはパケットが、ガードバンド間隔の間および/またはガードバンド間隔の残りの部分の間に、送信可能であるかを示す。
【0085】
第2のロジックモジュール400は、図示の通り第2のANDゲートおよび/または他の好適なロジックデバイスを含んでよい。第2のANDゲートは、第1の通過信号PASS1および結果的にもたらされる信号RESを受信する入力を含む。第2のANDゲートは、第2の通過信号PASS 2を生成する。データ通過モジュール386は、第2の通過信号PASS2に基づいて、第2のブロック信号394を生成する。データ通過モジュール386は、ローカルクロック信号291、記述子信号352および/またはライン状態信号346に基づいて、第2のブロック信号394を生成してよい。データ通過モジュール402は、行頭フレームのサイズおよび次のクリティカルデータバースト前の残り時間に基づいて、行頭フレームが第1のマルチプライヤ302に渡されることを許可する。行頭フレームとは、キューから第1のマルチプレクサ302に転送されることになる、キュー内の次のフレームを指す。
【0086】
非クラスAキュー280、282内のいずれかにあるデータは、次のクリティカルデータバーストウィンドウの前にブロックされてよい。例えば、非クラスAキューは、次のクラスAバーストウィンドウの前に送信される準備の整った最大行頭フレーム(例えば、1522バイト)を有してよい。クラスAバーストウィンドウの開始前に、行頭フレームが完全に送信できない場合、ブロックシェーパは、行頭フレームの送信をブロック(遅延)してよい。より小さいフレームは、次のクラスAバーストウィンドウの前に送信されてよいので、当該非クラスAキュー内のフレームより少ないバイト(例えば、64バイト)を有するもう一方の非クラスAキュー内にあるフレームはマルチプレクサ315に渡されることが許可されてよい。
【0087】
ここで図1および図9を参照する。図9にはウィンドウロックキングシステム452、メモリ360および複数のポート454を含むネットワークデバイス450が示されている。ネットワークデバイス450は、図5のイングレスモジュール272およびエグレスモジュール274を含んでよく、この場合、エグレスモジュール274に類似するエグレスモジュールが複数のポート454の各々に含まれてよい。ウィンドウロッキングシステム452は、タイミングモジュール290、PTPモジュール456、レジスタモジュール458および調整モジュール460を含む。タイミングモジュール290は、ローカルクロック信号291を生成するローカルクロックジェネレータ292を含む。
【0088】
PTPモジュール456は、グローバルクロック信号293に基づいて、トリガ信号を生成してよい。レジスタモジュール458は、図示の通り、グローバルクロック信号293および/またはトリガ信号に基づいて、ローカルクロック信号291の立ち上りエッジの時間をキャプチャする。一実施形態において、レジスタモジュール458は、グローバルクロック信号293に基づいて、ローカルクロック信号291の立ち上りエッジの時間をキャプチャする。ローカルクロック信号291の立ち上りエッジの時間は、調整モジュール460に提供されてよい。レジスタモジュール458は、立ち上りエッジが検出されたときを示すビットを格納してよい。当該ビットは、複数のレジスタ368のうちの1つ、またはレジスタモジュール458内のイベントキャプチャレジスタ内に格納されてよい。トリガ信号は、立ち上りエッジが発生したとき、および/またはローカルクロック信号291がHIGH状態にあるときを示してよい。調整モジュール460は、ローカルクロック信号291の立ち上りエッジのタイミングを、(i)グローバルクロック信号293のエッジの時間、および(ii)ローカルクロック信号291のエッジの時間に基づいて調整する。
【0089】
レジスタモジュール458はカウンタ469を含んでよく、カウンタ469は(i)グローバルクロック信号293の立ち上りエッジの時間と、(ii)ローカルクロック信号291の立ち上りエッジの時間との間の誤差または差の量を判断するために使用される自走カウンタであってよい。カウンタ469のカウント値は、ローカルクロックの信号291の周波数より速いレートでインクリメントされてよい。カウント値は、誤差を示すための時間に変換されてよく、これは調整モジュール460に転送されてよく、およびローカルクロック信号291のエッジを調整すべく、調整モジュール460によって使用されてよい。
【0090】
図1に示される通り、調整モジュール460は、ウィンドウ(ウィンドウ470、472が示されている)を判断し、そのウィンドウ内でローカルクロック信号291の立ち上りエッジは、グローバルクロック信号293の立ち上りエッジに基づいて発生することが予期される。複数のレジスタ368のうちの1つが、ウィンドウの幅を格納するために使用されてよい。一例として、TrigLockRange(またはロッキングウィンドウ)レジスタが使用されてよく、それは4ビットレジスタであってよい。ローカルクロック信号291を再開または再ロックするために、ロッキングウィンドウレジスタが使用されてよい。調整モジュール460は、ロッキングウィンドウレジスタに関連するウィンドウの開始、終了および/または継続期間を調整してよい。調整モジュール460は、ローカルクロック信号291の立ち上りエッジは、ウィンドウのそれぞれ中心にくるように、グローバルクロック信号293の前の立ち上りエッジに基づいて、ローカルクロック信号291のこれから来る立ち上りエッジの時間を調整する。これには、グローバルクロック信号293のこれから来る立ち上りエッジの判断された時間に対するウィンドウの開始時間および終了時間、ウィンドウの継続期間、ウィンドウの中心、並びに、ローカルクロック信号291の立ち上りエッジへの正および/または負の調整量の判断を含んでよい。結果的に、ローカルクロック信号291をグローバルクロック信号293に対し周波数においてロックすべく、および/またはローカルクロック信号291をグローバルクロック信号293から予め定められた時間量で遅延させるようにロックすべく、ローカルクロック信号291のサイクルの長さは低減および/または増加されてよい。
【0091】
メモリ360はポートテーブルを含む複数のテーブル366を格納してよく、ポートテーブルは複数のポート状態および複数のポート遅延時間を格納する。複数のポート454は、それぞれの複数の遅延時間482および複数のキューテーブル484を格納する、それぞれの複数のメモリ480を含んでよい。
【0092】
ローカルクロック信号291をグローバル(またはグランドマスタ)クロック信号293に対しロックすべく、タイミングモジュール290は、信号271、293を比較してよく、当該比較に基づき、ローカルクロック信号を適切に調整してよい。これは、クロック補正と称され、信号271、293間の誤差の99.9%を訂正してよい。本明細書においては主に信号271、293の立ち上りエッジがモニタリングおよび/または調整されるものと言及されているが、信号271、293の立ち下りエッジがモニタリングおよび/または調整されてよい。ローカルクロック信号291の立ち上がりおよび/または立ち下りエッジは観測可能なので、クロック補正は連続的におよび/または周期的にモニタリングおよび調整可能である。
【0093】
非常に長期間(数日)、長距離にわたり、および/または例えば温度変化に起因して、グローバルおよび/またはローカルクロックがドリフトする状況の場合、ローカルクロック信号291のロックを維持するための追加の訂正が行われる。これは、レジスタモジュール458により、ローカルクロック信号291の立ち上がりエッジが、グローバルクロック信号293の対応する立ち上がりエッジと関連付けられた場所を「見る」ことで実現される。また、ローカルクロック信号291がグローバルクロック信号293と同一のPPMに近接する場合、クロック補正が辛うじて正(ゼロに近接)で、その後負にドリフト(またはその逆)するときは問題が発生する可能性がある。これは可能性がないわけではないので、ローカルクロック信号291の生成中にローカルクロック信号291の立ち上がりエッジを再整列させるために、ウィンドウロックシステム452が提供されている。TrigLockワンショット有効ビットを有する構成レジスタ(例えば、複数のレジスタ368のうちの1つ)およびTrigLockRangeビットが提供される。TrigLockワンショット有効ビットは、ローカルクロック信号291の立ち上りエッジの調整を有効化するときを示す自己クリアビットである。このビットが1に設定されている場合、ローカルクロック信号291の立ち上がりエッジがTrigLockRangeビットによって定義される通り、予め定められた数のPTPクロックサイクルのプラスマイナスで発生する場合およびその場合に限り、ローカルクロック信号291の立ち上がりエッジはTrigGetTimeレジスタ(複数のレジスタ368のうちの1つ)内に含まれる値に調整される。
【0094】
TrigLock Rangeビットによって示される範囲が時間において過去になると、TrigLockワンショット有効ビットは自己クリアする(すなわち、ローカルクロックのローカル時間の一周ごとの1訂正に対し、TrigLockワンショット有効ビットは設定される(またはアクティブである)。例えば、ローカルクロックは、タイミングモジュール290またはローカルクロックジェネレータ292内に含まれ得る32ビットのローカルタイマであってよい。このビットは、訂正が行われたかどうかに関わらずクリアされる。TrigLockワンショット有効ビットおよび対応するTrigLockRangeは、将来のどこかの時点で訂正が行われることを可能にする。一例として、ローカルクロックタイマが一周するのに30秒より多くかかってよい。ローカルクロック信号291の特定の立ち上りエッジが対応するウィンドウ内(すなわち、TrigLockRangeウィンドウ内)である場合、その立ち上がりエッジで訂正が発生してよい。このタイプのウィンドウの例が図1に示されている。TrigLockRangeビットは、プラスマイナスの誤差限界を提供し、その中でローカルクロック信号291の立ち上りエッジが調整される。立ち上りエッジがウィンドウの限界値のプラスマイナスの範囲内に属する場合、ローカルクロック信号291の立ち上りエッジまたはローカルクロック信号291の1または複数の後続の立ち上りエッジは、対応するTrigLockRange(または調整ウィンドウ)内の中心に置かれるように調整される。
【0095】
レジスタ368はまた、状態レジスタを含んでよい。状態レジスタは、読み取り、書き込み、およびリセットビットである、キャプチャトリガビットを含んでよい。キャプチャトリガビットがゼロにクリアされると、レジスタモジュール458はローカルクロック信号291の立ち上りエッジイベントをモニタリングし、イベントキャプチャレジスタ(1ビットレジスタ)内にイベントをキャプチャする。これにより、エッジが経時的にドリフトしないことを保証し、それによって、これから来るエッジが再整列されることを可能にする。
【0096】
構成レジスタは、訂正が発生したかどうかということ、および訂正量をモニタリングするために使用されるロック訂正有効ビットおよびロック訂正量ビットをさらに含んでよい。この情報は、調整モジュール460または評価モジュール490に対し、ローカルクロック信号291のエッジにおけるさらなる調整のために、および/または、ウィンドウロッキングシステム452の性能の評価のためにフィードバックされてよい。
【0097】
訂正が有効でないまたは訂正が発生しなかった場合、ロック訂正有効ビットは0である。訂正が有効であり、訂正が発生した場合、ロック訂正有効ビットは1である。TrigLockワンショット有効ビットが設定され、それにより潜在的なローカルクロック信号調整が有効にされると、ロック訂正有効ビットは0にクリアされる。TrigLockワンショット有効ビットがクリアされると、訂正が発生しており、訂正が有効であれば、ロック訂正有効ビットは1に設定される。ロック訂正量ビットは訂正中に行われた訂正量を示す。TrigLockワンショット有効ビットが1に設定されると、ロック訂正量ビットは0にクリアされる。TrigLockワンショット有効ビットが0にクリアされると、ロック訂正量ビットは、ローカルクロック信号291の立ち上がりエッジに適用された大きさおよび方向を反映する。ロック訂正量ビットが0の場合、調整は必要ではなかった。ロック訂正量ビットのビット3が1の場合、ローカルクロック信号291の立ち上がりエッジは、n個のクロックサイクル分、前の時間に移動された。ここでnはロック訂正量ビットのビット0〜2によって提供される整数である。ビット3が0の場合、ローカルクロック信号291の立ち上がりエッジは、n個のクロックサイクル分、後の時間に移動された。
【0098】
図10は、産業ネットワークまたはコントローラエリアネットワーク等のリングネットワーク490を示す。リングネットワーク490は、1または複数のリング(例えば、リング491、492、493)を含む。複数のリングの各々は、複数のネットワークデバイス(またはステーション)494を含み、複数のネットワークデバイス(またはステーション)494は、複数のリングのうちの対応するものの周囲を、時計回りまたは反時計回りのいずれかの方向で、互いに通信してよい。第1のリング(例えば、リング491)上の複数のネットワークデバイス494の各々は、他のリング(例えば、リング492、493)上の複数のネットワークデバイスのうちの任意のものと通信してよい。データは、ネットワークデバイスからネットワークデバイスへ、ターゲットのネットワークデバイスに到達するまで転送される。特定のネットワークデバイス(例えば、ネットワークデバイス495)は、複数のリング間のゲートウェイとして動作してよく、当該リング間で、リンク496を介して通信してよい。
【0099】
複数のリング上の複数のネットワークデバイスの各々は、グローバル(またはグランドマスタ)クロック信号を受信してよい。複数のネットワークデバイスの各々は、図示の通り、並びに図1〜9および図12〜16に関し記載の通り構成さてよい。複数のネットワークデバイスの各々、当該ネットワークデバイスの複数のチップ、および/または当該ネットワークデバイスの複数のモジュール(例えば、複数のタイミングモジュール、データ通過モジュール、調整モジュール)はまた、そのネットワークデバイスのためのそれぞれのローカルクロック信号の、グローバルクロック信号との対応する遅延を認識してよい。複数のネットワークデバイスの各々、当該ネットワークデバイスの複数のチップ、および/または当該ネットワークデバイスの複数のモジュール(例えば、複数のタイミングモジュール、データ通過モジュール、調整モジュール)はまた、「隣接重み比率」を認識してよく、隣接重み比率とは、グローバルクロック信号と、同一ネットワーク内および/または同一リング上にある他の複数のネットワークデバイスのそれぞれのローカルクロック信号との間の時間遅延を指す。複数のネットワークデバイスの各々、当該ネットワークデバイスの複数のチップ、および/または当該ネットワークデバイスの複数のモジュール(例えば、複数のタイミングモジュール、データ通過モジュール、調整モジュール)は、対応するローカルクロック信号のロックを調整および維持するとき、これらの時間遅延を補正してよい。これは、それぞれのネットワークデバイスのタイミングモジュールを介してなされてよい。
【0100】
一実施形態において、フレームまたはパケットが、同一リング上の複数のネットワークデバイス間で送信されているとき、本明細書に開示されるカットスルー方法が、当該複数のネットワークデバイスおよび/または同一のリング上にある複数の他のネットワークデバイスによって使用され、フレームまたはパケットを効率的に転送してよい。異なる複数のリング上にある複数のネットワークデバイス間でフレームまたはパケットが送信されているとき、ゲートウェイとして実行される対応するネットワークデバイスは、カットスルー方法を使用せずに、フレームまたはパケットを格納および転送してよい。これにより、複数のリング間での送信時に、フレームまたはパケットの送信タイミングのリタイミングが生じる。
【0101】
本明細書に開示の通り、ネットワークデバイスの各ポートは、ローカルクロック信号の立ち上りエッジに対応する独立Port t時間を有する。Port t時間は、そのポートの遅延時間およびグローバルクロック信号に基づいて生成される。各ポートは、対応するPort t時間においてQbvテーブル処理を再開してよい。これは、グローバルクロック信号時間Global tとPort tとの間の時間を定義するポートごとのプログラマブル遅延レジスタによってサポートされる。各ポートのQbvテーブルが使用され、そのポートのどのキューがオープンおよびクローズされるか(送信可能か、またはブロックされるか)、および、そのポートのキューがどのくらいの間オープンおよびクローズされるかを定義する。ポートの各Qbvテーブルは16エントリをサポートしてよく、そこにおいて、各エントリは、キューごとのブロッキングビット、オープンまたはクローズ状態の保持時間、および単一のガードバンドビットを含む。ガードバンドビットは、対応するブロックビットが適用される前に、ポートのQbvガードバンド値が定義された期間に適用される必要があることを示す。これは、テーブルサイズの低減に寄与し、ガードバンド中の小フレーム(またはパケット)送信利用をサポートする。
[ポート間のローカルクロックtをスキューする]
【0102】
Qbvレジスタ空間(例えば、図9のメモリ360内)内のポートごとのプログラマブル遅延レジスタを使用して、ローカルクロックtとPort tとの間の時間を定義してよい。このアプローチは、ポートごとにローカルクロック信号が変更される必要性をなくし、ネットワークデバイスのすべてのポートに対し、単一のローカルクロックtのみが使用されることを可能にする。
[Qbv動作構成へリセットする段階]
【0103】
図11は、Qbvまたは第1の時間クリティカルウィンドウを示すタイミングプロットを示す。リセット時間においては、すべてのキュー状態が1にリセットされ、それらキューの送信を可能にする。またリセット時間においては、ローカルクロックtを定義するための立ち上りエッジが存在しないように、ローカルクロックtが実行されていない。
【0104】
図5のネットワークデバイス270は、多数の方法を使用して動作されてよく、例示的な方法が図12および図15〜16に提供されている。図12には、時間認識ブロック構成方法が示されている。以下のタスクは図1〜11の実装例に関し主に記載されているが、これらタスクは本開示の他の実装例に適用すべく、容易に修正可能である。また、以下のタスクは特定数の時間非認識ブロックシェーパ、時間認識ブロックシェーパ、およびフレームに関し記載されているが、それら各々の異なる数に対応すべく、これらタスクは容易に修正可能である。タスクは反復的に実行されてよい。
【0105】
方法は、398で開始してよい。400で、タイミングモジュール290は、ローカルクロックtを有効化し、ローカルクロックのレート(または周波数)を設定する。ローカルクロックt時間は、図11のラインAによって表され、レートはラインAとラインBとの間の時間によって表される。トリガ生成(Trig Gen)時間およびTrig Gen量が、ローカルクロックt時間およびレートの設定に使用される。複数のポートの各Qbvテーブルが各tで処理され(ローカルクロックは現在トグル中なので)、各Qbvテーブル内の第1のエントリがキュー状態1および時間0を定義するので、何も起こらない(対応するQbvテーブルがリセットされて以来、修正されていない場合、何も起こらないはずなので)。
【0106】
402で、各Port tが定義される。Port tは、ローカルクロックtからの予め定められた遅延に基づいて定義される。この遅延の一例が、図11のラインAとラインCとの間の時間によって表わされる。タイミングモジュール290は、第1の時間クリティカルウィンドウの開始に対する予め定められた時間を設定し、ローカルクロックtの時間およびガードバンドの長さを認識する。この情報に基づいて、式1によって提供されるように、タイミングモジュール290はポート遅延を判断してよい。
ポート遅延=ローカルクロックt+第1のウィンドウの開始時間−ガードバンドの継続期間(式1)
【0107】
ガードバンドの継続期間とは、ポートから最大サイズフレーム(またはパケット)を送信するための時間に、ギャップ遅延をプラスした時間であり、その結果、新しいフレームまたはパケットの送信が開始済みでないと想定して、ポートは第1のウィンドウ(またはブロッキングウィンドウ)の最初においてアイドルである。ポート遅延とは、ガードバンドの開始を指すために使用されてよい。
【0108】
404で、ガードバンドはハードウェアで定義されてよい。時間クリティカルデータがポートをエグレスするとき、ポートが第1のウィンドウの開始においてアイドルであることを保証すべく、ガードバンドが使用される。輻輳を阻止するこの方法により、ネットワーク内の可能な限り低いレイテンシを可能にする。ポートがアイドルであることを保証するために、ガードバンドの終了前に、フレームの送信が完了可能でない限り、新しいフレームは、ポートからの送信開始を許容されてはならない。従って、ガードバンドの開始は、最大フレーム(またはパケット)サイズに基づいており、第1のウィンドウの開始の前である。1522バイトがIEEEタグフレームの最大サイズであるので、ネットワーク上の典型的な最大フレームサイズは1522バイトである。記載の例については、最大フレームサイズは1522バイトであるが、最大フレームサイズは任意の予め定められたサイズであってよい。ガードバンドのサイズはTXバイトでプログラムされ、その結果、ガードバンドはネットワークで使用される最大フレームサイズに容易に合致する。
【0109】
406で、ソフトブロックモードが有効にされる。ポート0〜6上のソフトブロックについて、ポート0〜6のキュー状態は0に設定され、ガードバンド(またはGBバイト)は1522バイトに設定される。このガードバンド設定により1から0に移動する任意のキュー状態ビットは、「ソフトブロック」を実行し、「ソフトブロック」は、ガードバンドの終了前に、フレームの送信が完了可能である限り、フレームがキューをエグレスするのを可能にする。
【0110】
ソフトブロックは、以下のタスク406A〜406Dによって提供される通り、実現されてよい。406Aおよびガードバンドの開始において、カウンタ(例えば、図8のカウンタモジュール362)が、ガードバンドの残り時間量(GBLeft)および/またはガードバンドの継続期間(例えば、1522バイトまたは時間における1522バイトの同等のもの)と共に読み込まれる。対応するキュー状態がガードバンドの開始において1から0に変化する場合、対応するキューは、「ソフトブロック」キューとみなされる。
【0111】
406Bにおいて、すべての「ソフトブロック」キューについて、対応する行頭フレームのサイズがGBLeftの現在の値と比較される。フレームのサイズがGBLeftに等しいまたはそれ未満の場合、そのフレーム/キューは、スケジューラ(例えば、図5のタイマモジュール290または選択モジュール298)に対し、送信開始を可能性として考慮するものとして提示され得る。
【0112】
406Cで、ポートの速度に応じて、GBLeft時間は、例えば以下のようにデクリメントされる。
a.100個の8nsクロックサイクルごとの10Mbpで、GBLeftを1だけデクリメントする。
b.10個の8nsクロックサイクルごとの100Mbpsで、GBLeftを1だけデクリメントする。
c.1個の8nsクロックサイクルごとの1Gbpsで、GBLeftを1だけデクリメントする。
d.1個の8nsクロックサイクルごとの10Gbpsで、GBLeftを10だけデクリメントする(ゼロクリップと共に)。
e.GBLeft=0になるまで、タスク408に戻る。
【0113】
406Dで、GBLeft=0の場合、このポートへのカットスルー接続が許可される前に、2〜3のバイト時間(各バイト時間は1バイトを送信するための時間量である)が必要となる可能性がある。バイト時間の数(「予備のバイト」と称される)が判断されてよく、時間クリティカルウィンドウ(または第1のウィンドウ)の開始に進む前に、ガードバンド時間はこの予備のバイト数、持続(または拡張)されてよい。この予備時間とは、バイト時間合計と同一であってよい追加の遅延を指す。バイト時間の数に基づいて、バイト時間がガードバンドの継続期間に追加されるかどうか、またはブロッキング前に、拡張期間を提供するための別のフィールドが使用されるかについて判断がなされる。換言すると、対応するテーブルが完全な遅延(比較のための予備時間を加えたフレームサイズ)または単なるフレームサイズのみを含むかについて判断がなされる。完全な遅延が存在する場合、タイミングモジュールは、フレームサイズ比較のための「予備」または完全な遅延を減算する。この時点において、ガードバンドは定義されているが、Qbvテーブルは各ポートtの開始においてアクセスされているものの、Qbv動作はまだアクティブ化されないように、ガードバンドはアクセスされていない。
【0114】
408で、時間クリティカルウィンドウが定義される。ポートでのQbv動作を有効にする最後の段階は、1または複数の時間クリティカルウィンドウを定義することである。408Aで、タイミングモジュール290は、ウィンドウを定義するために、いくつの状態が必要かを判断してよい。単純なウィンドウは、2つの状態(オープニング状態およびクロージング状態)を有する。408Bで、ポートテーブルは最後の状態から第1の状態まで、より高いエントリ番号を先に読み込まれる。408Cで、いったん第1のエントリが読み込まれると、Qbv動作(または時間認識ブロック動作)がポートで自動的に開始する。408Dで、ポートでのQbv動作は、第1のエントリを既定値/リセット値で再初期化することによって、無効化されてよく、この場合、キュー状態は1に等しく、ガードバンドは0に等しく、時間クリティカルウィンドウの継続期間は0である。
[クリティカルフレームのリタイミングを持つ非カットスルーブリッジ]
【0115】
図11に関し上記した例は、キュー7にマッピングされた時間クリティカルフレームが、これらの時間クリティカルフレームが既にキュー7に格納されている限り、第1のウィンドウの開始において、ポートをエグレスするためにリタイミング可能である一例を示す。これは、格納および転送アプローチと呼ばれる。このアプローチはレイテンシをより追加する可能性はあるものの、大規模ネットワークが、特定の時点において、フレームをリタイミング可能とするのに有用である。
[クリティカルフレームのカットスルー‐最低レイテンシ]
【0116】
より低いレイテンシを得るために、キュー7にカットスルーアプローチを使用可能である。図11中の構成が使用される場合、時間クリティカルフレームはリタイミング不可能である。というのは、カットスルーポイントは、第1のウィンドウの開始より後に生じる必要があり、さもなければフレームは格納および転送される。これがなされる場合、ウィンドウが小さければ、フレームはウィンドウ内への到達が遅すぎて送信されない場合がある。これらのシステムのうちの1つにおいて、適切なタイミングを得ることは複雑となる可能性がある。時間クリティカルフレームのリタイミングはカットスルーでは有用ではないので、図12を参照して記載される代替的なアプローチが使用されてよい。
第1のウィンドウとのQbv‐カットスルーモード
【0117】
図13は、カットスルーモード用である点を除き、図11のタイミングプロットと類似するタイミングプロットを示す。このモードの間、キュー7は全くブロックされない。これは、以下のようにQbvテーブルを読み込むことによって実現される。ポートのガードバンドエントリは、キュー7がオープンであり、キュー0〜6がソフトブロックされている。ポートのエントリ1は、キュー0〜7が、Qbvテーブルのサイクルの終了までオープンである。ポートのエントリ0は、キュー0〜6がクローズであり、キュー7がオープンである。
[複数のウィンドウの構成]
【0118】
図14は、複数のQbvウィンドウを示すタイミングプロットを示す。Qbvテーブル内のポートQbvエントリは、ローカルクロック信号291のサイクルごとに複数のウィンドウをサポートするよう構成可能である。より多くのウィンドウをローカルクロックサイクルに適合させるべく、レートが増加される。図14では、第1のウィンドウが異なるパターンで示されており、ここではキュー6がキュー0〜5の前にオープンされる。これを実現するために、予備のQbvテーブルエントリが提供される。スケジューラが厳格モードで設定された場合、これは必要でなくてよい。第2および第3のウィンドウが示されている。第3のウィンドウは次のローカルクロックサイクルに伸びているが、第2のCラインでは早期にカットオフされるよう示されている。第2のCラインでは、Qbvテーブル内の第1のエントリが処理され(Qbvテーブルの処理が前にどこで行われたかに関わらず)、その後、ガードバンドが続き、第1のウィンドウが開始する。この場合、いずれのキュー状態も1から0に推移しないので、ガードバンドは無用であり、これは「ソフトブロック」を有効にする。第3の(または重複する)ウィンドウは誤差である。結果的に、第3のウィンドウの後、ガードバンドに訂正がなされる必要がない。後続の第3のウィンドウのエッジが訂正される。
【0119】
ポートテーブルの一部である上記のポート遅延時間は、1または複数のポートレジスタ内に格納されてよい。各ポート遅延時間に対し、それぞれのポートレジスタが提供されてよい。ポート遅延レジスタは、これらのレジスタ内に格納されたポート遅延に基づいて、ポートの再開始時間の間接的な調整を可能にする。ポート遅延は予め定められてよく、対応するネットワークデバイスの開示時に読み込まれてよい。ポートレジスタは読み取り、書き込みおよびリセットレジスタであってよい。ポート遅延時間の各々は、ローカルクロックtおよびそれぞれのポートt間のそれぞれの遅延を示す(ここで、ポートtは、ポートがそれぞれのQbvテーブルに従い、処理を開始する時間である)。
【0120】
ポートごとに制御レジスタが提供されてよく、メモリ360内に格納されてよい。制御レジスタによって提供される情報が下の表1に示されている。制御レジスタは、更新フィールド、ポインタフィールド、およびキュー状態フィールドを含む。更新フィールドは自己クリア(SC)フィールドである。ポインタフィールドは、読み取り、書き込み、およびリセット(RWR)フィールドである。キュー状態フィールドは、読み取り、書き込み、およびセット(RWS)フィールドである。
【表1】
【0121】
以下の表2は、メモリ360内に格納されてよいデータレジスタの一例である。
【表2】
【0122】
ガードバンドレジスタもメモリ360内に格納されてよい。ガードバンドレジスタ内に格納されたガードバンドバイトが最初に処理されてよく、その後、キュー状態および/またはデータレジスタのウィンドウ時間が適用される。ガードバンドバイトは、フレームがガードバンド中およびクリティカルタイムウィンドウの前に送信可能であるかを判断するために使用される。ポートのキューにある行頭フレームのサイズおよび残りのガードバンド期間との間でリアルタイムのハードウェア比較が実行され、1または複数のフレームが送信可能であるかを判断してよい。ガードバンドのソフトブロック継続期間(または残りの部分)に適合するキュー内のフレームのうち最優先のものが最初に送信される。マグニチュードコンパレータが使用され、送信可能な、最も高い優先度を有するフレームを判断してよい。
【表3】
【0123】
図15には、ローカルクロックロッキング方法が示されている。以下のタスクは図1〜14の実装例に関し主に記載されているが、これらタスクは本開示の他の実装例に適用すべく、容易に修正可能である。また、以下のタスクは特定数の時間非認識ブロックシェーパ、時間認識ブロックシェーパ、およびフレームに関し記載されているが、それら各々の異なる数に対応すべく、方法は容易に修正可能である。タスクは反復的に実行されてよい。
【0124】
方法は500で開始してよい。502で、タイミングモジュール290はローカルクロックジェネレータ292を介し、ローカルクロック信号を生成し、これはグローバルクロック信号に基づいてよい。504で、上記の通り、トリガ信号がPTPモジュール456によって生成されてよい。506で、レジスタモジュール458はカウンタ469を使用して、ローカルクロック信号の立ち上がりエッジをキャプチャする。これは、504で生成されたトリガ信号に基づいてよく、および/またはグローバルクロック信号に基づいてよい。これには、立ち上りエッジが生じる時間のタイムスタンプを記録することが含まれてよい。
【0125】
508で、調整モジュール460は、立ち上りエッジがグローバルクロック信号の対応する立ち上がりエッジの予め定められた範囲内で生じたかを判断するために、比較ウィンドウの開始時間および終了時間を判断してよい。当該ウィンドウの開始時間および終了時間は、グローバルクロック信号の立ち上りエッジに基づいて判断されてよい。
【0126】
510で、調整モジュール460および/またはタイミングモジュール290は、ローカルクロック信号の立ち上りエッジとグローバルクロック信号の立ち上りエッジとの間の時間の差、ビット数、および/またはバイト数を判断してよい。512で、調整モジュール460および/またはタイミングモジュール290は、ローカルクロック信号の次の立ち上がりエッジが比較ウィンドウの中心に収まり、グローバルクロック信号の次の立ち上がりエッジと同時になるように、ローカルクロック信号のタイミングを調整する。比較ウィンドウの例が図1に示されている。比較ウィンドウの幅(またはサイズ)、開始時間および終了時間は調整されてよく、その中心がグローバルクロック信号のエッジに置かれる。この方法は主に立ち上りエッジに関し記載されているが、当該方法はクロック信号の立ち下りエッジがモニタリングおよび/または調整されるように変更されてよい。タスク504が、タスク512の後に実行されてよい。
【0127】
図16には、ソフトブロック方法が示されている。以下のタスクは図1〜15の実装例に関し主に記載されているが、これらタスクは本開示の他の実装例に適用すべく、容易に修正可能である。また、以下のタスクは特定数の時間非認識ブロックシェーパ、時間認識ブロックシェーパ、およびフレームに関し記載されているが、それら各々の異なる数に対応すべく、方法は容易に修正可能である。タスクは反復的に実行されてよい。
【0128】
方法は550で開始されてよい。552で、フレームがキュー(例えば、キュー382)で受信される。554で、キュー状態ビットがキューゲート出力信号を介して、時間認識ブロックシェーパ(例えば、時間認識ブロックシェーパ380)で受信される。556で、キュー内の行頭フレームの存在およびサイズ示す記述子SizeF/Pが受信される。558で、サイズ判断モジュール(例えば、サイズ判断モジュール404)が、ソフトブロック継続期間または、ビットおよび/またはバイトでのガードバンドの残り時間SizeSBを判断する。
【0129】
560で、比較モジュール(例えば、比較モジュール402)が、SizeF/PがSizeSB未満またはそれに等しいかを判断する。SizeF/PがSizeSB未満またはそれに等しい場合、タスク562が実行され、そうでない場合、タスク566が実行される。562で、データ通過モジュール(例えば、データ通過モジュール386)が、少なくとも対応する、およびこれから来るクリティカルタイムウィンドウの後まで、行頭フレームの送信をブロックする。
【0130】
566で、ロジックモジュール(例えば、ロジックモジュール384、400)は、キュー状態出力信号のキュー状態ビットが1で、行頭フレームがキュー382内に存在するかを判断する。タスク566はタスク560の前に実行されてよい。図示の通り、キュー状態ビットが1で、行頭フレームが存在する場合、タスク568が実行され、そうでない場合、タスク558が実行されてよい。568で、データ通過モジュールは、ガードバンド中およびクリティカルタイムウィンドウの前に、キューおよび/または対応するネットワークデバイスからの行頭フレームの送信を許可する。別のキューの別のフレームは、クリティカルタイムウィンドウ中に送信されてよい。方法は、タスク564で、タスク562および568の後に終了してよい。
【0131】
図12および図15〜16の上記タスクは例示を意図しており、これらタスクは適用に応じて、順次的、同期的、同時的、連続的、重複する期間中に、または異なる順序で実行されてよい。また、実装および/またはイベントの順に応じて、これらタスクのうちの任意のものが実行されなくてよく、またはスキップされてよい。
【0132】
上記の開示技術は、ネットワークのエンドステーション間のレイテンシを最小化すべく、設計、管理、および制御された非恣意的ネットワークを含む。
【0133】
本開示に記載の無線通信は、IEEE規格802.11‐2012、IEEE規格802.16‐2009、IEEE規格802.20‐2008、および/またはBluetooth(登録商標)Core仕様書v4.0に完全または部分的に準拠して実行され得る。様々な実装において、Bluetooth(登録商標)Core仕様書v4.0は、Bluetooth(登録商標)Core仕様書補遺2、3、または4のうちの1または複数により修正されることがある。様々な実装において、IEEE802.11‐2012は、ドラフトIEEE規格802.11ac、ドラフトIEEE規格802.11ad、および/またはドラフトIEEE規格802.11ahにより補足され得る。
【0134】
前述の記載は本質的に例示にすぎず、本開示、その用途または使用法を限定する意図は一切ない。本開示の広範な教示は、様々な形態で実装可能である。従って、本開示は具体例を含むものの、図面、明細書および以降の特許請求の範囲を検討すると、他の修正形態が自明であるので、本開示の真の範囲はそのように限定されるべきではない。本明細書で使用されるA、B、およびCのうちの少なくとも1つという表現は、非排他的論理ORを使用して、論理(AまたはBまたはC)を意味するものと解釈されるべきであり、「少なくとも1つのA、少なくとも1つのB、および、少なくとも1つのC」を意味するものと解釈されるべきではない。方法における1または複数の段階は、本開示の原理を変更することなく異なる順序で(または同時に)実行可能であることが理解されるべきである。
【0135】
本明細書においては、第1のキュー、第1のタイミングモジュール、調整モジュール、レジスタモジュール、およびブロックシェーパを含むネットワークデバイスが開示される。第1のキューは、フレームを格納するよう構成される。第1のタイミングモジュールは、ローカルクロック信号を生成するよう構成される。調整モジュールは、(i)グローバルクロック信号の第1のエッジに基づいて、グローバルクロック信号の第2のエッジの予期時間、および(ii)グローバルクロック信号の第2のエッジの予期時間の中心に置かれるウィンドウを判断するよう構成される。レジスタモジュールは、ローカルクロック信号の第1のエッジの時間をキャプチャするよう構成される。調整モジュールは、ローカルクロック信号の第1のエッジのキャプチャされた時間およびグローバルクロック信号の第1のエッジの時間に基づいて、ローカルクロック信号の第2のエッジをウィンドウの中心に置くための調整信号を生成するよう構成される。ブロックシェーパは、ローカルクロック信号の第2のエッジの調整後、ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからのフレームの送信をブロックするよう構成される。
【0136】
他の特徴において、ネットワークデバイスはさらに複数のポートおよびメモリを含む。複数のポートの各々は、(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含む。複数のキュー状態テーブルの各々は、複数のエントリを含む。複数のエントリの各々は、対応するポートの複数のキューのうちのそれぞれのものの状態を含む。複数のポートは、第1のポートを含む。第1のポートは、第1のキューを含む。複数のエグレスモジュールの各々は、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。メモリは、ポートテーブルを格納するよう構成される。ポートテーブルは、複数のポートのそれぞれに対する複数の遅延を含む。複数のエグレスモジュールの各々は、それぞれの遅延に基づいて、対応するポートの複数のキューの循環を開始するよう構成される。
【0137】
他の特徴において、第1のポートのエグレスモジュールは、ポートテーブル内の対応する遅延に基づいて、ローカルクロック信号のエッジから遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。第1のポート以外の複数のポートのエグレスモジュールの各々は、ポートテーブル内の対応する複数の遅延に基づいて、複数のポートのうちの連続する前のものによって行われる動作から遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。
【0138】
他の特徴において、第1のタイミングモジュールまたは調整モジュールは、複数のテーブルにわたる、複数のポートのサイクル開始時間を調整すべく、ローカルクロック信号のタイミングを調整するよう構成される。他の特徴において、第1のタイミングモジュールまたは調整モジュールは、ポートテーブルの複数の遅延を調整することなく、ローカルクロック信号のタイミングを調整するよう構成される。
【0139】
他の特徴において、第1のタイミングモジュールまたは調整モジュールは、複数のポートの複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、ローカルクロック信号のタイミングを調整するよう構成される。他の特徴において、調整モジュールは、ローカルクロック信号の第1のエッジのキャプチャされた時間がグローバルクロック信号の第1のエッジの予め定められた時間範囲内にない場合、ローカルクロック信号のタイミングの調整を控える、およびローカルクロック信号の第1のエッジのキャプチャされた時間がグローバルクロック信号の第1のエッジの予め定められた時間範囲内にある場合、ローカルクロック信号の第2のエッジがウィンドウの中心に置かれるように、ローカルクロック信号のタイミングを調整する、ように構成される。
【0140】
他の特徴において、タイミングモジュールは、グローバルクロック信号に基づいて、ローカルクロック信号を生成するよう構成される。他の特徴において、ネットワークデバイスはグローバルクロック信号に基づいてトリガ信号を生成するよう構成された第2のタイミングモジュールをさらに含む。レジスタモジュールは、トリガ信号に基づいて、ローカルクロック信号の第1のエッジの時間をキャプチャするよう構成される。
【0141】
他の特徴において、レジスタモジュールは、グローバルクロック信号に基づいて、ローカルクロック信号の第1のエッジの時間をキャプチャするよう構成される。他の特徴において、ネットワークデバイスは、テーブルを格納するよう構成されたメモリをさらに含む。テーブルは、複数の遅延時間を含む。複数の遅延時間は、ネットワークデバイスの複数のポートのそれぞれのためのものである。複数のポートの動作タイミングは、(i)複数の遅延時間、および(ii)ローカルクロック信号に基づく。
【0142】
他の特徴において、複数の遅延時間は、グローバルクロック信号またはローカルクロック信号のエッジからのそれぞれの遅延量を指す。他の特徴において、ネットワークデバイスは、テーブルを格納するよう構成されたメモリであって、テーブルは複数のエントリを含み、複数の援護地の各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する状態にとどまる継続時間を含む、メモリと、テーブルの複数のエントリを循環するよう構成されたエグレスモジュールと、をさらに含む。ブロックシェーパは、複数のエントリのうちの現在のものに基づいて、フレームがネットワークデバイスから送信されることをブロックするよう構成される。
【0143】
他の特徴において、ネットワークデバイスはメモリおよびエグレスモジュールをさらに含む。メモリは、テーブルを格納するよう構成される。テーブルは複数のエントリを含み、複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む。エグレスモジュールは、テーブルの複数のエントリを循環するよう構成される。ブロックシェーパは、複数のエントリのうちの現在のものに基づいて、フレームがネットワークデバイスから送信されることをブロックするよう構成される。
【0144】
他の特徴において、第1のキュー、第1のタイミングモジュール、調整モジュール、レジスタモジュール、ブロックシェーパ、複数のポートおよびメモリを含むネットワークデバイスが提供される。第1のキューは、フレームを格納するよう構成される。第1のタイミングモジュールは、ローカルクロック信号を生成するよう構成される。調整モジュールは、(i)グローバルクロック信号の第1のエッジに基づいて、グローバルクロック信号の第2のエッジの予期時間、および(ii)グローバルクロック信号の第2のエッジの予期時間の中心に置かれるウィンドウを判断するよう構成される。レジスタモジュールは、ローカルクロック信号の第1のエッジの時間をキャプチャするよう構成される。調整モジュールは、ローカルクロック信号の第1のエッジのキャプチャされた時間およびグローバルクロック信号の第1のエッジの時間に基づいて、ローカルクロック信号の第2のエッジをウィンドウの中心に置くための調整信号を生成するよう構成される。ブロックシェーパは、ローカルクロック信号の第2のエッジの調整後、ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからのフレームの送信をブロックするよう構成される。複数のポートの各々は、(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれものと、を含み、複数のキュー状態テーブルの各々は複数のエントリを含み、複数のエントリの各々は対応するポートの複数のキューのうちのそれぞれのものの状態を含み、複数のポートは第1のポートを含み、第1のポートは第1のキューを含み、複数のエグレスモジュールの各々は複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。メモリはポートテーブルを格納するよう構成され、ポートテーブルは複数のポートのそれぞれに対する複数の遅延を含む。
【0145】
複数のエグレスモジュールの各々は、それぞれの遅延に基づいて、対応するポートの複数のキューの循環を開始するよう構成される。第1のポートのエグレスモジュールは、ポートテーブル内の対応する遅延に基づいて、ローカルクロック信号のエッジから遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。第1のポート以外の複数のポートの複数のエグレスモジュールの各々は、ポートテーブル内の対応する複数の遅延に基づいて、複数のポートのうちの連続する前のものによって行われる動作から遅延させ、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環するよう構成される。
【0146】
他の特徴において、ネットワークデバイスを動作する方法が提供される。ネットワークデバイスは第1のキューを含む。方法は、第1のキュー内にフレームを格納する段階と、ローカルクロック信号を生成する段階と、(i)グローバルクロック信号の第1のエッジに基づいて、グローバルクロック信号の第2のエッジの予期時間、および(ii)グローバルクロック信号の第2のエッジの予期時間の中心に置かれるウィンドウを判断する段階と、ローカルクロック信号の第1のエッジの時間をキャプチャする段階と、ローカルクロック信号の第1のエッジのキャプチャされた時間およびグローバルクロック信号の第1のエッジの時間に基づいて、ローカルクロック信号の第2のエッジをウィンドウの中心に置くための調整信号を生成する段階と、ローカルクロック信号の第2のエッジを調整する段階の後、ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからのフレームの送信をブロックする段階と、を備える。
【0147】
他の特徴において、ネットワークデバイスは複数のポートを含み、複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれものと、を含み、複数のキュー状態テーブルの各々は複数のエントリを含み、複数のエントリの各々は対応するポートの複数のキューのうちのそれぞれのものの状態を含み、複数のポートは第1のポートを含み、第1のポートは第1のキューを含む。方法は、複数のエグレスモジュールの各々を介し、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環する段階であって、ポートテーブルは複数のポートのそれぞれに対する複数の遅延を含む、段階と、ポートテーブルを格納する段階であって、複数のエグレスモジュールの各々を介し、およびそれぞれの遅延に基づいて、対応するポートの複数のキューの循環を開始する段階と、をさらに含む。
【0148】
他の特徴において、方法は、第1のポートのエグレスモジュールを介して、およびポートテーブル内の対応する遅延に基づいて、ローカルクロック信号のエッジから遅延させる段階であって、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環する、段階と、第1のポート以外の複数のポートの複数のエグレスモジュールの各々を介して、およびポートテーブル内の対応する複数の遅延に基づいて、複数のポートのうちの連続する前のものによって行われる動作から遅延させる段階であって、複数のキュー状態テーブルのうちの対応するものにある複数のエントリを循環する、段階と、をさらに含む。
【0149】
他の特徴において、方法は、複数のテーブルにわたる、複数のポートのサイクル開始時間を調整すべく、ローカルクロック信号のタイミングを調整する段階をさらに含む。他の特徴において、方法は、ポートテーブルの複数の遅延を調整することなく、ローカルクロック信号のタイミングを調整する段階をさらに含む。他の特徴において、方法は、複数のポートの複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、ローカルクロック信号のタイミングを調整する段階をさらに含む。
【0150】
他の特徴において、方法は、ローカルクロック信号の第1のエッジのキャプチャされた時間がグローバルクロック信号の第1のエッジの予め定められた時間範囲内にない場合、ローカルクロック信号のタイミングの調整を控える段階と、ローカルクロック信号の第1のエッジのキャプチャされた時間がグローバルクロック信号の第1のエッジの予め定められた時間範囲内にある場合、ローカルクロック信号の第2のエッジがウィンドウの中心に置かれるように、ローカルクロック信号のタイミングを調整する段階と、をさらに含む。
【0151】
他の特徴において、方法はグローバルクロック信号に基づいてローカルクロック信号を生成する段階をさらに含む。他の特徴において、方法は、グローバルクロック信号に基づいて、トリガ信号を生成する段階をさらに含み、ローカルクロック信号の第1のエッジの時間は、トリガ信号に基づいてキャプチャされる。他の特徴において、ローカルクロック信号の第1のエッジの時間は、グローバルクロック信号に基づいてキャプチャされる。
【0152】
他の特徴において、方法はテーブルを格納する段階であって、テーブルは複数の遅延時間を含み、複数の遅延時間はネットワークデバイスの複数のポートのそれぞれのためのものである、段階と、複数のポートの動作タイミングを(i)複数の遅延時間、および(ii)ローカルクロック信号に基づいて制御する段階と、をさらに含む。他の特徴において、複数の遅延時間は、グローバルクロック信号またはローカルクロック信号のエッジからのそれぞれの遅延量を指す。
【0153】
他の特徴において、方法はテーブルを格納する段階であって、テーブルは複数のエントリを含み、複数のエントリの各々が(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する状態にとどまる継続時間を含む、段階と、ネットワークデバイスのエグレスモジュールを介し、テーブルの複数のエントリを循環する段階と、複数のエントリのうちの現在のものに基づいて、フレームがネットワークデバイスから送信されることをブロックする段階と、をさらに含む。
【0154】
他の特徴において、方法はテーブルを格納する段階であって、テーブルは複数のエントリを含み、複数のエントリの各々が(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む、段階と、ネットワークデバイスのエグレスモジュールを介し、テーブルの複数のエントリを循環する段階と、複数のエントリのうちの現在のものに基づいて、フレームがネットワークデバイスから送信されることをブロックする段階と、をさらに含む。
【0155】
以下の定義を含め、本願においては、用語「モジュール」または用語「コントローラ」は、用語「回路」と置換されてよい。用語「モジュール」は、特定用途向け集積回路(ASIC)、デジタル、アナログ、若しくは混成アナログ/デジタルディスクリート回路、デジタル、アナログ、若しくは混成アナログ/デジタル集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行する(共有、専用、またはグループの)プロセッサ回路、プロセッサ回路によって実行されるコードを格納する(共有、専用、またはグループの)メモリ回路、説明された機能を提供する他の好適なハードウェアコンポーネント、またはシステムオンチップ等、上記の一部または全部の組み合わせを指してよい、またはそれらの一部であってよい、またはそれらを含んでよい。
【0156】
モジュールは、1または複数のインタフェース回路を含んでよい。いくつかの例において、インタフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、またはそれらの組み合わせに接続される有線インタフェースまたは無線インタフェースを含んでよい。本開示の任意の特定のモジュールの機能は、インタフェース回路を介して接続される複数のモジュール間で分散されてよい。例えば、複数のモジュールは負荷分散を可能にしてよい。さらなる例において、サーバ(リモートまたはクラウドとしても知られる)モジュールは、クライアントモジュールの代わりにいくつかの機能を実現してよい。
【0157】
上記で使用されるコードという用語は、ソフトウェア、ファームウェアおよび/またはマイクロコードを含んでよく、プログラム、ルーチン、関数、クラス、データ構造および/またはオブジェクトを指してよい。共有プロセッサ回路という用語は、複数のモジュールからの一部のコードまたは全部のコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、複数の追加のプロセッサ回路と組み合わせて、1または複数のモジュールからの一部のコードまたは全部のコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路という言及は、個別のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記の組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールからの一部のコードまたは全部のコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、複数の追加メモリと組み合わせて、1または複数のモジュールからの一部のコードまたは全部のコードを格納するメモリ回路を包含する。
【0158】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用されるコンピュータ可読媒体という用語は、媒体(搬送波上等)を介して伝播される一時的な電気信号または電磁信号を包含しない。コンピュータ可読媒体という用語は従って、有形および非一時的なものとみなされてよい。非一時的で有形なコンピュータ可読媒体の非限定的な例としては、不揮発性メモリ回路(フラッシュメモリ回路、消去可能プログラマブルリードオンリメモリ回路、またはマスクリードオンリメモリ回路等)、揮発性メモリ回路(スタティックランダムアクセスメモリ回路またはダイナミックランダムアクセスメモリ回路等)、磁気記憶媒体(アナログ若しくはデジタル磁気テープまたはハードディスクドライブ等)、および光記憶媒体(CD、DVD、またはブルーレイディスク等)である。
【0159】
本願に記載の装置および方法は、複数のコンピュータプログラム中に具現化される1または複数の特定の機能を実行するよう汎用コンピュータを構成することによって作成される専用コンピュータによって部分的または完全に実装されてよい。上記の機能ブロック、フローチャートコンポーネント、および他の要素は、熟練技術者またはプログラマの日常業務によってコンピュータプログラムに変換可能なソフトウェア仕様として機能する。
【0160】
コンピュータプログラムは、少なくとも1つの非一時的な、有形のコンピュータ可読媒体上に格納される複数のプロセッサで実行可能な命令を含む。コンピュータプログラムはまた、格納されたデータを含んでよく、または格納されたデータに依存してよい。コンピュータプログラムは、専用コンピュータのハードウェアとやり取りする基本入出力システム(BIOS)、専用コンピュータの特定のデバイスとやり取りするデバイスドライバ、1または複数のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーション等を包含してよい。
【0161】
コンピュータプログラムは、(i)HTML(ハイパーテキストマークアップ言語)若しくはXML(拡張マークアップ言語)等の解析されるべき記述テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されるオブジェクトコード、(iv)インタプリタによる実行のためのソースコード、(v)ジャストインタイムコンパイラによるコンパイルおよび実行のためのソースコード等を含んでよい。例示にすぎないが、ソースコードはC、C++、C#、Objective C、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5、Ada、ASP(active server pages),PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、およびPython(登録商標)を含む言語の構文を使用して記述されてよい。
【0162】
特許請求の範囲に記載された要素はいずれも、要素が明示的に「means for」という文言を使用して記載されていない限り、または「operation for」若しくは「step for」という文言を使用する方法クレームの場合を除き、米国特許法第112条(f)の意味におけるミーンズプラスファンクション要素を意図していない。
(項目1)
フレームを格納するための第1のキューと、
ローカルクロック信号を生成するための第1のタイミングモジュールと、
(i)グローバルクロック信号の第1のエッジに基づいて、前記グローバルクロック信号の第2のエッジの予期時間、および(ii)前記グローバルクロック信号の前記第2のエッジの前記予期時間の中心に置かれるウィンドウを判断するための調整モジュールと、
前記ローカルクロック信号の第1のエッジの時間をキャプチャするためのレジスタモジュールであって、前記調整モジュールは前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間および前記グローバルクロック信号の前記第1のエッジの前記時間に基づいて、前記ローカルクロック信号の第2のエッジを前記ウィンドウの中心に置くための調整信号を生成する、レジスタモジュールと、
前記ローカルクロック信号の前記第2のエッジの調整後、前記ローカルクロック信号のタイミングに基づいて、ネットワークデバイスからの前記フレームの送信をブロックするためのブロックシェーパと、を備える、ネットワークデバイス。
(項目2)
複数のポートであって、前記複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含み、前記複数のキュー状態テーブルの各々は複数のエントリを含み、前記複数のエントリの各々は対応する前記ポートの前記複数のキューのうちのそれぞれのものの状態を含み、前記複数のポートは第1のポートを含み、前記第1のポートは前記第1のキューを含み、
前記エグレスモジュールの各々は前記複数のキュー状態テーブルのうちの対応するものにある前記複数のエントリを循環する、複数のポートと、
ポートテーブルを格納するためのメモリであって、前記ポートテーブルは前記複数のポートのそれぞれに対する複数の遅延を含み、
前記エグレスモジュールの各々はそれぞれの前記遅延に基づいて、対応する前記ポートの前記複数のキューの循環を開始する、メモリと、をさらに備える、項目1に記載のネットワークデバイス。
(項目3)
前記第1のポートの前記エグレスモジュールは、前記ポートテーブル内の対応する前記遅延に基づいて、前記ローカルクロック信号のエッジから遅延させ、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環し、
前記第1のポート以外の前記複数のポートの前記エグレスモジュールの各々は、前記ポートテーブル内の対応する複数の前記遅延に基づいて、前記複数のポートのうちの連続する前のものによって行われる動作から遅延させ、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、項目2に記載のネットワークデバイス。
(項目4)
前記第1のタイミングモジュールまたは前記調整モジュールは、複数の前記テーブルにわたる、前記複数のポートのサイクル開始時間を調整すべく、前記ローカルクロック信号のタイミングを調整する、項目3に記載のネットワークデバイス。
(項目5)
前記第1のタイミングモジュールまたは前記調整モジュールは、前記ポートテーブルの前記複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する、項目4に記載のネットワークデバイス。
(項目6)
前記第1のタイミングモジュールまたは前記調整モジュールは、前記複数のポートの前記複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する、項目4に記載のネットワークデバイス。
(項目7)
前記調整モジュールは、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの予め定められた時間範囲内にない場合、前記ローカルクロック信号のタイミングの調整を控える、および
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの前記予め定められた時間範囲内にある場合、前記ローカルクロック信号の前記第2のエッジが前記ウィンドウの中心に置かれるように、前記ローカルクロック信号の前記タイミングを調整する、項目1から6のいずれか一項に記載のネットワークデバイス。
(項目8)
前記第1のタイミングモジュールは、前記グローバルクロック信号に基づいて、前記ローカルクロック信号を生成する、項目1から7のいずれか一項に記載のネットワークデバイス。
(項目9)
前記グローバルクロック信号に基づいてトリガ信号を生成するための第2のタイミングモジュールをさらに備え、
前記レジスタモジュールは、前記トリガ信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間をキャプチャする、項目1から8のいずれか一項に記載のネットワークデバイス。
(項目10)
前記レジスタモジュールは、前記グローバルクロック信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間をキャプチャする、項目1から9のいずれか一項に記載のネットワークデバイス。
(項目11)
テーブルを格納するためのメモリをさらに備え、
前記テーブルは複数の遅延時間を含み、
前記複数の遅延時間は前記ネットワークデバイスの複数のポートのそれぞれのためのものであり、
前記複数のポートの動作タイミングは(i)前記複数の遅延時間、および(ii)前記ローカルクロック信号に基づく、項目1に記載のネットワークデバイス。
(項目12)
前記複数の遅延時間は、前記グローバルクロック信号または前記ローカルクロック信号のエッジからのそれぞれの遅延量を指す、項目11に記載のネットワークデバイス。
(項目13)
テーブルを格納するためのメモリであって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する前記状態にとどまる継続時間を含む、メモリと、
前記テーブルの前記複数のエントリを循環するためのエグレスモジュールと、をさらに備え、
前記ブロックシェーパは、前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする、項目1に記載のネットワークデバイス。
(項目14)
テーブルを格納するためのメモリであって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む、メモリと、
前記テーブルの前記複数のエントリを循環するためのエグレスモジュールと、をさらに備え、
前記ブロックシェーパは、前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする、項目1に記載のネットワークデバイス。
(項目15)
フレームを格納するための第1のキューと、
ローカルクロック信号を生成するためのタイミングモジュールと、
複数のポートであって、前記複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含み、前記複数のキュー状態テーブルの各々は複数のエントリを含み、前記複数のエントリの各々は対応する前記ポートの前記複数のキューのうちのそれぞれのものの状態を含み、前記複数のポートは第1のポートを含み、前記第1のポートは前記第1のキューを含み、
前記エグレスモジュールの各々は前記複数のキュー状態テーブルのうちの対応するものにある前記複数のエントリを循環する、複数のポートと、
ポートテーブルを格納するためのメモリであって、前記ポートテーブルは前記複数のポートのそれぞれに対する複数の遅延を含み、
前記エグレスモジュールの各々はそれぞれの前記遅延に基づいて、対応する前記ポートの前記複数のキューの循環を開始し、
前記第1のポートの前記エグレスモジュールは、前記ポートテーブル内の対応する前記遅延に基づいて、前記ローカルクロック信号のエッジから遅延させ、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環し、
前記第1のポート以外の前記複数のポートの前記エグレスモジュールの各々は、前記ポートテーブル内の対応する複数の前記遅延に基づいて、前記複数のポートのうちの連続する前のものによって行われる動作から遅延させ、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、メモリと、を備える、ネットワークデバイス。
(項目16)
ネットワークデバイスを動作する方法であって、前記ネットワークデバイスは第1のキューを含み、前記方法は、
前記第1のキュー内にフレームを格納する段階と、
ローカルクロック信号を生成する段階と、
(i)グローバルクロック信号の第1のエッジに基づいて、前記グローバルクロック信号の第2のエッジの予期時間、および(ii)前記グローバルクロック信号の前記第2のエッジの前記予期時間の中心に置かれるウィンドウを判断する段階と、
前記ローカルクロック信号の第1のエッジの時間をキャプチャする段階と、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間および前記グローバルクロック信号の前記第1のエッジの前記時間に基づいて、前記ローカルクロック信号の第2のエッジを前記ウィンドウの中心に置くための調整信号を生成する段階と、
前記ローカルクロック信号の前記第2のエッジを調整する段階の後、前記ローカルクロック信号のタイミングに基づいて、前記ネットワークデバイスからの前記フレームの送信をブロックする段階と、を備える、方法。
(項目17)
前記ネットワークデバイスは複数のポートを含み、前記複数のポートの各々は(i)複数のキューと、(ii)エグレスモジュールと、(iii)複数のキュー状態テーブルのうちのそれぞれのものと、を含み、前記複数のキュー状態テーブルの各々は複数のエントリを含み、前記複数のエントリの各々は対応する前記ポートの前記複数のキューのうちのそれぞれのものの状態を含み、前記複数のポートは第1のポートを含み、前記第1のポートは前記第1のキューを含み、前記方法は、
前記エグレスモジュールの各々を介し、前記複数のキュー状態テーブルのうちの対応するものにある前記複数のエントリを循環する段階と、
ポートテーブルを格納する段階であって、前記ポートテーブルは前記複数のポートのそれぞれに対する複数の遅延を含む、段階と、
前記エグレスモジュールの各々を介し、およびそれぞれの前記遅延に基づいて、対応する前記ポートの前記複数のキューの循環を開始する段階と、をさらに備える、項目16に記載の方法。
(項目18)
前記第1のポートの前記エグレスモジュールを介し、および前記ポートテーブル内の対応する前記遅延に基づいて、前記ローカルクロック信号のエッジから遅延させる段階であって、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、段階と、
前記第1のポート以外の前記複数のポートの前記エグレスモジュールの各々を介し、および前記ポートテーブル内の対応する複数の前記遅延に基づいて、前記複数のポートのうちの連続する前のものによって行われる動作から遅延させる段階であって、前記複数のキュー状態テーブルのうちの前記対応するものにある前記複数のエントリを循環する、段階と、をさらに備える、項目17に記載の方法。
(項目19)
複数の前記テーブルにわたる、前記複数のポートのサイクル開始時間を調整すべく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、項目18に記載の方法。
(項目20)
前記ポートテーブルの前記複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、項目19に記載の方法。
(項目21)
前記複数のポートの前記複数のキュー状態テーブルの複数の継続期間または複数の遅延を調整することなく、前記ローカルクロック信号のタイミングを調整する段階をさらに備える、項目19に記載の方法。
(項目22)
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの予め定められた時間範囲内にない場合、前記ローカルクロック信号のタイミングの調整を控える段階と、
前記ローカルクロック信号の前記第1のエッジの前記キャプチャされた時間が前記グローバルクロック信号の前記第1のエッジの前記予め定められた時間範囲内にある場合、前記ローカルクロック信号の前記第2のエッジが前記ウィンドウの中心に置かれるように、前記ローカルクロック信号の前記タイミングを調整する段階と、をさらに備える、項目16から20のいずれか一項に記載の方法。
(項目23)
前記グローバルクロック信号に基づいて、前記ローカルクロック信号を生成する段階をさらに備える、項目16から21のいずれか一項に記載の方法。
(項目24)
前記グローバルクロック信号に基づいて、トリガ信号を生成する段階をさらに備え、
前記トリガ信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間はキャプチャされる、項目16から22のいずれか一項に記載の方法。
(項目25)
前記グローバルクロック信号に基づいて、前記ローカルクロック信号の前記第1のエッジの前記時間はキャプチャされる、項目16から23のいずれか一項に記載の方法。
(項目26)
テーブルを格納する段階であって、前記テーブルは複数の遅延時間を含み、前記複数の遅延時間は前記ネットワークデバイスの複数のポートのそれぞれのためのものである、段階と、
前記複数のポートの動作タイミングを(i)前記複数の遅延時間、および(ii)前記ローカルクロック信号に基づいて制御する段階と、をさらに備える、項目16に記載の方法。
(項目27)
前記複数の遅延時間は、前記グローバルクロック信号または前記ローカルクロック信号のエッジからのそれぞれの遅延量を指す、項目26に記載の方法。
(項目28)
テーブルを格納する段階であって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応する前記状態にとどまる継続時間を含む、段階と、
前記ネットワークデバイスのエグレスモジュールを介し、前記テーブルの前記複数のエントリを循環する段階と、
前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする段階と、をさらに備える、項目16に記載の方法。
(項目29)
テーブルを格納する段階であって、前記テーブルは複数のエントリを含み、前記複数のエントリの各々は(i)複数のキューのうちのそれぞれのものに対する状態、および(ii)対応するキューからの送信を許可する前に待機する遅延時間を含む、段階と、
前記ネットワークデバイスのエグレスモジュールを介し、前記テーブルの前記複数のエントリを循環する段階と、
前記複数のエントリのうちの現在のものに基づいて、前記フレームが前記ネットワークデバイスから送信されることをブロックする段階と、をさらに備える、項目16に記載の方法。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16