第12世代インテル® Core™ プロセッサー(開発コード名:Alder Lake)以降のCPUでは、従来の同一構成のコアによる設計から、高性能なPerformance-cores(以下、Pコア)と省電力に優れたEfficient-cores(以下、Eコア)の2種類のコアを組み合わせた「ハイブリッド・アーキテクチャー」が採用されています。
ハイブリッド・アーキテクチャーにより処理負荷や電力効率に応じてPコアとEコアを使い分けることで、性能と省電力を両立した動作が行われますが、リアルタイムOS「INtime」を利用してシステムを開発する際にはPコアとEコアの特性差や論理コア番号の割り当て順序を理解した上で、適切なカーネル配置やアプリケーション配置を行うことが重要となります。
本ガイドラインでは、INtimeをPコア / Eコア搭載PC上で利用する際に留意すべき基本的な考え方や、CPUコアの割り当てに関する注意事項について説明します。
リアルタイムシステムの開発者はアプリケーションプログラムが制御周期を超えることがないように配慮する必要があります。高速な制御周期が必要とされるシステムでは、プログラムの実行時間をできる限り短縮することが重要な課題となります。INtimeではCPUに搭載されているPコアとEコアの特性を活かすことで、この課題に対応することが可能です。
Eコアが無駄になってしまいますがベースクロックの高いPコアを活用することで、アプリケーションの実行時間を短縮できる効果が期待できます
なお、産業用PCの中にはPコアのみを搭載したCPU(例:Core i5-12500E、Core i3-13100E など)を採用したモデルも販売されています。
INtimeのシングルコア構成では実現が困難な制御周期が求められる場合でも、INtimeが持つマルチカーネル機能を活用することで、処理を複数のコアに分散し、解決を図ることが可能です。
例えば、最も処理負荷の高い処理をPコア上のINtimeカーネルに割り当て、それ以外のメイン制御処理、EtherCATマスタ通信、モーション制御処理などをEコア上のINtimeカーネルに分散することで、要求される制御周期を実現する構成が考えられます。
下記の周期性能データは、INtimeを 『 500μ秒 』 インターバルで 『 30分間 』 測定したデータです。
※論理コア14と論理コア15の違い
ハイパースレッディング有効時にINtimeを論理コア15で実行した際は論理コア14ではWindowsが動作している。
PコアとEコアでINtimeアプリケーションを実行した場合、処理時間に差が生じます。
次のデータは浮動小数点数演算を含む3次方程式を実行するサーバータスクにおける1秒間の実行回数を測定した結果です。秒間のサービスタスク要求回数をベンチマーク値(回数/S)とします。
EtherCATマスタ通信をPコアとEコアで実行したときの実行時間を計測しました。
以下に示す処理時間は、EtherCATマスタ「RSI-ECAT」により、1台のスレーブを接続した状態でのプロセスイメージ通信にかかる処理時間を示しています。この処理時間は、EtherCATマスタによるプロセスイメージ処理の開始から、パケットの送信、返信パケットの受信、そして受信データの取り込みまでを含んだ一連の処理全体に要する時間を表しています。
INtimeでは、図3の「Node Management」画面にて、CPUコアへのINtimeカーネルの割り当て設定を行います。
図中の赤枠で示されている項目が、割り当て設定を行う箇所です。なお、例として表示されているPCはCore i7-12700を搭載しているため、「Automatic」と「1~19」の設定項目が表示されています。
「Automatic」に設定されている場合は、論理コア番号(OS上で認識されるCPU番号)が最も大きいコアにINtimeカーネルが自動的に割り当てられます。なお、任意のコアに対して個別に割り当てを指定することも可能です。
INtimeカーネルのコア割り当て設定が「Automatic」になっている場合、論理コア番号(OS上で認識されるCPU番号)が最も大きいコアに自動的に割り当てられます。 CPU : Core i7-12700 (8P + 4E構成)。
INtimeカーネルのコア割り当て時に個別に論理コア番号を自由に設定することができます。なおそれ以降のコアは無効になります。 CPU : Core i7-12700 (8P + 4E構成)。
Windowsは利用するコア数が少ないほど、Windowsの起動時間および起動後のWindows上で実行するアプリケーションの動作に影響を与える場合があります。また、INtimeはWindows起動後にINtimeカーネルが起動するため、INtimeの起動時間にも影響を及ぼします。実際の症例としてWindowsの利用コア数を1つに設定した場合、極端に起動時間が遅くなるという症例が報告されております。
そのためINtimeに割り当てるコア数を設定する際には、Windows側に十分なコア数を残すようご配慮ください。