2015_collabo_04

Similar documents
SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

Microsoft PowerPoint - OS04.pptx

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

PowerPoint プレゼンテーション

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

cmpsys15w07_os.ppt

TopSE並行システム はじめに

ハード・ソフト協調検証サービス

Insert your Title here

本文ALL.indd

POSIXスレッド

マルチコア時代の並列プログラミング

Linuxのベンチマーク評価 とボトルネック解析

POSIXプログラミング Pthreads編

SafeG 高信頼組込みシステム向けデュアル OS モニタ Daniel Sangorrín, 本田晋也, 高田広章 名古屋大学 2010 年 12 月 3 日 この研究の一部は文部科学省のサポート受けて実施しています Daniel Sangorrín ( 名古屋大学 ) ET 横浜 2

05-scheduling.ppt

複数の Nios II を構成する際の注意事項

TRAVENTY CG V 動作検証報告書

Microsoft PowerPoint - ARCICD07FukumotoSlides.pptx

PowerPoint プレゼンテーション

PNopenseminar_2011_開発stack

科学技術振興調整費 中間成果報告書 若手任期付研究員支援 組込みアーキテクチャ協調型実時間 OS 研究期間 : 平成 13 年度 ~ 平成 15 年 6 月 北陸先端科学技術大学院大学田中清史

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

_RISC-V Day Tokyo 2019_UAC 2.pptx

Developer Camp

ストリームを用いたコンカレントカーネルプログラミングと最適化 エヌビディアジャパン CUDAエンジニア森野慎也 GTC Japan 2014

IntroductionForGR-PEACH.pptx

スライド 1

PowerPoint プレゼンテーション

Monthly Research / セキュアハードウェアの登場とその分析

HashMapからConcurrentHashMapへの移行

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門がじぇるね IoT 部門作品のタイトル : TOPPERS_ASP3 カーネルと astah*-uml による状態マシン図でのソフト設計と動作検証の試み作成者 : 塩出武 ( しおでたけ

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

PowerPoint Presentation

Presentation Title

VXPRO R1400® ご提案資料

トレースログ可視化ツールTraceLogVisualizer(TLV)の一般公開について

スレッド

はじめに Web アプリケーションの発展と普及の勢いは弱まる兆しがありません 弱まるどころか 加速し続けています これは これまでの ERP CRM Web 2.0 などの Web ベースアプリケーションが提供してきたメリットを考えると 不思議なことではありません Web アプリケーションの爆発的拡

OS

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ

スレッド

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

スライド 1

PowerPoint Presentation

CPUスケジューリング

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

Microsoft PowerPoint ppt [互換モード]

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

ルネサス半導体セミナースケジュール

Microsoft PowerPoint - OS02.pptx

部内向けスキルアップ研修 「組込みOS自作入門」

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No02\201i\224z\225z\227p\201j.pptx)

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

ジョブ管理ソフトウェア LoadStar Scheduler ご紹介資料 ~ システム運用品質の向上とコスト削減を実現 ~

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No03\201i\224z\225z\227p\201j.pptx)

Microsoft PowerPoint - OpenMP入門.pptx

リソース制約下における組込みソフトウェアの性能検証および最適化方法

コンピュータ工学Ⅰ

Modbusスタック:emModbus

智美塾 ゆもつよメソッドのアーキテクチャ

embOS:リアルタイムOS

PowerPoint プレゼンテーション

Rubyの スレッド実装 の改善

kantan_C_1_iro3.indd

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

プログラミングA

6 2. AUTOSAR 2.1 AUTOSAR AUTOSAR ECU OSEK/VDX 3) OSEK/VDX OS AUTOSAR AUTOSAR ECU AUTOSAR 1 AUTOSAR BSW (Basic Software) (Runtime Environment) Applicat

press-1005.OHP

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

TEF021-S _ja

PowerPoint プレゼンテーション

吉田坂本.pptx

TFTP serverの実装

スライド 1

Microsoft PowerPoint - Lec ppt [互換モード]

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

Presentation title (on one or two lines)

CSPの紹介

Microsoft Word - toppers-contest-2014_NTB.doc

コンピュータ工学Ⅰ

Microsoft PowerPoint emb-2-nakajima

< B8CDD8AB B83685D>

プログラミングA

PowerPoint プレゼンテーション

01-introduction.ppt

Microsoft PowerPoint - OS1.ppt [互換モード]

CLUSTERPRO MC ProcessSaver 1.2 for Windows 導入ガイド 第 4 版 2014 年 3 月 日本電気株式会社

障害管理テンプレート仕様書

Microsoft PowerPoint _ncessympotakada [互換モード]

