第8回 IPアワード発表会
2006年5月18日

機能分散マルチプロセッサ用リアルタイムOS
TOPPERS/FDMPカーネル

本田 晋也
名古屋大学 情報科学研究科
honda@ertl.jp
1

組込みシステムにおけるマルチプロセッサの利用
マルチプロセッサシステムの広がり
従来から複数のプロセッサを使用したシステムは存在性能が必要な一部のシステムで使用規模や消費電力の関係で一般の組込みシステムでは用いられてることはな
かった
オンチップマルチプロセッサの出現により利用が広がる
オンチップマルチプロセッサ（マルチコア型プロセッサ）
複数のプロセッサコアを1チップに集積
MeP, MPCore, UniPhier, FR1000, MP211, Cell
低消費電力化で高性能を実現するためには、高速なシングルプロセッサ構
成より、低速なマルチプロセッサ構成が有利
専用回路から柔軟性をもったプロセッサによる実現
CODEC等の複雑な処理を専用回路で実現するは困難
仕様が定まる前から開発を開始するため，完成時には仕様が変更される可能性があるが，ソフトウェアだと対応可能
2

ソフトウェアから見たマルチプロセッサのタイプ
密結合マルチプロセッサ（共有メモリ）
対称型マルチプロセッサ（SMP,SMT）
負荷分散（スループット）を目的とし，プロセッサに機能を固定しない予測可能性が低いためリアルタイム性の保障は困難
汎用システムに近いシステムで用いられる可能性
機能分散マルチプロセッサ
プロセッサ毎に機能を固定
組込みシステムは機能が固定されている場合が多いため，ニーズが高い組込みシステムで重要となるリアルタイム性の保障が容易
ターゲットとする
疎結合マルチプロセッサ（分散システム）
組込みコンポーネント仕様の枠組みで扱う
3

機能分散マルチプロセッサの例 ： MeP
東芝MeP(Media embedded Processor)プロセッサコアを用いた
MPEG2コーデックLSIの構成例＊東芝半導体 製品カタログ「MeP(Media embedded Processor)概説」より
4

機能分散マルチプロセッサの例 ： MPCore
ARM MPCore : 1〜4個のマルチプロセッサ構成
割込み
分配回路

キャッシュ・コヒーレンシ制御＊ARM ウェブサイトより
5マルチプロセッサ向けOSの必要性
これまでマルチプロセッサ向けソフトウェア開発
各プロセッサに独立にシングルプロセッサ用のリアルタイムOSを載せる（プロセッサによってはOSレスも）プロセッサ間の同期・通信は，（OSではなく）アプリケーションソフトウェアで実現
OSによるサポートの必要性
アプリケーション毎にプロセッサ間の同期・通信を実現する必要があるため，開発工数が増える
ある処理を別のプロセッサに移そうとすると，同期・通信部分のプログラムの作り直しが必要
静的な移し替えのみを考えている

OSによる，タスク間同期・通信と互換のプロセッサ間同期・通信機能のサポートが望まれる
6

TOPPERS/FDMPカーネル
機能分散マルチプロセッサ用のリアルタイムOS
機能分散マルチプロセッサ上でのアプリケーション開発を効率化
μITRON仕様のAPIで各プロセッサ上のオブジェクトにアクセス可能
μITRON仕様OS向けのソフトウェア資産が活用可能
性能を重視した実装
プロセッサ数に対するスケーラビリティ（ロック単位）
リアルタイム性（特に割込みに対する応答性）を損なわないための工夫（ロック取得ルーチンの工夫）
新たなターゲットプロセッサへのポーティングが容易
JSPカーネルがサポートしていると特に容易
シングルプロセッサ用のITRON仕様のリアルタイムOS
7オブジェクト管理の概念図
プロセッサ1リソース

プロセッサ2リソース

プロセッサ1プロセッサ2

タスク
タスク
タスク11

タスク
タスク
タスク12

カーネル

カーネル

ローカルメモリ1
I/O

ローカルメモリ2
I/O

セマフォ

セマフォ

タスク，セマフォ，ハンドラ等のカーネルオブジェクトは特定のプロセッサに固定
タスクやハンドラは，プロセッサを跨いで全てのオブジェクトにアクセスが可能
8コンフィギュレーションファイル（静的APIの拡張）
プロセッサ毎に囲みを作りその中にそのプロセッサに属するオブジェクトの静的APIを記述する
コンフィギュレータはプロセッ
サ毎のディレクトリを作成して，kernel_cfg.cとkernel_id.h及び，クラスIDを付加したオブジェク
トIDが記述されている
class_id.hを生成
クラスIDの割付はコンフィギュ
レータにより行う

