IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィの特許一覧

特許7350192マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体
<>
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図1
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図2
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図3
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図4
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図5
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図6
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図7
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図8
  • 特許-マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-14
(45)【発行日】2023-09-25
(54)【発明の名称】マルチコアシステムオンチップ処理アーキテクチャーにおいてデータを処理する方法、マルチコアシステムオンチップデバイス及び記憶媒体
(51)【国際特許分類】
   G06F 13/10 20060101AFI20230915BHJP
   G06F 15/78 20060101ALI20230915BHJP
   G06F 9/48 20060101ALI20230915BHJP
【FI】
G06F13/10 330B
G06F15/78 530
G06F9/48 300F
【請求項の数】 15
(21)【出願番号】P 2022555257
(86)(22)【出願日】2020-11-17
(65)【公表番号】
(43)【公表日】2023-01-25
(86)【国際出願番号】 JP2020044130
(87)【国際公開番号】W WO2021171719
(87)【国際公開日】2021-09-02
【審査請求日】2022-05-12
(31)【優先権主張番号】20305196.6
(32)【優先日】2020-02-27
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】503163527
【氏名又は名称】ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ
【氏名又は名称原語表記】MITSUBISHI ELECTRIC R&D CENTRE EUROPE B.V.
【住所又は居所原語表記】Capronilaan 46, 1119 NS Schiphol Rijk, The Netherlands
(74)【代理人】
【識別番号】100110423
【弁理士】
【氏名又は名称】曾我 道治
(74)【代理人】
【識別番号】100111648
【弁理士】
【氏名又は名称】梶並 順
(74)【代理人】
【識別番号】100122437
【弁理士】
【氏名又は名称】大宅 一宏
(74)【代理人】
【識別番号】100147566
【弁理士】
【氏名又は名称】上田 俊一
(74)【代理人】
【識別番号】100161171
【弁理士】
【氏名又は名称】吉田 潤一郎
(72)【発明者】
【氏名】ロレ、ロマン
【審査官】田中 啓介
(56)【参考文献】
【文献】特表2007-500381(JP,A)
【文献】国際公開第2019/026139(WO,A1)
【文献】特開2012-003747(JP,A)
【文献】米国特許出願公開第2009/0083516(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/00-13/14
G06F15/16-15/177、15/78
G06F9/455-9/54
(57)【特許請求の範囲】
【請求項1】
マルチコアシステムオンチップ(SOC)処理アーキテクチャーにおいてデータを処理する方法であって、
前記SOCの媒体アクセスコントローラー(MAC)からリアルタイムオペレーティングシステム(RTOS)のネットワークインターフェースコントローラー(NIC)において入力フレームを受信することであって、前記RTOSは前記SOCの第1のコアにおいて実装されることと、
前記入力フレームを前記RTOSの前記NICから前記RTOSのフレームプロセッサに送信することと、
少なくとも、RTOSタスクに関係付けられた第1のクラスと、非RTOSタスクに関係付けられた第2のクラスとを含む分類に従って、前記フレームプロセッサにおいて前記入力フレームを構文解析及び分類することと、
前記第1のクラスに分類された入力フレームを、前記フレームプロセッサから、前記RTOSのシーケンサーによって実行される1つ以上のタスクに送信することと、
前記第2のクラスに分類された入力フレームを、前記フレームプロセッサから、前記SOCの第2のコアにおいて実装される第2のオペレーティングシステム(OS)のネットワークデバイスドライバーに送信することであって、前記第2のOSは、カーネル空間とユーザー空間とを備えることと、
前記第1のコアにおいて、前記RTOSの前記シーケンサーによって実行される前記1つ以上のタスクに送信される前記入力フレームを処理すると共に、前記第2のコアにおいて、前記第2のOSの前記ネットワークデバイスドライバーに送信される前記入力フレームを処理することと、
RTOSタスクに関係付けられた出力フレームを、前記RTOSの前記シーケンサーによって実行される前記1つ以上のタスクから、前記フレームプロセッサに送信することと、
非RTOSタスクに関係付けられた出力フレームを、前記第2のOSの前記ネットワークデバイスドライバーから前記フレームプロセッサに送信することと、
前記フレームプロセッサにおいて前記出力フレームを分類及びスケジューリングすることと、
前記スケジューリングされた出力フレームを、前記フレームプロセッサから前記NICに送信すると共に、前記スケジューリングされた出力フレームを前記NICから前記MACに送信することと、
を含む、方法。
【請求項2】
前記RTOSは、前記SOCの追加のコアにおいて実装される、請求項1に記載の方法。
【請求項3】
他のRTOSタスクに関係付けられた1つ以上の他のクラスを含む分類に従って、前記フレームプロセッサにおいて前記入力フレームを構文解析及び分類することと、
前記1つ以上の他のクラスに分類された入力フレームを、前記フレームプロセッサから、1つ以上の専用の他のRTOSの1つ以上の専用の他のシーケンサーによって実行される1つ以上のタスクに送信することであって、前記1つ以上の専用の他のRTOSは、前記SOCの1つ以上の専用コアにおいて実装されることと、
を更に含む、請求項1又は2に記載の方法。
【請求項4】
前記第2のOSは、前記SOCの追加のコアにおいて実装される、請求項1~3のいずれか1項に記載の方法。
【請求項5】
非RTOSタスクに関係付けられた1つ以上の更なるクラスを含む分類に従って、前記フレームプロセッサにおいて前記入力フレームを構文解析及び分類することと、
前記1つ以上の更なるクラスに分類された入力フレームを、前記フレームプロセッサから、前記SOCの1つ以上の専用の更なるコア上で実装される1つ以上の専用の更なるOSの1つ以上の専用の更なるネットワークデバイスドライバーに送信することであって、前記1つ以上の専用の更なるOSは、専用の更なるカーネル空間及び専用の更なるユーザー空間を含むことと、
を更に含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記第2のOSの前記ネットワークデバイスドライバーにおいて、前記RTOSの前記フレームプロセッサから排他的に送信された入力フレームを受信することを更に含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記第2のOSの前記ネットワークデバイスドライバーによって、出力フレームを、前記RTOSの前記フレームプロセッサに排他的に送信することを更に含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記RTOSによって、及び前記第2のOSのカーネルによって、フレームデータを記憶するバッファーを共有することを更に含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記第2のOSからRTOSバッファーへのアクセスを防ぐことを更に含む、請求項1~7のいずれか1項に記載の方法。
【請求項10】
前記入力フレームを分類することは、
前記フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を前記入力フレームにアタッチすることと、
前記入力フレーム及び前記アタッチされたストリームクラス識別子を、前記フレームプロセッサのキュー識別モジュールに渡すことと、
を更に含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記フレームプロセッサは、動的に定義された分類規則を適用している、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記第2のOSのカーネル及び前記RTOSのアプリケーションの一方又は双方が、前記分類規則を動的に定義することに寄与している、請求項11に記載の方法。
【請求項13】
前記フレームプロセッサにおいて前記出力フレームを分類及びスケジューリングすることは、
前記フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を前記出力フレームにアタッチすることと、
前記スケジューリングされた出力フレームのフレーム送信について、前記出力フレームの前記アタッチされたストリームクラスの時間及び優先度の双方に依拠して、スケジューリング規則を前記出力フレームに適用することと、
を含む、請求項1~12のいずれか1項に記載の方法。
【請求項14】
処理コアとメモリとを備えるマルチコアシステムオンチップ(SOC)デバイスであって、前記処理コアは、請求項1~13のいずれか1項に記載のように動作するように構成される、マルチコアシステムオンチップ(SOC)デバイス。
【請求項15】
マルチコアシステムオンチップ(SOC)デバイスの処理コアによって実行されると、該処理コアに請求項1~13のいずれか1項に記載の方法を実行させる命令を含むコンピューター可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピューティングアーキテクチャーの分野、特にマルチコアシステムオンチップアーキテクチャーの分野に関する。
【背景技術】
【0002】
マルチコアシステムオンチップアーキテクチャーは、特定のシステムオンチップにおいていくつかのオペレーティングシステムを実行することを可能にし、各オペレーティングシステムは1つ以上のコアを用いて動作することができる。そのようなマルチコアシステムは、同種とすることができ、複数の同一コアを含むことができるか、又は異なるコアタイプを含み、異種とすることができる。そのようなマルチコアシステムは、コンピューティングアーキテクチャーに関して柔軟性を提供する。
【発明の概要】
【0003】
本発明は、添付の独立請求項によって定義される。本明細書において開示される概念の更なる特徴及び利点は、以下に続く説明において記載される。
【0004】
本開示は、マルチコアシステムオンチップ(SOC)処理アーキテクチャーにおいてデータを処理する方法であって、
SOCの媒体アクセスコントローラー(MAC)からリアルタイムオペレーティングシステム(RTOS)のネットワークインターフェースコントローラー(NIC)において入力フレームを受信することであって、RTOSはSOCの第1のコアにおいて実装されることと、
入力フレームをRTOSのNICからRTOSのフレームプロセッサに送信することと、
少なくとも、RTOSタスクに関係付けられた第1のクラスと、非RTOSタスクに関係付けられた第2のクラスとを含む分類に従って、フレームプロセッサにおいて入力フレームを構文解析及び分類することと、
第1のクラスに分類された入力フレームを、フレームプロセッサから、RTOSのシーケンサーによって実行される1つ以上のタスクに送信することと、
第2のクラスに分類された入力フレームを、フレームプロセッサから、SOCの第2のコアにおいて実装される第2のオペレーティングシステム(OS)のネットワークデバイスドライバーに送信することであって、第2のOSは、カーネル空間とユーザー空間とを備えることと、
第1のコアにおいて、RTOSのシーケンサーによって実行されるタスクに送信される入力フレームを処理すると共に、第2のコアにおいて、第2のOSのネットワークデバイスドライバーに送信される入力フレームを処理することと、
RTOSタスクに関係付けられた出力フレームを、RTOSのシーケンサーによって実行されるタスクから、フレームプロセッサに送信することと、非RTOSタスクに関係付けられた出力フレームを、第2のOSのネットワークデバイスドライバーからフレームプロセッサに送信することと、
フレームプロセッサにおいて出力フレームを分類及びスケジューリングすることと、
スケジューリングされた出力フレームを、フレームプロセッサからNICに送信すると共に、NICからMACに送信することと、
を含む、方法を記載する。
【0005】
そのようなアーキテクチャーは、同じマルチコアSOCにおいて、RTOSを用いて、例えばタイムセンシティブネットワーキング(TSN)規格に準拠したプロセス等のタイムセンシティブなプロセスを実行し、第2のOSにおいて、他のよりタイムセンシティブでないプロセスを実行することを可能にする。これは、入力フレーム及び出力フレームのハンドリングが、RTOSのNIC及びフレームプロセッサ等のRTOSのコンポーネントを通じて集中型で行われることを確実にすることによって達成される。本開示において、TSNは、IEEE802.1ワーキンググループの一部であるタイムセンシティブネットワーキングタスクグループによって指定された規格のセットである。
【0006】
選択的には、RTOSは、SOCの追加の第1のコアにおいて実装される。これにより、入力フレーム及び出力フレームの中央制御されたハンドリングを解除することなく、RTOSのための増大した処理能力を得ることを可能にすることができる。
【0007】
選択的には、方法は、
他のRTOSタスクに関係付けられた1つ以上の他のクラスを含む分類に従って、フレームプロセッサにおいて入力フレームを構文解析及び分類することと、
1つ以上の他のクラスに分類された入力フレームを、フレームプロセッサから、1つ以上の専用の他のRTOSの1つ以上の専用の他のシーケンサーによって実行される1つ以上のタスクに送信することであって、1つ以上の専用の他のRTOSは、SOCの1つ以上の専用コアにおいて実装されることと、
を更に含む。
【0008】
そのような場合、RTOSタスクの分類の粒度を上げることにより、いくつかのRTOSにわたるそのようなタスクの処理を並列化することを可能にすることができ、各RTOSは少なくとも1つの専用処理コアから利益を得る。
【0009】
選択的には、第2のOSは、SOCの追加の第2のコアにおいて実装される。そのような構成は、第2のOSの処理帯域幅を増大することを可能にすることができる。
【0010】
選択的には、方法は、
非RTOSタスクに関係付けられた1つ以上の更なるクラスを含む分類に従って、フレームプロセッサにおいて入力フレームを構文解析及び分類することと、
1つ以上の更なるクラスに分類された入力フレームを、フレームプロセッサから、SOCの1つ以上の専用の更なるコア上で実装されている1つ以上の専用の更なるOSの1つ以上の専用の更なるネットワークデバイスドライバーに送信することであって、1つ以上の専用の更なるOSは、専用の更なるカーネル空間及び専用の更なるユーザー空間を含むことと、
を更に含む。
【0011】
そのような場合、非RTOSタスクの分類の粒度を上げることにより、いくつかのOSにわたるそのようなタスクの処理を並列化することを可能にすることができ、各OSは少なくとも1つの専用処理コアから利益を得る。
【0012】
選択的には、方法は、第2のOSのネットワークデバイスドライバーにおいて、RTOSのフレームプロセッサから排他的に送信された入力フレームを受信することを更に含む。これにより、入力フレームの制御がRTOSのフレームプロセッサによって集中化されることを確実にすることができる。
【0013】
選択的には、方法は、第2のOSのネットワークデバイスドライバーによって、出力フレームを、RTOSのフレームプロセッサに排他的に送信することを更に含む。これにより、出力フレームの制御がRTOSのフレームプロセッサによって集中化されることを確実にすることができる。
【0014】
選択的には、方法は、RTOSによって、及び第2のOSのカーネルによって、フレームデータを記憶するバッファーを共有することを更に含む。共通リソースのそのような共有により、アーキテクチャーがより効率的になる。
【0015】
選択的には、方法は、第2のOSからRTOSバッファーへのアクセスを防ぐことを更に含む。これにより、RTOSを通じて実行されるネットワークタスクのセキュリティの強化を可能にすることができる。
【0016】
選択的には、方法は、
フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を入力フレームにアタッチすることと、
入力フレーム及びアタッチされたストリームクラス識別子を、フレームプロセッサのキュー識別モジュールに渡すことと、
を更に含む。
【0017】
そのようなストリームクラス識別子は、例えば、入力フレームをRTOS又は第2のOSによる更なる処理のためにポストすることができるキューを決定することを可能にすることができる。
【0018】
選択的には、方法は、フレームプロセッサが動的に定義された分類規則を適用していることを更に含む。これにより、分類を異なる状況に適合させることを可能にすることができ、特に、入力フレームの処理及び出力フレームの生成を担当するRTOS又は第2のOSにおけるアプリケーションの展開を可能にする。より詳細には、第2のOSのカーネル及びRTOSのアプリケーションの一方又は双方が、分類規則を動的に定義することに寄与している。これにより、フィードバックメカニズムを用いて分類規則を適合させることを可能にすることができ、そのようなフィードバックは、第2のOSのカーネル及びRTOSのアプリケーションのうちの一方又は双方から生じる。
【0019】
選択的には、方法は、
フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を出力フレームにアタッチすることと、
スケジューリングされた出力フレームのフレーム送信について、出力フレームのアタッチされたストリームクラスの時間及び優先度の双方に依拠して、スケジューリング規則を出力フレームに適用することと、
を更に含む。
【0020】
これによって、フレームプロセッサによって、例えばTSN規格制約に準拠するために、いずれの出力フレームが他のフレームの前に処置されるべきかを制御することを可能にすることができる。
【0021】
本開示は、処理コアとメモリとを備えるマルチコアシステムオンチップ(SOC)デバイスであって、処理コアは、本開示による方法のうちの任意のものに従って動作するように構成される、マルチコアシステムオンチップ(SOC)デバイスも説明する。そのようなマルチコアSOCデバイスは、汎用OS及びRTOSの双方をハンドリングすることを可能にすることができる。
【0022】
本開示は、マルチコアシステムオンチップ(SOC)デバイスの処理コアによって実行されると、該処理コアに本開示による方法のうちの任意のものを実行させる命令を含むコンピューター可読記憶媒体も記載する。
【図面の簡単な説明】
【0023】
図1】本開示による例示的な方法を示す図である。
図2】本開示による別の例示的な方法を示す図である。
図3】本開示による別の例示的な方法を示す図である。
図4】本開示による例示的なSOCを示す図である。
図5】本開示による別の例示的なSOCを示す図である。
図6】本開示による例示的なフレームプロセッサを示す図である。
図7】本開示による例示的なフレームプロセッサを示す図である。
図8】本開示による別の例示的なSOCを示す図である。
図9】本開示による別の例示的なSOCを示す図である。
【発明を実施するための形態】
【0024】
より効率的なコンピューティングシステムを提供するために、半導体製造者は、様々な電子コンポーネントを同じパッケージ上にパッケージングする(「SoC」又は「SOC」とも呼ばれる)傾向にある。この手法は、複数のパッケージの代わりに単一の半導体パッケージが提供されるため、物理的空間を節減することができ、より良好な性能を提供することができ、より低いコストで、より低い電力を消費することができる。複数のパッケージは、コンポーネント間の通信を可能にするために物理的オフチップワイヤを介して別個に給電及び/又は結合され、ひいては更なる物理的空間を必要とする。本開示は、マルチコアSOC処理アーキテクチャーにおけるデータの処理に適用される。そのようなSOCは、複数の中央処理ユニット(CPU)又はコアと、メモリとを備える。様々な場合に、SOCデバイスは、任意の特定の市場セグメントを特別に対象としていない任意のチップ設計を含むことができる。SOCは、単純なSOC、コンパニオンチップ又は複雑なSOCとすることができる。
【0025】
マルチコアSOCは、いくつかの例において、いくつかの実行コアを備えてもよく、実行コアのそれぞれが、いくつかのプロセッサとしてプログラム命令を読み出し、実行する。コアは、キャッシュを共有する場合もしない場合もあり、いくつかの例では、メッセージの受け渡し又は共有メモリコア間通信方法を実施することができる。いくつかの場合、各コアが専用L1キャッシュを有する。いくつかの場合、様々なコアが同じL2キャッシュを共有する。いくつかの例において、同種マルチコアSOCは、同一のコアのみを含む。いくつかの例において、異種マルチコアSOCは、同一でないコアを含む。
【0026】
いくつかの場合、特定の割り込みコントローラー(例えば、ARMプロセッサにおいて、グローバル割り込みコントローラーと呼ばれる)が、マルチコアSOCのコア間の割り込みルーティング、及びプロセッサ間割り込みを提供する。
【0027】
いくつかの場合、RAM(ランダムアクセスメモリ)及びデバイス周辺機器(例えばUART(汎用非同期受信機-送信機)又はネットワークインターフェース)を、異なるCPU又はコア間で共有することができる。いくつかの場合、いくつかのコアが同じ周辺リソースに同時にアクセスしているとき、何らかのメモリ又はデバイスのボトルネックが生じる場合がある。
【0028】
例えば図1に表されるように、本開示は、マルチコアSOC処理アーキテクチャーにおいてデータを処理する方法100に適用され、この方法は、例えば、ブロック101におけるように、SOCの媒体アクセスコントローラー(MAC)からリアルタイムオペレーティングシステム(TROS)のネットワークインターフェースコントローラー(NIC)において入力フレームを受信することを含み、RTOSはSOCの第1のコアにおいて実装される。
【0029】
RTOSは、データが受信される際にデータのリアルタイム処理を提供するように意図されたオペレーティングシステムである。RTOSの例は、数ある中でも、FREERTOS(商標)、RTEMS(商標)を含む。RTOSの特性は、タスクをスケジューリング及び完了する際の一貫性レベルである。本明細書において用いられるとき、タスクは、RTOS上で実行されているアプリケーション、又は割り込みサービスルーチン(ISR)等によって呼び出すことができるオペレーティングシステム動作とすることができる。その実行時間は、タスクの単一実行のための時間である。いくつかの場合、タスクは、タスクが完了しなくてはならない関連する期限を有する。期限に遅れることは、タスクの実行がタスクの期限前に完了しない場合のシナリオである。代替的に、又は加えて、期限は、タスクの或る特定の数の起動期間を含む。電力ステアリングシステム(EPS)において用いられているもの等のハードRTOSでは、タスクタイミング及びタスク期限が重要な役割を果たす。本開示によれば、RTOSは、SOCの第1のコアにおいて実装される。いくつかの場合、SOCの第1のコアにおいて他のOSは実装されず、第1のコアにおいて実装される唯一のOSがRTOSである。
【0030】
RTOSは、リアルタイムシステムに関するタスクの処理に特に適することができる。リアルタイムシステムは、インタラクティブなリアルタイムプロセスのセットとみなすことができ、各リアルタイムプロセスは、期限前を意味する有限時間内に、外部イベントに応答して何らかの反応を生成する。
【0031】
システムは、以下のカテゴリのうちの1つにおいて分類することができる。
-非リアルタイム。非リアルタイムシステムは、期限が関与しないシステムである。RTOSは、本開示によれば非リアルタイムシステムではない。
-ソフトリアルタイム。ソフトリアルタイムシステムは、期限を満たさないことが望ましくない影響を有する場合があるが、システムによって許容され得る、例えば性能劣化につながるシステムである。換言すれば、ソフトリアルタイムシステムは、平均的な事例において期限を満たすことができる。Linux(登録商標)OSカーネルは、例えば、FIFO(先入れ先出し)又はラウンドロビンプロセススケジューリングを実施することに起因して、このカテゴリに関するものとして分類することができる。RTOSは、本開示によればソフトリアルタイムシステムではない。
-ファームリアルタイム。まれに期限に遅れることが許容可能であるが、システムサービス品質が劣化する場合がある。システムは、タスクの失敗の間隔が適切に空いている限り、タスクの失敗を切り抜けることができる。ファームRT(リアルタイム)システムは、例えば、ハードリアルタイムに近づくように改善されたソフトRTシステムである。大抵の場合、システムによって保証される厳密な期限は存在しない。PREEMPT_RTパッチを有するLinux(登録商標)カーネル、又はXenomaiがこのカテゴリの一部である。RTOSは、本開示によればファームリアルタイムシステムではない。
-ハードリアルタイム。ハードリアルタイムシステムは、期限を満たさないことが重大な影響を有し得るシステムである。FreeRTOS又はRTEMS等のリアルタイムOS(RTOS)がこのカテゴリの一部である。いくつかの場合、Linux(登録商標)等のOSと異なり、これらは比較的少ないサービスを提供し、そのような少ないサービスは、いくつかの場合、タスク/プロセスのスケジューリング及び割り込みに関係している。RTOSは、ハードリアルタイムシステムとすることができる。
-絶対リアルタイム。絶対リアルタイムシステムは、外部イベントに対する応答時間が固定され、同じままである(数ns又はナノ秒以内)システムである。FPGA(フィールドプログラマブルゲートアレイ)又はCPLD(複雑なプログラマブル論理デバイス)等のいくつかのプログラム可能なハードウェアベースのシステムがこのカテゴリにある。RTOSは、絶対リアルタイムシステムではない。
【0032】
いくつかの場合、RTOSは、割り込みプロセスの慎重な実施によって適切な性能を達成することができる。いくつかの場合、RTOSは、CPU速度に依拠して、及びHW(ハードウェア)割り込みを生成する周辺デバイスの複雑度に依拠して、数psの最大レイテンシを達成することができる。いくつかの場合、RTOSは、一般的に静的に定義し、RTOSにバインドすることができるタスクの制限されたセットをサポートする。いくつかの場合、RTOSは、ファイルシステム又はメモリマネージャー等のサービスを提供しない場合がある。いくつかの場合、RTOSによってサポートされるアプリケーションの複雑度は限定される。いくつかの場合、RTOSアプリケーションを開発、試験及び/又は維持するのに必要な時間及びコストは、カーネル空間及びユーザー空間を含むOS等の汎用OSを用いてアプリケーションを維持するよりも高い。
【0033】
媒体アクセスコントローラー(MAC)は、物理的伝送媒体へのアクセスを制御する機能を提供する。MAC機能のうちのいくつかは、プロセッサ上で実行されるソフトウェアにおいて実装される。いくつかの場合、ユーザーデータプレーン、特に、PHYイーサネット(イーサネット物理層コンポーネント)との間の送受信に関するMAC機能は、ハードウェアにおいて実装される。MACは、個別ロジック、メモリ、マイクロプロセッサ及び/又はそれらの組み合わせとして基板上で実装される。MACは、暗号化/復号化、パケットのセグメンテーション/リアセンブリ、チャネルアクセス(例えば、アービトレーションを含む)、及びアドレスフィルタリングの機能を実行するようにアレンジされる。いくつかの例において、MACは、イーサネットMACのための10BASE-T/100BASE-TX802.3等のIEEE規格に準拠するイーサネット媒体アクセスコントローラー(EMAC)周辺機器を含み、10/100Mbpsデータ伝送レートをサポートする。いくつかの場合、EMACはIEEE802.1Q VLANタグ検出をサポートすることができる。いくつかの場合、EMACは、精密なネットワーク制御されたクロック同期又はギガビット速度のためにIEEE1588-2008をサポートすることができる。いくつかの場合、EMACは、IEEE802.1qbv(時間認識スケジューラー)、又は時間ベースの送出(すなわち、所与の時点にフレームを送信する能力)等のいくつかのIEEE TSN拡張をサポートする。
【0034】
ネットワークインターフェースコントローラー(NIC)ブロックは、メッセージの受信及び送信のために用いられるMACキューの管理を担当する。NICブロックは、入力メッセージ及び出力メッセージをバッファリングし、高レベルのインターフェースを提供する。加えて、NICは、ローカルコンピューティングリソースメッセージ統計を収集することができる。これは、送信、受信及びブロックされたメッセージの数を追跡することを伴うことができる。NICの役割は、RTOSに通信リソースの統一ビューを提供することとすることができる。例えば、NICにおいて収集されるメッセージ統計をNICによって処理し、RTOSが実装されるSOCの第1のコアに通信することができる。いくつかの例において、NICは、RTOSの分散部分とみなすことができる。
【0035】
いくつかの場合、本開示による方法は、イーサネットTSN要件のコンテキストで適用することができる。TSNは、標準イーサネットにおける決定性メッセージング(deterministic messaging)を提供するための、IEEE802.1が定義した標準技術に対応する。(RTOSタスクに関係するもの等の)リアルタイム(RT)フレームのオンタイム送達の提供は、IEEE802.1Qbv規格に従うことができる。IEEE802.1Qbvは、(非RTOSタスクに関係するもの等の)非RTイーサネットフレームが、(RTOSタスクに関係付けられた)RTフレームの周りで、ベストエフォートベースで送信されることを可能にしながら、スケジュールに沿って或る特定のTSNイーサネットフレームを送信することに関する。全てのネットワークノードが同期されている場合、IEEE802.1Qbvは、(RTOSタスクに関係する)重大な通信を、非常に迅速に、かつ送達時のジッターを非常に低くして送達することができる。IEEE802.1グループによって定義される異なるTSN規格は、以下の3つのコンポーネントカテゴリにグループ化することができる。
-時刻同期:TSNネットワークにおける時刻は、1つのマスターソースから全てのネットワークノードに配信することができる。いくつかの場合、これは、イーサネットフレームを利用して時刻同期情報を配信する、IEEE1588高精度時刻同期プロトコル規格を用いて行われる。
-スケジューリング及びトラフィックシェーピング:スケジューリング及びトラフィックシェーピングは、同じネットワークにおける、異なる優先度を有する異なるトラフィッククラスの共存を可能にする。TSNは、ソフトリアルタイム要件及びハードリアルタイム要件を用いた適時の送達を確実にするメカニズムを追加することによって、イーサネット通信を向上させることができる。
-通信経路、経路予約及びフォールトトレランスメカニズムの選択。
【0036】
いくつかの場合、異なる優先度についてスケジューリングコンポーネントに焦点を当てることによって、ユーザーは、様々なアクセス制御及びスケジューリングメカニズムから、イーサネットフレームが処理される方法を選択することができる。それによって、(IEEE802.IQ規格によって定義された厳密な優先度スケジューラー等の)既存の方法、又はIEEE802.1Qbv規格によって定義された時間認識トラフィックスケジューラー等の何らかの新たな処理方法に、何らかの優先度を割り当てることができる。この時間認識スケジューラーは、イーサネットネットワークにおける通信を固定長の複数の繰り返し時間サイクルに区分するように設計される。これらのサイクル内で、イーサネット優先度のうちの1つ又は複数に割り当てることができる異なる複数のタイムスライスを構成することができる。このメカニズムを用いることで、厳しいリアルタイム制約を有するトラフィッククラス(RTOSタスク等)のためのイーサネット伝送媒体に排他的使用を与えることが可能になる。この排他的アクセスは、イーサネットスイッチ伝送バッファーにおけるバッファリング効果をなくし、時間が重要なトラフィック(RTOSタスクに関係するもの等)を、非決定性割り込みなしで送信することができる。タイムスライスは、仮想通信チャネルとみなすことができ、時間が重要な通信(RTOSタスクに関係する)を、重要でないバックグラウンドトラフィック(非RTOSタスクに関係する)から区分することを可能にすることができる。
【0037】
本開示によれば、MAC及びNICはSOCにおいて実装される。MAC及びNICは、処理されるデジタルデータを含む入力フレームを処理しており、入力フレームは、SOCの外部のコンポーネントから入力される。本明細書に記載のように、入力フレームのSOCにおけるルーティングは、SOCのMACからSOCのNICに進む。いくつかの例において、入力フレームは、SOCの外部のコンポーネントからSOCのMACに直接入力される。SOCの外部のコンポーネントはバスとすることができる。いくつかの例において、入力フレームは、MACからNICに直接ルーティングされる。
【0038】
例えば図1に表されているような本開示によれば、入力フレームは、例えばブロック102におけるように、RTOSのNICからRTOSのフレームプロセッサに送信される。RTOSのフレームプロセッサまでの入力フレームのルーティングにより、入力フレームの処理に対するRTOS制御が可能になる。このように進めることにより、時間が重要な処置を要する入力フレームが実際にRTOSに到達することが確実になる。いくつかの例において、SOCに入力される全てのフレームが、SOCのMACへ、SOCのNICへ、そしてRTOSのフレームプロセッサへこの順序で送信される。第2のOSによる処理に関係付けることができる入力フレームも、本開示によれば、RTOSのフレームプロセッサにルーティングされる。そのようなプロセスは、RTOSによるタイムセンシティブなタスクの処理を危険にさらすことなく第2のOS等の汎用OSによるタスクのハンドリングを可能にする。
【0039】
例えば図1に表されているような本開示によれば、入力フレームは、例えばブロック103におけるように、少なくとも、RTOSタスクに関係付けられた第1のクラスと、非RTOSタスクに関係付けられた第2のクラスとを含む分類に従って、フレームプロセッサにおける構文解析及び分類にサブミットされる。いくつかの場合、構文解析は、入力フレームにおいて提供されたデータの構造表現を提供することを含む。少なくとも、RTOSタスクに関係付けられた第1のクラスと、非RTOSタスクに関係付けられた第2のクラスとを含む分類による入力フレームの分類は、タイムセンシティブ性に応じて少なくとも2つの異なるカテゴリにおいて入力フレームを区分することが可能になる。いくつかの場合、2つのクラスは、RTOSによる更なる処置のための特にタイムセンシティブなタスクと、第2のOSによる処置のためのあまりタイムセンシティブでないタスクとの間で入力フレームを区分するのに十分とすることができる。いくつかの例では、分類の粒度を高めるために、追加のクラスを提供することができる。
【0040】
例えば図1に表されているような本開示によれば、第1のクラスに分類された入力フレームは、例えばブロック104におけるように、フレームプロセッサから、RTOSのシーケンサーによって実行される1つ以上のタスクに送信される。RTOSのシーケンサーによって実行されるそのような1つ以上のタスクはRTOSタスクである。シーケンサーは、RTOSが実装されているプロセッサを1つのマイクロ命令から別のマイクロ命令に制御するか又は進めさせることができ、これによって、シーケンスによって決定された順序で第1のクラスに分類された入力フレームを処理することになる。そのような処理は、そのような入力フレームに関係するタスクのタイムセンシティブ性が守られることを確実にすることができる。3つ以上のクラスを用いるいくつかの例において、いくつかの他のクラスに分類された入力フレームは、RTOSのシーケンサーによって実行される1つ以上のタスクに送信することができる。第2のクラスに分類された入力フレームは、タイムセンシティブでないタスクについてRTOSの処理能力を用いることを回避するために、RTOSのシーケンサーによって実行される1つ以上のタスクに送信されるべきでない。したがって、第2のクラスに分類されたそのような入力フレームは、第2のOSによってハンドリングされる。
【0041】
例えば図1に表されているような本開示によれば、第2のクラスに分類された入力フレームは、例えばブロック105におけるように、フレームプロセッサから、SOCの第2のコアにおいて実装される第2のオペレーティングシステム(OS)のネットワークデバイスドライバーに送信され、第2のOSは、カーネル空間とユーザー空間とを備える。第2のOSは、いくつかの例において、コンピューティングタスクの一般使用に適したOSであり、すなわち、RTOS等のタイムセンシティブなタスクをハンドリングするために予約されたOSではない。これが、第2のOSがカーネル空間及びユーザー空間を含む理由である。第2のOSは、特に自身のユーザー空間において、多岐にわたるアプリケーションを実施することができる。第2のOSは、例えばRTOSのフレームプロセッサと第2のOSをインターフェースさせることを可能にするネットワークデバイスドライバーを備える。RTOSのフレームプロセッサは、実際に、特にタイムセンシティブなときのRTOSによる処理のために、又は他の形での第2のOSによる処理のために、入力フレームを方向付ける選択的フィルタとみなすことができる。いくつかの例において、RTOSは、タイムセンシティブなタスクの処理に専用であり、RTOSはユーザー空間を含まない。いくつかの例において、RTOSは、RTOSカーネル空間においてアプリケーションを実行し、それによって、RTOS上で実行されるアプリケーションにRTOSの制御の増大をもたらし、RTOS上で実行する際の割り込みを低減するか又は更には防ぐ。これは、ユーザー空間を含み、それによって第2のOSのカーネル空間上で制御することができる割り込みに対する、第2のOSのユーザー空間上で実行されるアプリケーションの制御を制限する第2のOSと異なる。第2のOSは、SOC上で実装され、したがって、RTOSと同じSOC上で実装されるが、第2のOSはSOCの第2のコアにおいて実装され、したがって、RTOSが実装される第1のコアと異なるコアにある。これにより、第2のOSに利用可能な処理と、RTOSに利用可能な処理との優先権の衝突が回避される。SOCのコアは、同じタイプであってもよく、異なるタイプであってもよい。
【0042】
例えば図1に表されているような本開示によれば、例えばブロック106におけるように、第1のコアにおいて、RTOSのシーケンサーによって実行される1つ以上のタスクに送信される入力フレームが処理され、第2のコアにおいて、第2のOSのネットワークデバイスドライバーに送信される入力フレームが処理される。いくつかの例では、RTOS及び第2のOSは、異なるコアにおいて並列に機能する。RTOSは、自身のNIC及びフレームプロセッサを通じて、RTOSと第2のOSとの間の入力フレーム及び関連タスクのディスパッチ又は割り当てを制御するが、RTOS及び第2のOSは、本開示による分類によって割り当てられると自身のタスクを独立してハンドリングする。この独立した処理は、そうでない場合にタイムセンシティブなタスクに影響を与えるか、又はあまりタイムセンシティブでないタスクに過度の遅延を引き起こす衝突を回避する。
【0043】
例えば図1に表されているような本開示によれば、RTOSタスクに関係する出力フレームは、例えばブロック107におけるように、RTOSのシーケンサーによって実行される1つ以上のタスクからフレームプロセッサに送信される。そのような出力フレームは、RTOSが実装されている第1のコア等のコアに対するRTOSによるタスクの処理の結果として生じるデジタルデータを含む。いくつかの場合、出力フレームは、特定の入力フレームによる処理に対応するか又はこの処理によってトリガーされる場合があるが、これは必ずしも当てはまらない。本開示によれば、フレームプロセッサはRTOSのフレームプロセッサである。これは、本開示によるRTOSによるフレームフローの制御と一致する。
【0044】
例えば図1に表されているような本開示によれば、非RTOSタスクによって生成される出力フレームは、例えばブロック108におけるように、第2のOSのネットワークデバイスドライバーからフレームプロセッサに送信される。そのような出力フレームは、第2のOSが実装される第2のコア等のコアに対する第2のOSによるタスクの処理の結果として生じるデジタルデータを含む。ここでもまた、いくつかの場合、出力フレームは、特定の入力フレームによる処理に対応するか又はこの処理によってトリガーされる場合があるが、これは必ずしも当てはまらない。ここでもまた、本開示によれば、フレームプロセッサはRTOSのフレームプロセッサである。これは、出力フレームが第2のOSから生じる場合であっても、本開示によるRTOSによるフレームフローの制御と一致する。
【0045】
例えば図1に表されているような本開示によれば、出力フレームは、例えばブロック109におけるように、フレームプロセッサにおいて分類及びスケジューリングされる。これは、出力フレームレベルにおけるRTOSのフレームプロセッサの集中化の役割を実施する。実際に、いくつかの例において、RTOS及び第2のOSの双方から生じる全ての出力フレームを含む全ての出力フレームがRTOSの同じフレームプロセッサにルーティングされる。これは、特定のタイムセンシティブなタスクが相応して分類及びスケジューリングされ、これにより過剰な遅延を回避することを確実にする。
【0046】
例えば図1に表されているような本開示によれば、スケジューリングされた出力フレームは、例えばブロック110におけるように、フレームプロセッサからNICに、及びNICからMACに送信される。これにより、RTOS及び第2のOSタスクの双方のSOCに対する処理が完了し、そのようなタスクの処理は、入力及び出力の双方においてRTOSフレームプロセッサによって集中制御される。
【0047】
いくつかの場合、RTOSは、SOCの追加の第1のコアにおいて実装される。これは、例えば、処理ブロック106の加速を可能にすることができる。いくつかの例では、RTOSのフレームプロセッサは、RTOSが実装される第1のコアのうちの単一のコアによって制御される。第2のOSは、RTOSが実装される第1のコアにおいて実装されない場合がある。任意の追加の第1のコアは、第1のコアと同じであってもよいし、第1のコア又は他の追加の第1のコアと異なっていてもよい。
【0048】
例えば図2に表されているもの等のいくつかの場合、本開示による方法200は、図1に記載のブロック101~102、並びに、例えばブロック203におけるように、他のRTOSタスクに関係する1つ以上の他のクラスを含む分類に従ってフレームプロセッサにおいて入力フレームを構文解析及び分類することを含む。そのような1つ以上の他のクラスを導入することにより、分類に追加の粒度をもたらすことが可能になる。この例において、方法は、1つ以上の他のクラスに分類された入力フレームを、フレームプロセッサから、1つ以上の専用の他のRTOSの1つ以上の専用の他のシーケンサーによって実行される1つ以上のタスクに送信することであって、1つ以上の専用の他のRTOSは、SOCの1つ以上の専用コアにおいて実装されることを更に含む。これにより、1つ以上の他のクラスによって提供される追加の粒度を利用して、同じSOCにおいて実装される異なるRTOSに対しRTOS関連タスクの処理を並列化することができる。この例において、いくつかのRTOSは、SOCにおいてRTOSタスクを処理する位置にあることができるが、フレームの集中型のハンドリングを維持するために、単一のRTOSが本開示によるフレームプロセッサに関係付けられる。この例において、例えばブロック204に示すように、第1のクラス及び1つ以上の他のクラスに分類された入力フレームは、SOCの様々なRTOSのシーケンサーによって実行される1つ以上の専用タスクに送信される。この特定の例において、第2のクラスは、非RTOSタスクにリンク付けされたままであり、ブロック105におけるように、そのような非RTOSタスクは、第2のOSのネットワークデバイスドライバーに送信される。この場合、ブロック206によって示されるように、一方で、非RTOSタスクについて第2のOSにおいて、他方で、それぞれ第1のクラス及び1つの又は他のクラスに対応する様々なRTOSにおいて、処理が行われる。この例では、SOCの各RTOSは、割り当てられた対応するクラスを有するが、他の場合、RTOSに対応するそのようなクラスが、特にタイムセンシティブなものとして分類されたRTOSタスクに対応する限り、特定のRTOSが異なる複数のクラスをハンドリングしてもよく、異なる複数のRTOSが単一のクラスをハンドリングしてもよい。方法200の以下のステップは、ステップ107~110に類似しており、SOCの全てのRTOS及び第2のOSが、本開示によるフレームの集中型の処置を維持するために、自身の対応する出力フレームを、特定のRTOSに割り当てられた同じフレームプロセッサに返送する。
【0049】
いくつかの例において、第2のOSは、SOCの追加の第2のコアにおいて実装される。これにより、第2のOSのための追加の処理能力から利益を得ることが可能になる。しかしながら、第2のOSのこの実装は、RTOSのフレームプロセッサによるフレームの集中型ハンドリングに対し直接の影響を有しない。換言すれば、異なる第2のコアに対する第2のOSについてハンドリングされるタスクは、同じフレームプロセッサから生じる入力フレームに関係し、同じフレームプロセッサに送信される出力フレームに関係する。この例において、第2のOSが実装される第2のコアは、RTOSを実装するために用いられない。換言すれば、SOCに存在するいずれのコアもRTOS及び第2のOSの双方を実装することができない。
【0050】
例えば図3に表されているもの等のいくつかの場合、本開示による方法300は、図1又は図2に記載のブロック101及び102、並びに、例えばブロック303におけるように、非RTOSタスクに関係する1つ以上の他のクラスを含む分類に従ってフレームプロセッサにおいて入力フレームを構文解析及び分類することを含む。そのような1つ以上の他のクラスを導入することにより、分類に追加の粒度をもたらすことが可能になる。この例において、方法は、1つ以上の更なるクラスに分類された入力フレームを、フレームプロセッサから、SOCの1つ以上の専用の更なるコア上で実装される1つ以上の専用の更なるOSの1つ以上の専用の他の更なるネットワークデバイスドライバーに送信することであって、1つ以上の専用の更なるOSは、専用の更なるカーネル空間及び専用の更なるユーザー空間を含むことを更に含む。これにより、1つ以上の他のクラスによって提供される追加の粒度を利用して、同じSOCにおいて実装される異なるOSに対しOS関連タスクの処理を並列化することができる。そのような更なるOSは、それぞれ、カーネル空間及びユーザー空間の双方を含み、本開示による第2のOSの機能に類似した機能を可能にする。この例において、第2のOSに加えたそのような1つ以上の更なるOSは、SOCにおける非RTOSタスクを処理する位置にあることができる。この例において、第2のクラス及び1つ以上の他のクラスに分類された入力フレームは、例えばブロック305に示すように、SOCの様々なOSの専用ネットワークデバイスドライバーに送信される。この特定の例において、第1のクラスは、RTOSタスクにリンク付けされたままであり、ブロック104におけるように、そのようなRTOSタスクは、RTOSのシーケンサーによって実行される1つ以上のタスクに送信される。この場合、ブロック306によって示されるように、一方で、それぞれ第2のクラス及び1つの又は他のクラスに対応する非RTOSタスクについて第2のOS及び1つ以上の更なるOSにおいて、他方で第1のクラスに対応するタスクについてRTOSにおいて、処理が行われる。この例では、SOCの各OSは、割り当てられた対応するクラスを有するが、他の場合、OSに対応するそのようなクラスが、特にタイムセンシティブなものとして分類されていないOSタスクに対応する限り、特定のOSが異なる複数のクラスをハンドリングしてもよく、異なる複数のOSが単一のクラスをハンドリングしてもよい。方法300の以下のステップは、ステップ107~110に類似しており、SOCの全てのOS(第2のOSを含む)及びRTOSが、本開示によるフレームの集中型の処置を維持するために、自身の対応する出力フレームを、特定のRTOSに割り当てられた同じフレームプロセッサに返送する。
【0051】
図示されていないが、図2及び図3に示す構造を組み合わせた例を検討することができる。そのような例は、それぞれがカーネル空間及びユーザー空間を含むいくつかのOSのみでなく、いくつかのRTOSも含むSOCに適用することができ、各RTOS、並びにカーネル空間及びユーザー空間を含む各OSは、SOCの少なくとも1つの専用コアを割り当てられる。そのような構造において、本開示によれば、関連タスクのタイムセンシティブ性に応じて入力フレーム及び出力フレームの分類について多数のクラスを検討することができるが、そのような分類は、SOCの単一のRTOSに含まれる単一のフレームプロセッサの制御下に留まる。
【0052】
いくつかの例において、本開示による方法は、第2のOSのネットワークデバイスドライバーにおいて、RTOSのフレームプロセッサから排他的に送信された入力フレームを受信することを更に含む。これは、例えば、本明細書に記載の方法100、200、300、及び本明細書に記載の特徴を組み合わせた方法のうちの任意のものに適用することができる。入力フレームのルーティングに対するそのような制約により、そのようなルーティングがRTOSのフレームプロセッサの制御下に留まることが確実になり、それによって、タイムセンシティブなタスクをOCのRTOSによる処理のために適切に処置し、適時に送信することができることを確実にするのに役立つ。
【0053】
いくつかの例において、本開示による方法は、第2のOSのネットワークデバイスドライバーによって、出力フレームを、RTOSのフレームプロセッサに排他的に送信することを更に含む。これは、例えば、本明細書に記載の方法100、200、300、及び本明細書に記載の特徴を組み合わせた方法のうちの任意のものに適用することができる。出力フレームのルーティングに対するそのような制約により、そのようなルーティングがRTOSのフレームプロセッサの制御下に留まることが確実になり、それによって、タイムセンシティブなタスクを適切に処置し、本開示によるSOCのRTOSによる処理後、SOCの外部のコンポーネントに対して適時に送信することができることを確実にするのに役立つ。
【0054】
いくつかの例において、本開示による方法は、RTOSによって、及び第2のOSのカーネルによって、フレームデータを記憶するバッファーを共有することを更に含む。これは、例えば、本明細書に記載の方法100、200、300、及び本明細書に記載の特徴を組み合わせた方法のうちの任意のものに適用することができる。第2のOS及びRTOSが同じSOCに含まれることを考慮すると、フレームデータを記憶するバッファーのそのような共有は、結果として特に効率的なものとなることができる。フレームデータを記憶するそのようなバッファーは、実際に同じSOCに含めることもできる。そのような共有は、本開示によるSOCに含まれる1つ以上の更なるOS及び/又は1つ以上の更なるRTOSにも適用することができる。
【0055】
いくつかの例において、本開示による方法は、第2のOSからフレームデータを記憶するRTOSバッファーへのアクセスを防ぐことを更に含む。これは、例えば、本明細書に記載の方法100、200、300、及び本明細書に記載の特徴を組み合わせた方法のうちの任意のものに適用することができる。第2のOSからRTOSバッファーへのアクセスを阻止することは、例えば、RTOSタスクの所望のセキュリティレベルを確保することに寄与することができる。そのような選択的なアクセス制御は、本開示によるSOCに含まれる1つ以上の更なるOS及び/又は1つ以上の更なるRTOSにも適用することができ、各OS若しくは各RTOS、又はOSのグループ若しくはRTOSのグループが、特定のバッファーに対し排他的アクセスを有することができる。
【0056】
いくつかの例において、本開示による方法は、フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を入力フレームにアタッチすることと、入力フレーム及びアタッチされたストリームクラス識別子を、フレームプロセッサのキュー識別モジュールに渡すこととを更に含む。これは、例えば、RTOS、第2のOS、又は更なるRTOS若しくはOSに対応するOSの異なる複数のコアによる処理の前にキューの形成を編成することを可能にすることができる。そのようなアタッチ及び受け渡しは、例えば、示される方法100、200及び300のブロック103、203又は303に含めることができる。
【0057】
本開示による方法のいくつかの例において、フレームプロセッサは、動的に定義された分類規則を適用している。そのような規則のそのような動的な定義は、例えば、RTOSからのフィードバックメカニズム、第2のOSからのフィードバックメカニズム、SOCのコンポーネントからのフィードバックメカニズム、又はSOCの外部のコンポーネントからのフィードバックメカニズムのうちの1つ以上を用いて行うことができる。そのような動的に定義された分類規則は、例えば、全体的な柔軟性を得るために優先度を調整することができる。いくつかの例では、分類規則を動的に定義することは、クラス数を変更することを含む。いくつかの例では、分類規則を動的に定義することは、クラス数を低減することを含む。いくつかの例では、分類規則を動的に定義することは、クラス数を増加させることを含む。いくつかの例では、第2のOSのカーネル及びRTOSのアプリケーションの一方又は双方が、分類規則を動的に定義することに寄与している。例えば、第2のOS上で実行されているアプリケーションが、特定のトランスポートプロトコル及び何らかのサービス品質(QoS)要件を用いてデータを送受信する必要がある場合、十分なQoSを確実にする優先度を有するこのトランスポートプロトコルに新たなクラスを割り当てることができる。そのような動的に定義された分類規則は、例えば方法100、200及び300を含む、本明細書に記載の方法のうちの任意のものに適用することができる。
【0058】
本開示による方法のいくつかの例において、フレームプロセッサにおいて出力フレームを分類及びスケジューリングすることは、フレームプロセッサによって、分類規則に従って、ストリームクラス識別子を出力フレームにアタッチすることと、スケジューリングされた出力フレームのフレーム送信について、出力フレームのアタッチされたストリームクラスの時間及び優先度の双方に依拠して、スケジューリング規則を出力フレームに適用することとを含む。これは、例えば、RTOS、第2のOS、又は更なるRTOS若しくはOSに対応するOSの異なる複数のコアによる処理の後にキューの形成を編成することを可能にすることができる。そのようなアタッチ及び適用は、例えば、示される方法100、200及び300のブロック109に含めることができる。
【0059】
図4は、処理コア401及び402と、メモリ403と備える例示的なマルチコアシステムオンチップ(SOC)デバイス400を示し、処理コア401及び402は、本明細書に記載の方法のうちの任意のものに従って動作するように構成される。一例において、処理コア401は、RTOSを実装するSOC400の第1のコアである。この例において、処理コア402は、カーネル空間414及びユーザー空間416を含む第2のOSを実装している、SOC400の第2のコアである。この例において、SOCは、SOCの外部のコンポーネント(図示せず)から第1のコア401において実装されるRTOSのNIC413に入力フレームを送信するMAC404を備える。入力フレームは、本開示の方法に従って、NIC413から第1のコア401上で実装されるRTOSのフレームプロセッサ415にルーティングされる。本開示の方法によれば、フレームプロセッサ415は、本開示の方法に従って、入力フレームを、第1のコア401によって実装されるRTOSのシーケンサー417によって実行される1つ以上のタスク、又は第2のコア402上で実装される第2のOSのネットワークデバイスドライバー418に送信する。
【0060】
図4は、400等のマルチコアSOCデバイスの401及び402等の処理コアによって実行されると、処理コア401及び402に本明細書に記載の方法のうちの任意の1つを実行させる命令を含む、メモリ403等のコンピューター記憶媒体も示す。プロセッサ又は処理コア401及び402は、プロセッサ又は処理コア上で実行されているOS又はRTOSによって管理される計算のための電子回路を含むことができる。
【0061】
本開示によるコンピューター可読記憶装置は、実行可能な命令を記憶する任意の電子、磁気、光又は他の物理的記憶デバイスであり得る。コンピューター可読記憶装置は、例えば、ランダムアクセスメモリ(RAM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、記憶ドライブ、及び光ディスク等であり得る。本明細書によって説明されるように、コンピューター可読記憶装置は、本明細書によって説明される方法による実行可能命令で符号化され得る。
【0062】
記憶装置又はメモリは、本明細書によって説明されるような実行可能命令を記憶する任意の電子、磁気、光又は他の物理的記憶デバイスを含み得る。
【0063】
本開示によるいくつかの例において、単一のSOCにおける、サービス及びアプリケーションと、異種ネットワークQoS(サービス品質)要件、セキュリティ制約及び実施複雑度との組み合わせが対処される。いくつかの場合、単一のSOCにおいて、いくつかのアプリケーションは、強力なリアルタイム制約を有する場合があり、例えば、ネットワークイベントが生じるとき(例えば、メッセージの受信)、数psを超えるレイテンシをサポートすることができないことを意味する。この種のアプリケーションは、この場合、非常に低いレイテンシを得るように、RTOSを介して実施される。SOCは、リアルタイム要件を有しないか又はソフトリアルタイム要件を有する他のアプリケーションもサポートすることができる。これらの他の非RTOSアプリケーションは、頻繁な更新を伴う場合があり、ソフトウェアプラグインによって拡張される場合があり、複数のユーザー機能を含む。そのようなアプリケーションは、RTOSではなく、カーネル空間及びユーザー空間を有するという点で汎用である、いわゆる汎用OSにおいて実施することができる。そのような汎用OSは、本開示による第2のOSの一例である。
【0064】
いくつかのアプリケーション要件は、汎用OS(Linux(登録商標)又はVxWorks等)又はRTOSのいずれかの排他的使用によって満たされない場合がある。そのようなアプリケーションは、実際に、RTOSによるハンドリングのためのタイムセンシティブな態様と、RTOS単独でのハンドリングに適していない、複雑なよりタイムセンシティブでない態様(例えば、ユーザー空間を必要とする)との両方を含む。例は、制御ネットワークレイテンシアプリケーション、セキュリティアプリケーション、複数プロトコルスタックアプリケーション、又は異種能力(例えば、TSN機能を含む)とのHWイーサネットインターフェースの統合/抽出を含む。
【0065】
本開示の方法を用いることができる環境の例は、プログラマブル論理コントローラーからのコマンドを受信するスレーブとして動作する産業通信デバイスである。そのようなデバイスは、デイジーチェーントポロジにおいてイーサネット通信ネットワークを通じてPLCに接続することができる。そのようなデバイスは、以下のサービス及びアプリケーションを、括弧内に示されるRT(リアルタイム)要件と統合することができる。
-周期的通信及び強力なQoSの制約(レイテンシ、ジッター)を有する産業ネットワークプロトコル通信スタック(例えば、PubSub TSN)[ハードRT]、
-産業処理制御[ハードRT]、
-L2イーサネット切り替え[ハードRT]、
-ネットワーク管理プロトコル(例えばTSN管理)及びアプリケーション(例えば、構成/管理のためのウェブサーバー)[非RT]、
-産業ネットワーク管理プロトコル(例えば、OPC-UAクライアント/サーバー、OPC-UAは、オープンプラットフォーム通信統一アーキテクチャーを意味する)[非RT]、及び、
-第三者エッジコンピューティングプロセス[ソフトRT、非RT]。
【0066】
いくつかの場合、本開示による方法は、単一のマルチコア処理ユニットを有する汎用ハードウェアプラットフォーム上で異種ネットワークQoS及びセキュリティ要件を有する重大なアプリケーションを実施することを可能にする。いくつかの場合、本方法は、アプリケーションのための各実行環境の利点を組み合わせることによって、汎用オペレーティングシステム(Linux(登録商標)又はVxWorks等)を、第2のOS及びRTOSとして同時使用することに依拠する。第2のOS及びRTOSのそれぞれがコアの所定のセットに対し実行される。いくつかの場合、第2のOS及びRTOSは同じメモリ空間を共有する。いくつかの場合、第2のOS及びRTOSは、SOCのMAC及びRTOSのNIC等の同じネットワークインターフェースを共有する。統合されたネットワーク周辺デバイスのそのような共有は、より高速な性能及び/又は増大したセキュリティを提供することができる。いくつかの場合、RTOSは、例えば、汎用OSネットワークドライバーにおいて行われる、HWネットワークインターフェースの管理に関係するSW(ソフトウェア)ブロック(ネットワークインターフェースコントローラー)を実施する。
【0067】
いくつかの場合、入力フレームの受信時に、そうでない場合そのような特徴(例えば、Rx-Procサブブロック)をサポートしないHWネットワークインターフェースについてフレーム構文解析及び分類が実施される。異なるリアルタイム制約を有するネットワークアプリケーションをサポートするのに必要なイーサネットフレーム処理の優先度を導入することができる。
【0068】
いくつかの場合、出力フレームを送信するとき、複数の送出キューをサポートするフレーム分類器が提供される。フレーム分類器は、例えば標準的なHWネットワークインターフェースを有する、IEEE802.1Qbvにおいて定義されているもの等の優先度又は時間認識スケジューラーのSW実施を可能にすることができるフレーム送出スケジューラーと結合することができる。そのようなフレーム分類器及びスケジューラーは、Tx-Procサブブロックに含めることができる。
【0069】
いくつかの場合、第2のOSアプリケーションが、RTOSによって管理されるネットワークインターフェースを用いることを可能にすることができる汎用OSネットワークドライバーが提供される。このドライバーは、RTOS Rx-Procサブブロックから何らかのイーサネットフレームを受信し、イーサネットフレームをTx-Procに送信することが可能である場合がある。以下の例示的な方式の双方が、RTOS及び汎用OSのネットワークインターフェース共有に対処することができる。
-汎用OS(又は第2のOS)サービス及びアプリケーションのための高速伝送を可能にするRTOS管理メモリへの直接アクセスを可能にする1つの方式、及び、
-RTOS上で実行されている重大なネットワークタスクのためのセキュリティを強化する、汎用OS(又は第2のOS)によるRTOSメモリアクセスにデータコピー及び制約を適用する1つの方式。
【0070】
本発明によるマルチコアSOCデバイスの一例が図5に表されている。この例において、汎用OS(本開示において第2のOSとも呼ばれる)及び1つ以上のRTOSが同じネットワークインターフェースを共有する。この例では、汎用OS及びRTOSに専用のCPUコアの再区分が静的に定義される。コア#0へのリンクとして表されているが、汎用OSは、SMP(対称マルチプロセッシング)を用いて、2つ以上のCPUコアに対し異なるカーネル及びアプリケーションプロセスを動的にスケジューリングすることができる。別個のRTOSを複数の専用コア(図5のコア#1を含む)上で展開し、RTOSに専用の1つ以上のコア上でアタッチ及び実行されるタスクのリストを実行することができる。代替的に、RTOSに専用のコアのセット上で単一のRTOSが展開されてもよい。そのような場合、例えばFreeRTOS等の選択されたRTOSがSMPモードをサポートすることができる。この場合、RTOS及び第2のOS又は汎用OSの双方が同じメモリ空間を共有し、それによって、RTOSタスク及び汎用OSカーネル又は第2のOSカーネルが、キュー、フレームメタデータ、及びフレームデータバッファーのコンテンツにアクセスすることができる。この例において、汎用OS又は第2のOSにおいて実行されているネットワークメモリマネージャーは、この共有メモリ空間の管理、特に、受信されるフレーム又は送信されるフレーム、すなわち入力フレームを記憶するための空いているデータバッファーの提供を担当する。
【0071】
第1の場合として、いくつかのメモリエリアを汎用OSとRTOSとの間で共有することができ、それによって、RTOSにおいてNICによって操作されるフレームデータバッファーのコンテンツに、OSネットワークデバイスドライバーによってアクセスすることができる。そのような場合、汎用OSにおいて実行されるアプリケーションのより良好な性能を提供するデータコピーは必要とされない。第2の場合として、フレームデータバッファーは、特に、機密情報を保有する場合があるRTOSによって管理される非暗号化プロトコルについて、セキュリティを強化するためにプライベートメモリエリアに記憶することができる。その場合、汎用OSに対し意図され、それに応じてフレームプロセッサにおいて分類されるデータフレーム(入力フレーム)を受信するとき、追加のコピーステップが必要とされる場合がある。
【0072】
図5に示す例において、HWネットワークインターフェース(MACインターフェース)はRTOSによって制御される。RTOSに割り当てられるコアの数が2以上であるとき、単一のRTOSコアは、単一のNICとしてネットワークインターフェースを制御するように指定することができる。この場合、各NICは、例えばイーサネットブロックの受信/送信に用いられるHWキューの管理を担当する受信処理(入力フレームを処理するためのNIC-Rx)ブロック及び送信処理(出力フレームを処理するためのNIC-Tx)ブロックを含む。そのような処理は、受信(入力)フレーム又は送信(出力)フレームに関連するメタデータを含むいくつかのバッファー記述子(BD)を操作することを含むことができる。
【0073】
図5に示す例において、Rx処理ブロック(Rx-Proc、本開示によるフレームプロセッサの一部)は、受信したイーサネットフレーム又は入力フレームの解析を担当するネットワークプロトコルパーサー(TCP/IP/産業プロトコル等のイーサネット/高次レイヤ)を含む。構文解析結果に基づいて、各フレームが分類され、所与のキュー内に置かれる。Rx-Proc構成サブブロックを用いて、構文解析規則、及び分類プロセス後に受信入力フレームを記憶するのに用いられるキューを動的に定義/調整することができる。キューは、RTOS上で実行されているタスク、又は汎用OS若しくは第2のOSに対し実行されているアプリケーション若しくはプロトコルスタックに専用とすることができる。いくつかの場合、キューは、任意のデータコピーを回避して、フレームに関係するメタデータのみを含むことができる。いくつかの特定のRTOSタスクによって処理されるトラフィックのためにいくつかの専用キューを用いることにより、サポートされるアプリケーション及びサービスについて異なる処理優先度を管理することが可能になる。このため、RTOSシーケンサーは、より高い優先度を有するタスクが、より低い優先度を有するタスクよりも前に受信フレーム(入力フレーム)を処理することを確実にする。これは、単一のキューが用いられる場合には当てはまらない。
【0074】
図5に示す例において、RTOSタスク専用のキューは、次に、対応するRTOSタスクによって、到来するネットワークデータフレームを索出するようにポーリングされる。この方式において、異なるRTOSアプリケーションタスクが単一のトランスポートプロトコルを共有することができるように、TCP/IPスタック又は任意の他のプロトコルスタックを挿入することができる。汎用OS又は第2のOSのアプリケーション又はプロトコルスタック(すなわち、非RTOSタスクに関係する)に対し意図されたトラフィックに専用のキューは、汎用OS又は第2のOSのネットワークデバイスドライバーによってポーリングされる。次に、データフレームは、汎用(本開示によれば第2の)OSネットワークデバイスAPI(アプリケーションプログラミングインターフェース)を遵守して、例えば汎用OSネットワークバッファー(Linux(登録商標)においてソケットバッファー又はSKBと称される)にカプセル化される。
【0075】
図5に示す例において、送信処理(Tx-Proc)ブロック(本開示によるフレームプロセッサに含まれる)は、出力フレームとしての送信を待機する、RTOSアプリケーション又は汎用OS若しくは第2のOSのネットワークデバイスドライバーによって送信された保留中のフレームに関係するメタデータを記憶する送信キューのセットを含む。例えばTSN拡張を用いるとき、異なるスケジューリング戦略を用いてネットワークフレーム優先度を決定することができる。例えば、IEEE802.1Qbv規格のいくつかの実装は、8個のそれぞれの送信キューを用いた8つのトラフィッククラス(TC)間の分類に基づくことができる。本開示による方法のいくつかの場合、複数のキューが複数のクラスに対応する。他の実施態様は、ストリームごとに専用キューを割り当てる制約を有するストリーム分類(ストリームは、宛先アドレス及びVLAN(仮想ローカルエリアネットワーク)ID(識別子)の関連付けとすることができる)に依拠することができる。分類器サブブロック(本開示によるフレームプロセッサに含まれる)は、この場合、送信フレーム又は出力フレームを送出又は送信前に記憶することができるキューの選択を担当する。このタスクを実行するために、分類器は、VLAN優先度、ストリーム識別子等のようなフレームに関するいくつかのメタデータを用いることができる。例えば、分類器がトラフィッククラスをサポートする場合、分類器は、VLAN PCP(優先度コードポイント)及びマッピングを用いて、いずれのトラフィッククラスが所与のPCPに関連付けられるかを選択することができる。RTOSシーケンサーは、採用されたスケジューリング戦略を遵守するために出力フレームの送出の制御を担当する。例えば、IEEE802.1Qbv規格によって定義される時間認識スケジューラーが有効にされる場合、出力フレームは特定のタイムウィンドウにおいて送出される。これは、スケジューラーが特定の時点にフレームを送信することが可能であるべきことを意味する。RTOSの使用に起因して、多数のアプリケーションに十分であり得るPTP(精密時間プロトコル)クロックに基づくタイマー、及び精緻なキュー管理を組み合わせることによって、かなりの精度(<1ps)を達成することが可能である。分類及びマッピング規則、並びにスケジューリングパラメーターは、Tx構成サブモジュールを通じて動的に定義することができる。
【0076】
図5に示す例において、HWネットワークインターフェースに関係する割り込みは、大域割り込み制御モジュール(例えば、ARMアーキテクチャーにおいてGICと称される)によって管理される。このモジュールは、ネットワーク割り込みが、ネットワークインターフェースコントローラーを実行しているRTOSコアにルーティングされるようにプログラミングすることができる。
【0077】
図5に示す例において、RTOSタスクは、動的に作成することができ、RTOSシーケンサーによって、優先度によりスケジューリングすることができる。RTOSタスクは、RTOS-RXブロックにおいて定義されたキューをポーリングすることによって、データフレーム又は入力フレームを受信することができる。RTOSタスクは、データフレーム又は出力フレームを、RTOS-TXブロックに送信することによってそれらを送信することもできる。タスク処理は、データフレーム(入力フレーム)の受信によって、又は内部タイマーによってトリガーすることができる。
【0078】
図5に示す例において、PTPプロトコルを用いてローカルクロックをネットワーククロックに同期させる。PTP時間制御プロトコルは、非常に良好な精度(<100ns)を達成するためにハードウェアフレームタイムスタンプ処理に基づくため、いくつかのリアルタイム機能を必要としない。フレームが受信(入力フレーム)又は送信(出力フレーム)されるとき、MACは、フレームメタデータに受信/送信時間を追加する。いくつかの例では、IEEE1588機能をサポートするMACは、PTPクロックによってトリガーされたHWタイマーも提供する。この場合、PTP制御アプリケーション(PTPタイムクロックを調整するのに用いられる)は汎用OS又は第2のOS上で実行されている(例えば、プロトコル、サーボ制御アルゴリズム及びポータビリティの観点における柔軟性に起因する)が、PTPタイムスタンプ処理は、受信/送信時間を取得し、これらを、キューメカニズムを通じて汎用OSに報告するために、RTOSによってサポートすることができる。この例において、RTOS側でPTPタイマー制御も実施される。
【0079】
図6は、本開示によるフレームプロセッサの一部分の例を示す。この例において、RTOSフレームプロセッサのRx-Procブロックは、NICによって受信された入力フレームの処理を担当し、この入力フレームを、RTOSタスク(例えば、重大なネットワークタスク)、又は汎用OS若しくは第2のOSのカーネルネットワークデバイスドライバーによってポーリングされたRXキューのうちの1つにポストする。
【0080】
図6におけるNICは、入力フレームデータと、フレームサイズと、入力フレームが受信されたインターフェースのインデックス(又は識別子)を含むバッファーへの参照を提供する。
【0081】
図6において、入力フレームは、フレームプロセッサのパーサーサブブロックによって、例えばRx-Proc構成空間(オフセット位置及びサイズを有するフィールドのリスト等)において定義されたプロトコル及び符号化タイプを用いて構文解析される。解析されたプロトコルがTCP/IPプロトコルを介してトランスポートされるとき、VLAN ID、IPアドレス、TCP(伝送制御プロトコル)又はUDP(ユーザーデータグラムプロトコル)ポート等の関連パラメーターが抽出される。フレームデータ及び関連パラメーターは、フレームプロセッサのフレーム分類サブブロックに渡される。Rx-Proc構成空間において定義された分類規則を適用することによって、パラメーターを用いて入力フレームを分類する。この動作の結果として、ストリームクラス識別子が入力フレームにアタッチされる。フレーム及びストリームクラスIdは、フレームプロセッサのキュー識別サブブロックに渡される。ストリームクラス識別子を用いて、入力フレームが1つのRTOSタスク又は汎用OS若しくは第2のOSのカーネルネットワークデバイスドライバーによる更なる処理のためにポストされるキューが決定される。
【0082】
図7は、例えば、例示的なフレームプロセッサを形成するように図6に示す部分と結合することができる、本開示によるフレームプロセッサの一部分の例を示す。図7において、RTOSフレームプロセッサのTx-Procブロックは、RTOSネットワークアプリケーションタスク又は汎用OS若しくはソースOSのカーネルネットワークデバイスドライバーによって送信された出力フレームの処理を担当し、RTOSのNICのうちの1つに適時に出力フレームを送るか又は送信する。フレームプロセッサは、フレーム分類器を備え、サポートされる各NICのフレームスケジューラーも備える。
【0083】
図7において、分類器は、汎用OS若しくは第2のOSのカーネル又はRTOSタスクによってポストされた出力フレームを、VLANタグ又はフレームサイズ等の関連パラメーターと共に受信する。次に、フレームプロセッサは、データフレームから、例えばプロトコル定義を用いてMACアドレス等の出力フレーム分類に関連する何らかの追加情報を抽出する。次に、フレームプロセッサのフレーム分類サブブロックは、Tx-Proc構成空間において定義された分類規則からストリームクラスIdを決定することが可能である。
【0084】
図7において、ストリームクラスIdに基づいて、Tx-Proc構成空間において定義されたキューマッピング定義から、スケジューラーキューインデックスが決定される。例えば、TSN IEEE802.1Qbv時間認識トラフィックスケジューラーが4つのトラフィッククラス(TC)と共に用いられる場合、トラフィッククラスごとに1つずつ、4つのスケジューラーキューが定義される。本開示のいくつかの例によれば、キューの数は、スケジューラーのトラフィッククラスの数に等しい。
【0085】
図7において、スケジューラー構成は、NICごとの使用されるスケジューラーのタイプ、及び関連構成パラメーターを含む。この例において、構成パラメーターは、所与のTCを有する各出力フレームを送出又は送信することができる期間を定義する開/閉ゲートのリストを含む。この例において、スケジューラーの役割は、定義されたスケジューリング規則を適用し、NICに送信される次の出力フレームを選択することである。スケジューリング規則が優先度のみでなく時間に依拠するとき(TSN IEEE802.1Qbv時間認識トラフィックスケジューラー等)、スケジューラーは、高い優先度を有するRTOSタスクとして実施することができる。次に、出力フレームは、PTPクロックに基づいて厳密な所与の時点にNICに渡すことができる。
【0086】
いくつかの場合、セキュリティは、マルチコアSOCのために適切なメモリ管理によってハンドリングすることができる。いくつかの場合、汎用OS又は第2のOSは、SKBと称されるいくつかのバッファー記述子を操作して、データフレーム及びいくつかの関係メタデータ(パケット長)を操作することができる。SKBは、「ネットワークメモリマネージャー」と呼ばれるモジュールを介して汎用OS又は第2のOSのカーネルによって割り当て/解除することができる。本開示による例示的な方法は、汎用OS若しくは第2のOSのネットワークデバイスドライバーからの直接フレームバッファーアクセス、又は間接的フレームバッファーアクセスをサポートすることができる。
【0087】
本開示による例示的な方法によってサポートすることができる直接バッファーアクセスの例が図8に示される。
【0088】
図8において、直接バッファーアクセスは、フレームデータを記憶するために用いられるバッファーが汎用OS又は第2のOSとRTOSとの間で共有されるという意味で行われる。利点は、汎用OSとRTOS領域との間でデータコピーがないことによる、より高速なデータ処理である。RTOSネットワークインターフェースコントローラーは、図8に示すように、SKB(又はカプセル化された入力フレーム)を操作することができる。例えば図8に示すように、RTOSフレームプロセッサの内部キューは、SKBへの参照を記憶し、SKBの割り当て/解除を行うために汎用(又は第2の)OSメモリマネージャープリミティブを呼び出すことができる。これらのSKBは、RTOSと汎用(又は第2の)OSネットワークドライバーとの間で直接交換することができる。受信時に、SKB割り当ては、MACによって埋められた入力フレームをハンドリングするNIC-Rxサブブロックによって第2のOSメモリマネージャーに要求することができ、次に、(フレームプロセッサによる構文解析/分類後に)第2のOSカーネルネットワークスタックに渡すことができ、汎用OS又は第2のOSによって処理することができる。次に、SKBは、第2のOSのカーネルネットワークプロトコルスタックによって、カプセル化された出力フレームとして解除することができる。出力フレームの送信時、第2のOSカーネルネットワークプロトコルスタックは、SKBを割り当て、これらをRTOSフレームプロセッサに送信する。SKB解除は、イーサネットフレームがネットワークインターフェースによって効率的に送信されると、NIC-Txサブブロックによって第2のOSメモリマネージャーに要求される。そのような例示的な方法の潜在的制約は、RTOS及びサポートされるアプリケーションによって用いられるフレームデータバッファーにメモリアクセスを制約することの難易度に関係付けることができる。これは、これらのアプリケーションが暗号化をサポートしないときに関連することができる。別の潜在的な制約は、いくつかの場合、RT要件に準拠しない場合があるRTOSにおいて、動的SKB割り当て/解除手順の呼び出しを引き起こすことであり得る。
【0089】
本開示による例示的な方法によってサポートすることができる間接的バッファーアクセスの例が図9に示される。
【0090】
間接的なバッファーアクセス方式の図9に示す例において、RTOSフレームプロセッサは、RTOSタスクによって排他的に達成可能なネットワークバッファー(NetBuf)を扱う。この例において、RTOS NetBufマネージャーを用いてNetBufを管理し(割り当て及び解除動作等)、入力及び出力フレームのSKBカプセル化/脱カプセル化動作を行って、フレーム(例えばイーサネットフレーム)を汎用(又は第2の)OSネットワークドライバーと交換する。図9に示すように、そのような動作中、フレームデータは、SKB脱カプセル化/カプセル化ブロックによってNetBufとSKBとの間でコピーされる。
【0091】
図9の例における入力フレームの処理は、入力フレームの受信時にNIC-Rxによって割り当てられ、HW MACによって埋められたNetBufを含む。そのような入力フレームは、この例において、構文解析及び分類動作を行うRx-Procによって処理され、キューを介してOSネットワークドライバーに渡される。キューは、NetBuf及び関係メタデータ(例えば、パケット長等)への参照を記憶する。SKBは、「SKBカプセル化」サブブロックによって割り当てられ、データはNetBufからSKBにコピーされ、NetBufが解除される。この例において、送信時、NetBufは、汎用OSカーネルネットワークプロトコルスタックによって送信される任意のフレームについて、SKB脱カプセル化によって割り当てられる。データはSKBからNetBufにコピーされ、NetBufは、出力フレームとしてRTOSフレームプロセッサ(Tx-Proc)に渡され、関係SKBが解除される。NetBufは、MACによって送信されると、出力フレームとしてNIC-Txサブブロックによって解除される。
【0092】
図9に示す方式の利点は、RTOSメモリがプライベートであり、例えばARM TrustZone等のHWセキュリティメカニズムによって保護することができることである。これにより、汎用(第2の)OS側からネットワークバッファーにアクセスすることが阻止される。別の利点は、NetBuf割り当て/解除に用いられるルーチンを、RT実装のために最適化することができることである。可能な実施は、セットアップ時に行われた静的バッファーの割り当てと、バッファーの割り当てのためにキューから取り出され、バッファーが解除されるときにキューに入れられる空きバッファーリストとに依拠することを含む。そのような方式は、汎用(第2の)OSによって受信された入力/送信された出力フレームごとにフレームデータコピー動作を追加する。この方式は、例えば、セキュリティが関心事であるとき、特に、RTOSアプリケーションによって用いられる通信プロトコルがセキュア化されていないとき(すなわち、暗号化なし、認証なし)に利用することができる。この方式は、汎用(第2の)OS上で実行されているアプリケーションが、帯域幅の観点で低減した性能要件を有するか又は性能要件を有しないときにも選択することができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9