RTM セミナー RT ミドルウェアによる実時間ロボット 制御系の構築とソフトウェア教育 静岡大学大学院工学研究科機械工学専攻 清水昌幸

2014 年 11 月 20 日 ET2014 スペシャルセッション C-2 mruby プログラム言語 Ruby による組込みソト開発 九州工業大学田中和明 軽量 Ruby フォーラム Ruby アソシエーション

SH2A-DUALコア搭載製品SH7265のご紹介

Nios II マイコン活用ガイド Nios II マイコンボード紹介 ステップ 1 AuCE C3 製品紹介 AuCE C3 は ソフトコア プロセッサ Nios II( アルテラ社 ) を搭載可能なマイコンボードです 弊社の基本ソフトウェアをインストールし FPGA 開発者のデザインと Nios

Copyright (C) by Center for Embedded Computing Systems Graduate School of Information Science, Nagoya Univ., JAPAN Copyright (C) b

PowerPoint プレゼンテーション

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Transcription:

Cortex-M にも広がってきたマルチコアプログラミング ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 株式会社エーアイコーポレーション TOPPERS グループ

はじめに ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 2015/2/9 A. I. Corporation 2

講演内容 Cortex-A だけでなく Cortex-M においてもマルチコアを搭載した汎用マイコンが登場してきています マルチコアに対応した RTOS TOPPERS-Pro/FMP の紹介とともに マルチコアマイコンの動向や 実際にプログラミングする際にどのような注意を払う必要があるのかを説明します 2015/2/9 A. I. Corporation 3

エーアイコーポレーション紹介 会社概要 設立 1985 年従業員 54 名所在地東京 ( 五反田, 立川 ) 名古屋 ( 栄 ) 大阪 ( 新大阪 ) 事業内容組込み用ソフトウェア OS 開発ツールなどの輸入 / 販売 / テクニカルサポート自社製品の開発 / 販売 / テクニカルサポート上記を利用したエンジニアリング サービス 2015/2/9 A. I. Corporation 4

こんな場合には AIC へ 組込み向けにいろいろなソフトウェアを 1 つの窓口で対応することを希望されている場合 例えばこんな組み合わせ : OS もネットもファイルも USB も Bluetooth も GUI も必要ミドルウェアだけでなく開発環境や品質ツールも必要製品提供だけでなく移植作業やカスタマイズ作業も必要 OS ドライバ ミドルウェア 開発環境 品質ツール 受託開発 2015/2/9 A. I. Corporation 5

組込み向けのマルチコア状況 ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 2015/2/9 A. I. Corporation 6

マルチコアに関して 6 年前の意識 マルチコアについて マルチコアに興味はありますか? 95% マルチコアの導入予定は? 導入済み 27% マルチコアの導入予定は? 導入検討中 26% マルチコアの導入予定は? わからない 33% マルチコア導入にあたっての障壁は何ですか? ソフト開発環境 40% 実績がない 46% 使い方がわからない 17% CEATEC2008 で JEITA マイクロプロセッサ専門委員会が実施 2015/2/9 A. I. Corporation 7

2015 年現在の状況は? マイコンベンダがマルチコアプロセッサを市場に投入 マルチコア対応の組込み向け RTOS が増加 ソフトウェア開発環境 ( 特にデバッガ ) のマルチコアサポートの充実 マルチコア利用の実績も増加の方向 次の標準プラットホームはマルチコアベースの声も多数 マルチコア利用の雰囲気が急速に漂ってきている マルチコアでの設計手法 プログラミング手法を早急に確立する必要性がある 2015/2/9 A. I. Corporation 8

Cortex-M 系マルチコア? マルチコア =Cortex-A などの大きなコア向け? 2014 年 8 月 7 日に株式会社東芝が TMPM411F20XBG を発表 Cortex-M4F 2 コア 発売済みの NXP 社を始め Cortex-M 系マルチコアを各社が準備 検討中 2015/2/9 A. I. Corporation 9

マルチコアで期待されること 高性能化への技術的課題の解決が期待できる 高コストな微細化技術クロックの限界増えるリーク電流発熱抑制が困難 CPU 利用時間に余裕度が持たせられる 最悪実行時間値の向上平均処理時間の向上 MIPS 値は向上しないので注意 2015/2/9 A. I. Corporation 10

マルチコアプログラミングの注意点 ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 2015/2/9 A. I. Corporation 11

注意すべき主な点 1 コアの役割分担複数のコアをどう使う? 2 データ競合回避 - ロック排他制御をどう実現する? 3 データ競合回避 - ライブロックライブロック問題をどう意識する? 4 命令実行順序の確定 (CPU による命令実行順序入れ替え問題と対策 ) アウトオブオーダー実行をどう回避する? 2015/2/9 A. I. Corporation 12

