マルチコアの壁


マルチコアCPUを効率的に使うためのいくつかの壁を想定する。

その上で、AUTOSARのマルチコア対応について検討する。
bootコアにどのOSを載せるか。
できれば小さい方がいい。

ここからは、TOPPERSのアイデアコンテストに提案する予定の事項

boot core 2nd 3rd 4th 5th 6th
c a
c c
a c
a a
c c c c
c c c a
c c a a
c a a a
a c c c
a a c c
a a a c
a a a a
c c c c c c
c c c c c a
c c c c a a
c c c a a a
c c a a a a
c a a a a a
a c c c c c
a a c c c c
a a a c c c
a a a a c c
a a a a a c
a a a a a a

a:adaptive platform: Linux
c:classic platform: Osek os

壁1 マルチコアloader

マルチコアCPUを起動しようとするときに、
マルチコアCPUのハードウェアマニュアルを読んで、
プログラムを書くといいと思うかもしれない。

それで書ける人はそれで書けばいい。

個々のCPUで、マルチコア機能の改良が進んでおり、
共同開発者または提案者でないとなかなか理解できないかもしれない。

マルチコアにどうやってプログラムをloadするかを考えるのが面倒臭いから
ROMブートにするという人がいると嬉しいかもしれない。

できれば、loader自体はCPUに機能としてあって、起動時に引数を渡して起動すれば、その引数で渡したところの番地から、それぞれのコアにloadしてくれると嬉しいかも。

壁2 マルチコア monitor

ロードできたとして、じゃ走らせて、どう走っているかを確かめる方法があると嬉しい。

コアが一つであれば、CPUの一つのピンを入出力にしてmonitorするように、
できれば、CPUのコア数分のピンがあって、そこで別々にmonitorできると嬉しい。

壁 3 マルチコア debugger

loader, monitorとくれば、次はdebuggerだろうか。

マルチコアで、いちいち、メインコアを経由してデバッグするのは面倒臭い。
かといって、それぞれのコアごとに、重いデバッガを入れると嬉しくないかもしれない。

マルチコアのデバッガを書いたり、デバッグしたことがなく、どういう設計がいいかはわかっていない。

コア一つのデバッガでも、デバッガのデバッグをするのに、どこにメモリを取るかとか、どう割り込みの禁止解除をするのか、ハードウェアで仕組みが用意してあると嬉しいと思う。

マルチコアであれば、マルチコア用のデバッガ機能がハードウェアで機能があると嬉しいかもしれない。

マルチコア用のデバッガは、割り込みの設定、監視が容易にできると嬉しい。

マルチコアへ割り込みを通知する際の注意点
https://malt.zendesk.com/hc/ja/articles/900006259663-マルチコアへ割り込みを通知する際の注意点

ペリフェラルの割り込みを静的にコアに割り付けてみよう!
2018年9月20日 浅羽 鉄平

https://www.aps-web.jp/academy/linux-mpsoc/546/

マルチコア時代のリアルタイムシステムの設計
https://www.concurrent-rt.co.jp/external/TechSup/PDF/RealTimeSystem.pdf

壁4 マルチコアOS

同じ種類のマルチコアを、一つの種類のOSで管理しているのは、
わかりやすいかもしれない。

それで必要な機能が実現すればいいことだ。

壁5 マルチコア、複数OS

せっかく複数コアがあれば、コアごとに異なるOSが動いていると嬉しいかもしれない。

一つは、OSEK、もう一つはLinuxっていう感じで。

SafeGは、
https://www.toppers.jp/safeg.html

汎用OSとしてLinux、RTOSとしてTOPPERS/FMPカーネル

FMPカーネルを、OSEKカーネルへ移植すればいいのかも。

書けるはずの方々の資料を見て描かなきゃって

本田晋也
https://porta.nanzan-u.ac.jp/research/view?l=ja&u=104254
http://www.ertl.jp/~honda/

組込み向け高信頼デュアルOSモニタのマルチコアアーキテクチャへの適用
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=73837&item_no=1&attribute_id=1&file_no=1

SafeG-MP : マルチコア対応の組込みシステム向け仮想化環境
太田貴也, 大橋孝輔, D. Sangorrin, 本田晋也, 高田広章, 堀田孝一, 大山田光夫

マルチコア対応RTOSのハードウェア化による性能向上
丸山修孝, 一場利幸, 本田晋也, 高田広章

マルチコアにおけるコア隔離機構Timer ShieldによるLinuxのリアルタイム性向上
山田 真大, 小林 良岳, 本田 晋也, 高田 広章
https://www.jstage.jst.go.jp/article/jssst/31/4/31_4_77/_pdf/-char/ja

Athrill2でマルチコア

マルチコア対応仮想環境(athrill)を使用して TOPPERS/ATK2 を実行する
https://gist.github.com/tmori/11483e82a52c8ea8c2db6454d0cd8ed2

AUTOSARによる開発 ~排他エリア(Exclusive Area)
https://www.fsi.co.jp/blog/4572/

mROSをクラウド/仮想環境に連携させてみる
https://www.slideshare.net/takasehideki/mros

