プロセッサシールド
プロセッサシールドとは、米国に本社を置くコンカレント・コンピュータ(Concurrent Computer)が開発、販売するリアルタイムオペレーティングシステム(RTOS)、RedHawk Linuxに実装されている割り込みの副作用を回避する方法である。
概要
[編集]プロセッサシールドあるいは、CPUシールド(CPU shield)とは、SMPシステムにおいて、任意のプロセッサ(CPU)の割り込みを禁止することで、リアルタイム性を保証する方法である[1]。
この手法は、コンカレント・コンピュータのCX-UXやMASSCOMPのリアルタイムUNIX(RTU)等のSVR3系のリアルタイム化されたUNIXに最初に実装され、その後、同社のPowerMAX OSやSunのSolaris、SGIのREACT[2]等のSVR4.2MPUNIX System V系のUNIXに実装された。[3]
コンカレント・コンピュータは、NovellのSUSE Linux Enterprise Real Time10に対して、このシールドを含めたリアルタイム機能を提供した[4][5]が、Novellは、その後の版で、独自実装のリアルタイム拡張cset[6]を提供している。
SUSEのリアルタイム対応に対抗して[7] 、RedHatは、RedHat MRGを開発し、この製品にもCPU shiledの機能が含まれている[8]。
この手法を適用する条件は、SMPあるいは、マルチコアであり、割り込み信号の割付を変更出来ることにある。
一般的に、割り込み信号には、システムタイマー割り込みとデバイス割り込みが存在し、前者はラウンドロビン・スケジューリングのトリガーに使用され、後者は、入出力のスケジューリングのトリガーに使用される。
リアルタイム処理を行っているプロセスあるいは、スレッドやタスクに対して、この割り込みが発生すると、ジッターと呼ばれる処理時間の変動を生じる。
また、トリガーによって起動されるべきタスクの起動時間も多重割り込みによって、応答時間の遅れやジッターが発生する。
このように、割り込みは、リアルタイム処理に必須のものでありながら、その副作用は大きなものであるため、古くからの研究テーマであった。
マルチプロセッサ(あるいはマルチコア)を利用して、割り込み処理を専用に行なうプロセッサと、リアルタイムアプリケーションを行うプロセッサを分ける事により、この割り込みの副作用を排除する手法がプロセッサシールドである。
呼び方
[編集]プロセッサシールド(Shielded Processors)は、製品によって呼び方が異なる。
コンカレント・コンピュータでは、モトローラ製プロセッサの場合にShielded Processorsと呼ぶが、x86系CPUの場合にはShielded CPUと呼んでいる。(コンカレント・コンピュータに買収された旧MASSCOMP社のRTUでは、Reserved Processorと呼んでいた)。
同様に、NovellとRedHatではShielded CPUと呼ぶが、SGIでは、sgi-shield[9]と呼び、Sunでは、Reserved CPUあるいは、Reserved Processor[10]と呼んでいた。
しかし、各製品での呼称は異なっても、プロセッサ(CPU)を割り込み専用あるいは、リアルタイムアプリケーション専用に予約(Reserved)し、割り込み等の副作用から保護(Shield)する機能という点では同一のものといえる。
実装
[編集]SVR4.2MP系のシステムでは、UNIXの再コンフィグレーションで、割り込みを行うプロセッサ(あるいはCPU)を決定していた。(たいていはブートプロセッサが割り込みを処理する)
RedHawk Linuxあるいは、SUSE Linux Enterprise Real Timeでは、コマンド・システムコールあるいは、/proc/irq/番号/smp_affinityを変更することで、動的に割り込みを処理するプロセッサを変更することが可能である。
/proc/irq/番号/smp_affinityを変更する方法は、Linux 2.6カーネルを利用しているその他のLinux(RedHat MRG, SUSE Linux RT)等でも利用可能であるが、システムタイマーを停止する事が出来るのは、RedHawk Linuxのみである。
関連項目
[編集]脚注
[編集]- ^ Shielded CPUs: Real-Time Performance in Standard Linux
- ^ sgi-shield: ハードリアルタイム対応 CPU Isolation 機能
- ^ The Use of POSIX in Real-time Systems, Assessing its Effectiveness and Performance
- ^ Concurrent Real-Time Extensions
- ^ SUSE Linux Enterprise Real Time Users Guide
- ^ Quick Start SUSE Linux Enterprise Real Time Extension 11 SP1
- ^ Red Hat and Novell duke it out in real time There's money in them thar milliseconds By Timothy Prickett Morgan
- ^ RHEL-RT_AffinityHowto
- ^ REACT Real-Time for Linux Programmers Guide
- ^ POSIX in Real-Time