1 コアの役割分担 機能分割した設計にする必要がある 機能の分割統治ができているソフトウェア資産はスレッド ( タスク ) プロセス単位の並列化が容易 そうでない場合はマルチコアの恩恵を受けづらい OS なし あるいはシングルタスク的に設計された資産は 流用する前に設計を見直す必要がある コア毎に完全に別の仕事をさせると負荷の平準化が難しい場合がある RTOS をどう選びどう利用するか? 2015/2/9 A. I. Corporation 13

RTOS の違い MP T-kernel AMP T-Kernel SMP T-Kernel RTEMS AUTOSAR OS TOPPERS FDMP SMP FMP Linux OS の分類 AMP SMP AMP AMP AMP SMP AMP SMP リアルタイム性 マイグレーション機能 TOPPERS/FMP はマイグレーション機能を持ちながら リアルタイム性を維持した RTOS 2015/2/9 A. I. Corporation 14

2 データ競合回避 - ロック 一般的には 他コアの割込みマスクをコントロールすることはできない ローカルな割込み禁止はコアごとに管理するしかない場合がある (ARM GIC) コアまたぎで割込み禁止を行うことはできるが RPC を使うなどの手法となり リアルタイム性が損なわれる タスク / 他コアで動作する割込みハンドラや 割込みハンドラ間ではスピンロックのアルゴリズムで排他を取る必要がある 2015/2/9 A. I. Corporation 15

スピンロックとは? ロックを取得できるまでループにより試行を繰り返すロックアルゴリズム ロックとは? 特定の処理開始前にロック ( 鍵のようなもの ) の取得を試み ロックを取得できなければ該当処理を開始しないことによって複数の並行 並列処理を協調動作させる同期機構のこと 2015/2/9 A. I. Corporation 16

どのように実現するか?スピンロックのアルゴリズム ロックが獲得されていないことをチェックするとともに 不可分な処理としてロックを獲得ロックが取得できたら 共有資源へアクセス共有資源へのアクセス後 ロックを解放 実現の方法アトミック命令を使用 ( マルチコア CPU を設計する立場なら専用 MUTEX 回路を備えるという方法もある ) ロック変数の読込み ロック変数は解放されているか No Yes ロック変数の取得 ( ロック変数への書込み ) 共有資源へのアクセス ロック変数の解放 2015/2/9 A. I. Corporation 17

アトミック命令とは? いくつかの操作をコアが不可分に実行する命令 アトミック命令の種類 Test&Set Compare&Swap Load-Link/Store- Conditional など ARM MPCore では 排他付きロード (LDREX)/ ストア命令 (STREX) が提供されている 2015/2/9 A. I. Corporation 18

スピンロックの与える影響 ロックが長時間の場合 システムのスループットに悪影響が出る ( スピンロックは短時間向けで適応すべき ) タスク間はシングルコアの RTOS と同様にセマフォ ミューテックスを使うべきである コアをまたぐ場合もアプリケーションとしては従来のシングルコアと作法は透過 スピン中はロックに対する読出しが繰り返し行われる バスの輻輳問題 省電力問題 ARM ではイベント待ち (WFE)/ イベント送信 (SEV) 命令によりスピンすることなくコア間で同期を取る仕組みを提供 2015/2/9 A. I. Corporation 19

3 データ競合回避 - ライブロック マルチコアではデッドロックの問題に加えて ライブロックの問題を意識する必要がある ライブロックとは? 行動の衝突がおきた時 同一の回避行動がお互い取り続けた場合 処理を先に進めない問題 細い道ですれ違う場合 両方が道を譲り続けて お互いが先に進めないような状態 2015/2/9 A. I. Corporation 20

ライブロックの回避方法 優先して処理可能なコアの処理優先順位付けを行う 優先度の低いコアにスタベーション ( 永久に資源が獲得できない事象 ) が発生する可能性がある 優先順位付けができない場合 再試行のタイミングをコア毎に変更する 完了時間の確定が困難 ( リアルタイム性の保証が困難 ) 衝突した場合 待ちキューで取得する順に待ち FIFO 順に処理する この方式が一般的 2015/2/9 A. I. Corporation 21

具体的な記述の仕方は ロック取得順序を制御できるスピンロックを用意 ロック変数が自分の番号になったらロックが取得できる方式 ( チケットロックと呼ばれる ) キューイングロック ロックの取得は待ちキューで待ち 解放時は次の待ちコアにロックを渡す 優先度キューのバリエーションも 2015/2/9 A. I. Corporation 22