athrill(アスリル)から箱庭(hakoniwa)へ 森 崇 氏(永和システムマネジメント)
https://swest.toppers.jp/SWEST21/program/txt/s3b_minute.html

メモリ保護対応版 athrill(アスリル) のご紹介https://qiita.com/kanetugu2018/items/f2205475c4a4eae699c0

参考資料

TOPPERS Rank 929|総記事数 230 | 総いいね数 1,409
https://qtvisualizer.com/trends/explore/TOPPERS

IAR Embedded Workbench®
C-SPY® デバッグガイド Advanced RISC Machines Ltd
ARM® コア
http://www.iarsys.co.jp/download/LMS2/arm/8101/ewarm8101doc/arm/doc/EWARM_DebuggingGuide.JPN.pdf

修士論文
マルチコア上での ソフトウェアフォルトトレランス技術に関する研究
北陸先端科学技術大学院大学
情報科学研究科情報科学専攻
川口 貴司 2010年3月
https://dspace.jaist.ac.jp/dspace/bitstream/10119/8923/3/paper.pdf

SMP・マルチコアに対応した型付きアセンブ リ言語
前田俊行 米澤明憲
http://web.yl.is.s.u-tokyo.ac.jp/~tosh/talk/tosh-dsw2008.pdf

マルチコアアセンブリ言語はどのように見えますか?
https://www.it-swarm-ja.com/ja/assembly/マルチコアアセンブリ言語はどのように見えますか?/957679975/

STM32MP1 - GIC
グローバル割込みコントローラ 2.0 版
https://www.stmcu.jp/wp/wp-content/uploads/files/presentation-ja/STM32MP1/10_STM32MP1-System-Global-Interrupt-Control-(GIC)_J.pdf

linux-kernel - マルチコアシステムでハードウェア割り込みを実行するプロセッサ
https://base64.work/so/linux-kernel/3237879

RH850 マルチコアプログラミングガイド 詳細編
https://www.renesas.com/eu/ja/document/man/897131?language=ja

産業用計算機のマルチコアCPU適用 - 三菱電機
https://www.giho.mitsubishielectric.co.jp/giho/pdf/2010/1010107.pdf

マ ル チ コ ア C P U で の L i n u x (†) リアルタイム性向上手法
https://www.global.toshiba/content/dam/toshiba/migration/corp/techReviewAssets/tech/review/2014/07/69_07pdf/r01.pdf

組み込みマルチコアプロセッサの ソフトウェア
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=65529&item_no=1&attribute_id=1&file_no=1

パケット処理のマルチコアスケールについて
https://qiita.com/nyamage/items/04f348a868475cef0c77

現代における自作OSの難しさ 〜自作OSのいまと昔 [第2回]
https://knowledge.sakura.ad.jp/22963/

μITRON4.0 仕様 マルチコアプロセッサ拡張 ガイドライン (μITRON/AMP ガイドライン) Ver. 1.00.00
https://www.tron.org/ja/wp-content/themes/dp-magjam/pdf/specifications/ja/WG024-W030-01.00.00.pdf

マルチコアプロセッサ対応リアルタイムOS
https://www.esol.co.jp/embedded/et-kernel_multicore-edition.html

FreeRTOS カーネルの基礎
https://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/dev-guide-freertos-kernel.html

今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御 木村啓二
http://www.kumikomi.net/archives/2005/02/02multi.php?page=12

割り込み処理 2012年02月07日 情報科学類 オペレーティングシステム II
筑波大学 システム情報工学研究科 コンピュータサイエンス専攻, 電子・情報工学系 新城 靖
http://www.coins.tsukuba.ac.jp/~yas/coins/os2-2011/2012-02-07/

機能分散型 マルチコア設計を体験する 大牧正知 ― 小型のテレビ電話端末を複数のCPUコアで実現
https://www.cqpub.co.jp/dwm/contents/0096/dwm009600370.pdf

マルチスレッド​と​マルチタスク​の​違い
https://www.ni.com/ja-jp/support/documentation/supplemental/07/differences-between-multithreading-and-multitasking-for-programm.html

マルチコアCPUの消費電力はスケジューリングで変わる?
https://ascii.jp/elem/000/000/672/672088/2/

マルチコアにおける 排他制御用ハードウェアの研究
神谷 航輝 南角 茂樹 大阪電気通信大学大学院総合情報学研究科
https://www.ieice.org/~iss/jpn/Publications/issposter_2017/data/pdf/ISS-P-100.pdf

計算機及び計算機の制御方法 静香 二宮 厚 浦山 正文 大桃 輝昌 上畑 株式会社日立製作所
https://patents.google.com/patent/WO2017013799A1/ja

デンソーとImaginationの提携はリアルタイム動作のADAS目指す
2016年11月29日
https://www.semiconportal.com/archive/editorial/technology/design/161129-imagination.html?print

マルチECU対応タイミング検証ツール
INCHRON TS(Tool Suite)
タイミング設計、時間制約の設計、実装での発見困難なミスをシミュレーション、実機で検出
https://www.ubiquitous-ai.com/products/inchron/

並行性 マルチコア
https://tomoyuki-nakabayashi.github.io/book/concurrency/index.html