PE1に属するオブジェ
クトの生成情報

local_classlocal_classPE1{
PE1{
INCLUDE("¥"sample1-dual1.h¥"");
INCLUDE("¥"sample1-dual1.h¥"");
CRE_TSK(TASK1,
CRE_TSK(TASK1,{{TA_HLNG,
TA_HLNG,(VP_INT)(VP_INT)1,1,..);..);
CRE_TSK(TASK2,
CRE_TSK(TASK2,{{TA_HLNG,
TA_HLNG,(VP_INT)(VP_INT)2,2,..);..);......
CRE_CYC(CYCHDR1,CRE_CYC(CYCHDR1,{{TA_HLNG,
TA_HLNG,0,0,..);..);#include#include"../systask/timer.cfg""../systask/timer.cfg"
....
....

PE2に属するオブジェ}}
クトの生成情報
local
localclassclassPE2{
PE2{
INCLUDE("¥"sample1-dual2.h¥"");
INCLUDE("¥"sample1-dual2.h¥"");
CRE_TSK(TASK1,
CRE_TSK(TASK1,{{TA_HLNG,
TA_HLNG,(VP_INT)(VP_INT)1,1,..);..);
CRE_TSK(TASK2,
CRE_TSK(TASK2,{{TA_HLNG,
TA_HLNG,(VP_INT)(VP_INT)2,2,..);..);......
CRE_CYC(CYCHDR1,CRE_CYC(CYCHDR1,{{TA_HLNG,TA_HLNG,0,0,..);..);#include"../systask/timer.cfg"#include "../systask/timer.cfg"
....
....
}}

9

システムコール
プロセッサを跨いでμITRONのシステムコールを実行可能
ID番号で識別されるオブジェクトはID番号で所属するプロセッサを示す
上位16ビットをクラスID，下位16bitをオブジェクトID
16bit

16bit

プロセッサID

オブジェクトID

これらのオブジェクトを操作するサービスコールは，シングルプロセッサ用のものがそのまま使用可能になる
セマフォの取得 ： wai_sem(ID semid)10対象（動作）アーキテクチャー
現状のFDMPカーネルは以下のアーキテクチャーで動作する
各プロセッサのデータ（rodataも含む）を置くメモリが全てのプロセッサから同一のアドレスでアクセス可能であること
任意のプロセッサに割込み（プロセッサ間割込み）を発生可能であること
プロセッサ間での排他制御のための機構を持つこと．
例 : test & set 命令， Mutex回路
プロセッサ間の排他制御機構を用いてロックをプロセッサ数x2個作成可能であること．
だたし2個でも動作は可能．

11

性能評価 ： コードサイズ
シングルプロセッサ用リアルタイムOSであるJSPカーネルとコードサイズ，システムコール実行時間を比較
評価環境（T5V）
MePコア × 4, 動作周波数 150Mhz
共有メモリ上でプログラムを配置
コードサイズ
コードサイズ（text）55%増加
プロセッサ間の排他制御のためのコードデータ(data)，初期値無しデータ(bss)はほぼ同じ
カーネル

text

databss

計

JSPカーネル

17718

40

18748

36506

FDMPカーネル

27554

41

19056

46779

単位byte12性能評価 ： 実行時間
セマフォの解放を行うシステムコール(sig_sem)の実行時間を比較
FDMPカーネルでは，タスクと同じプロセッサにセマフォが属する場合（プロセッサ内）と属さない場合（プロセッサ間）を比較
同時にOSの持つ1msec周期のタイマ割込みの処理時間を測定
sig_semの処理時間は86%増（ロックの取得+マルチプロセッサ拡張）
割込み処理時間は14%増
プロセッサ内とプロセッサ間での処理時間は同じ

JSPカーネル

14.6

割込み
処理時間
21.9

FDMPカーネル(プロセッサ内)

27.3

24.9

FDMPカーネル(プロセッサ間)

27.3

24.9

sig_sem
処理時間

単位μsec13

まとめ
TOPPERS/FDMPカーネル
機能分散マルチプロセッサ用リアルタイムOS
機能分散マルチプロセッサ上でのアプリケーション開発を効率性能を重視した実装
リリース状況
オープンソースソフトウエアとしてTOPPERSプロジェクトからソースコードを公開
Altera Nios2, Xilinx Microblaze, 東芝 MePをサポート
今後の予定
実システムへの適用評価
ヘテロジニアスマルチプロセッサへの対応
14