4 命令実行順序の確定 アウトオブオーダ実行の問題 命令実行の並列性を上げるために コア内部で命令の実行順番をリオーダ ( 再順番付け ) して実行する仕組み Cortex-A ではアウトオブオーダ実行 CPU では命令の実行順序性が保証されない Cortex-M では今のところ意識しなくても大丈夫だが ARM 社は今後のことを考慮し Cortex-M においてもこの問題を意識するよう規定している volatile を使うと回避できる という問題ではない 2015/2/9 A. I. Corporation 23

アウトオブオーダー問題の例 コア 0 while ( flag!= FALSE ) { syslog ( LOG_DEBUG, val is %d, val ); break; } コア 1 volatile bool flag; volatile int val = 0; flag = FALSE; val = 100; flag = TRUE; インオーダ実行の場合 必ず syslog は値 100 を出力するが アウトオブオーダ環境の場合 0 が出力される場合がある CPU による命令実行の再順序化の影響 コア間でグローバル変数を read/test/modify/write するような処理では深刻な問題 ( 例 : スピンロック実装 ) 2015/2/9 A. I. Corporation 24

ARM コアでの影響は? 呼称 SO: Strong Ordering TSO: Total Store Ordering PSO: Partial Store Ordering WO: Weak Ordering 処理内容 メモリアクセスは命令の順序に完全に従う write read の順序が入れ替わる可能性がある write read, write write の順序が入れ替わる可能性がある 全ての順序が入れ替わる可能性がある ARM は WO モデル MMU のページテーブル単位で SO か WO 設定可能 DDR を SO に設定してしまうと ストアバッファが使えずパフォーマンスが低下する 2015/2/9 A. I. Corporation 25

どうすればいいか? 命令リオーダメモリで 命令の実行順序に強制性を持たせたい場合は フェンス命令 ( メモリバリア命令 ) で同期を取る必要がある ARM は 3 種類のフェンス命令を用意 ISB: 命令同期バリア DMB: データメモリバリア DSB: データ同期化バリア 適切にフェンス命令を使用すること 2015/2/9 A. I. Corporation 26

TOPPERS-Pro/FMP の記述例 TOPPERS-Pro/FMP のスピンロック処理の実装例 asm (" mov r2, #0x01 n" " t ldrex r1, [%1] n" " t cmp r1, #0x00 n" " t strexeq r1, r2, [%1] n" " t mov %0, r1 n" :"=r"(locked):"r"(p_spn_lock):"r1", "r2", "cc"); if (locked == 0) { /* 成功した場合 */ mpcore_data_memory_barrier(); /*DMB 命令 */ } asm("":::"memory"); return(false); 2015/2/9 A. I. Corporation 27

TOPPERS-Pro/FMP の紹介 ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 2015/2/9 A. I. Corporation 28

TOPPERS-Pro/FMP とは? マルチコアに対応したリアルタイム OS ASP カーネルをマルチコアプロセッサ向けに拡張 SMP と AMP の両タイプのマルチプロセッサに適用可 リアルタイム性と動的なタスク移動とを両立 コア毎のタスクスケジューリングタスクを移動させる API を実装 2015/2/9 A. I. Corporation 29

カーネル仕様 プロセッサ毎のスケジューリング タスクマイグレーション機能の提供 マイグレート可能な条件設定あり Ready Queue タスク 1 タスク 2 タスク 3 タスク 4 タスク 5 タスク 3 Running タスク 1 タスク 4 TOPPERS-Pro/FMP コア 0 コア 1 2015/2/9 A. I. Corporation 30

マイグレーションについて コアごとのスケジューリングコアごとに優先度ベーススケジューリングを実施基本的には AMP-OS と同等 リアルタイム性の確保が容易 タスクマイグレーションタスクをコア間でマイグレート ( 移動 ) させる API を用意 マイグレーションポリシーはユーザが決定 マイグレート可能な条件システムコールの最悪実行時間抑制のために制約設定 1. タスクコンテキストから自プロセッサの他のタスクに対して 2. 自タスクに対して 2015/2/9 A. I. Corporation 31

マルチコアへの対応実績 Cortex-M TMPM411F20XBG には近日対応予定 Cortex-A Cyclone V Zynq-7000 など ARM11 μpd35001f5-mn Core Tile for ARM11 MPCore など SH SH2A-DUAL など Nios NiosⅡ など 2015/2/9 A. I. Corporation 32

お問い合わせは TOPPERS Group http://www.aicp.co.jp/ 2015/2/9 A. I. Corporation 33