inflearn logo
知識共有
inflearn logo

プログラマーのためのAMBA入門 ― APB・AHB・AXIバスを仕様書とボードで読み解く

自分が書いたコードの一行が、チップの中でどのように動くのか、目で確かめたことはありますか?手描きの図と実際のボード測定を追っていくと、漠然としていたチップ内のデータの流れが鮮明に見えてきて、ときどき起こるバグの原因もわかり始めます。

6名 が受講中です。

難易度 初級

受講期間 無制限

Computer Architecture
Computer Architecture
ARM Architecture
ARM Architecture
soc
soc
amba
amba
cache
cache
Computer Architecture
Computer Architecture
ARM Architecture
ARM Architecture
soc
soc
amba
amba
cache
cache

この講座で身につくこと

  • チップ内でコードの1行が通る経路(バス)を図で説明する

  • APB・AHB・AXIのデータの書き込みと読み込みに関する基本ルールと違い

  • 時々しか発生しないバグ(二重割り込み、順序の乱れ、気づかれない0)をバスの動作で説明すること

  • チップマニュアルのバス図とArmの原文仕様書を自分で探して読む方法

  • 最新世代(APB5・AHB5・AXI5)とセキュリティ属性で何が追加されたのか、その全体像

講義を終えると得られること

自分が書いたコードの一行が、チップの中でどのような経路をたどるのか、図に描けるようになります。値を書き込んでもすぐに反映されないとき、たまにだけおかしくなるとき、同じコードがある場所では速く、別の場所では遅いとき、その理由を推測ではなく、説明として語れるようになります。

自分が書いたコードの1行は、チップの中でどのように動くのでしょうか?

チップ内でCPU・メモリ・周辺機器の間をデータが行き交う道(バス)と、その道の規則(AMBA)を基礎から学びます。最もシンプルなAPBから始め、AHB、AXIへと順に進み、各パートの最後には最新版まで追っていきます。全26章、約4時間30分。

コンピュータ構造の本では図一枚で済まされていたSoC内部の経路を、AMBA仕様書の原文やARM Architecture文書、cache設定を変えながら測定した数値で確認します。

制作方法のご案内

この講義は、AIを活用した制作工程で制作しました。ナレーションは講師本人の声を学習させた音声合成で、台本や手描きの画面制作にもAIツールを活用しています。企画と内容の確認は講師自身が行い、測定結果は実際にSTM32F429I-DISC1ボード上で実行して確認した値です。

レジスタに値を書き込んだのに、なぜまだ変わっていないのでしょうか?

コードは上から下へ一行ずつ実行されると学びました。しかしチップの中では、私が書いた値がCPUを離れて経路を進み、途中でしばらく待ったり、ほかの要求と順序が入れ替わったりすることもあります。この経路を知らないと、「たまにしか起きない不思議な問題」を運やタイミングのせいにして片付けてしまいます。

この講義では、その道筋を最初から手描きで描きながらたどっていきます。道のルールが記された原文のドキュメントを一緒に開き、該当する文章に蛍光ペンで線を引き、実際のボードで測定した数値で確認します。

細い路地から高速道路まで

チップの中の道は一つではありません。周辺機器へ向かう、遅くて単純な道。メモリへ向かう広い道。そして、複数のリクエストが同時に行き交う高速道路があります。この講義では、簡単な道から順に進み、先に学んだルールが次の道でどのように変わるのかを見ていきます。

STEP 1

路地裏のAPB

書き込みと読み込み、待機すること

STEP 2

大通り AHB

重ねて走らせる、分け合って使う

STEP 3

高速道路 AXI

番号札、順序、セキュリティ

なぜ今、チップ内のバスなのか

近年のチップには、複数のCPUコアやさまざまなアクセラレータ、数多くの周辺機器が搭載されています。これらの部品がデータをやり取りする経路の規則として広く使われているのが、ArmのAMBAです。そのため、どんなチップを使う場合でも、チップのマニュアルを開けば、この経路の図に出会います。

コードを代わりに書いてくれるツールが増えるほど、そのコードがチップの中でなぜそのように動作するのかを説明できる開発者の価値は、ますます高まります。

本講座では、以下の内容を学びます

チップ内の道と基本ルール

01バスとは何か、コード1行が通る道行き

02タイミング図でメモリを読み書きする瞬間を見る

03 信号名を見るだけで意味がわかるAMBAの基礎知識

04 APB:値を1つ書き込み、読み取る2つのステップ、待機と失敗の通知

05割り込みが2回入ってくる理由、ブリッジの向こう側への書き込み

幹線道路と高速道路、そしてセキュリティ

06 AHB:並走するアドレスとデータ、1バイトだけを書き換える方法

07間違った行を指すエラーと、道を分けて使うルール

08 AXI:5つの経路、番号札、まとめて転送する方法

09 volatileでは防げない順序の問題とロック

10エラーなしで0が読み取られるセキュリティ検問所と最新版本の変更点

18年間の現場講義で見てきた空白

2008年から企業や機関で開発者を教えてきました。その間、コードはうまく書けるのに、そのコードが実行される土台であるメモリとバスについてはよく知らない開発者に多く出会いました。

  • バス幅が広いほど速いことは分かっていますが、なぜなのかは説明できません。

  • ボードにメモリを好きなだけ増設できない本当の理由を説明できません。

  • メモリコントローラーが何をするものか分からず、新しく作ったボードに初めて電源を入れ、メモリを動作させる段階で行き詰まります。

これらの空欄はそれぞれ独立しているわけではありません。チップの中の経路が分かれば、まとめて埋められます。アドレス線の本数が指定できるメモリの上限を決め、データ線の本数が一度に転送する量を決めます。メモリコントローラーはバスの言葉をメモリの言葉に変換する通訳者なので、接続されたメモリの幅と速度を、ブートコードがあらかじめ知らせる必要があります。そして何より、ボード全体がどのような構造でつながっているのか、一目で分かるようになります。

現場で最もよく受けた質問「コードは合っているのに、なぜ時々おかしくなるのでしょうか?」にも、この講義はチップ内の経路図1枚とボード上の数字1つで答えます。

ソフトウェア開発者が解説するAMBA、2008年から

私はチップを設計する人間ではありません。最初から今まで、そしてこれからも、組み込みソフトウェアの開発者です。ただ、ハードウェアに関心があってアセンブリを別途勉強し、ARMプロセッサを長く扱ってきたこともあり、自分のコードが通るチップの中の道、AMBAに自然と興味を持つようになりました。

2008年、そうして一人で勉強した内容をどこかに記録として残しておきたくて、ブログに「AMBAの理解」という連載を投稿しました。回路を作る側ではなく、その回路上でコードを書く側の視点から、仕様書のタイミング図を一コマずつ図にして解きほぐした記事でした。AMBAを韓国語で分かりやすく説明した記事を見つけるのが難しかった頃で、その記事には17年たった今も、勉強になった、ありがとうというコメントが寄せられます。

この講義では、その解説をAXIや最新規格まで広げ、実際のボードで測定した数値を加えて、動画として新たに制作しました。そのため、最初から最後までプログラマーの目線で解説します。

ブログ連載に寄せられたコメントの一部です。投稿者名は伏せています

2008年6月のブログ連載「AMBAの理解」APB編の画面

コードは書けるけれど、チップの内部はブラックボックスだった方へ

バスという言葉を初めて聞いても大丈夫です。レジスタに値を書き込んだり読み出したりした経験があれば十分です。これまで「ハードウェア側の話」として読み飛ばしていたチップのマニュアルにあるバスの図も、この講義が終わる頃には自分で読めるようになります。

チップを設計する方にもおすすめです。この講義では、自分が作ったハードウェアをソフトウェアがどのように使うのかを、反対側の視点から解説します。エラーを知らせる信号ひとつ、書き込みを一時的に受け持つバッファひとつが、プログラマーにとってどのようなバグとして現れるのかを見れば、設計時に何をさらに考慮し、マニュアルに何を記載すべきかを考えるきっかけになります。

この講義ならではの特徴

奇妙なバグを3つ追っていきます

ときどき割り込みが二度入るボード、データを埋めきる前に先に送ってしまう転送、エラーもなく0と読み取られる値。事例を一つずつ解き明かしながら、ルールを学びます。

手描きで図を描きながら説明します

白い方眼ノートに経路や信号をペンで描きながら説明します。言葉とともに図が積み重なり、初めて見る人でも流れを見失いません。

原文ドキュメントとともに

ルールが記された原文に蛍光ペンで線を引き、出典を残します。

実機ボードで確認

STM32ボードで実測した数値をもとに話します。

最新版まで

各部の最後に、APB5・AHB5・AXI5へとつなげて見ていきます。

実際の講義画面

バッファをいっぱいにしたのに、なぜ後ろは古い値なのか。トラックとバイクで描く2つの書き込み

エラーなく0が読み取られる理由、車に貼られたステッカーとチップ内の検問所

デバイスごとに個別に配線すると何本になるだろうか。4個なら6本、8個なら28本

フラッシュを1回読み出すのに何クロックかかるのか、ボード上で直接測定した数値

APB2はAMBA第2版のAPBなのか?名前に隠された数字の落とし穴

フラグを消したのに、なぜ割り込みがもう一度発生するのか。橋を渡る書き込みと、先に終わった復帰

1バイトしか書き込んでいないのに、エラーもなく4バイトすべてが変わった

同じ1KBのコピーなのに6155クロックと696クロック、何が約9倍もの差を生むのか

CPUとDMAが同時に通るチップ内の交差点、信号機を点灯させるのは誰か

バスとメモリチップは使う言葉が違う。その間に立つ通訳者

お互いに相手が先に動くのを待っていると、チップ内の道はそのまま止まってしまう

先に送ったリクエストが最も遅く返ってくる。でも、ルール違反ではない

HardFaultが示した行は犯人ではなかった。ストア命令の6行後を指していたPC

3つの事件の判決、症状だけを見てどの信号を確認するか選ぶ対照表

実習環境

講義で使用するボード

  • STM32F429I-DISC1 (Cortex-M4)

  • ボード上でサイクル数、割り込み回数、バスエラーを直接計測します。

ボードがなくても

  • すべての測定結果を動画でお見せします。

  • ボードに搭載されていないAXI・セキュリティ機能は、図とサンプルコードを使って学びます。

よくある質問

Q. ハードウェアや回路についてまったく知らなくても受講できますか?

はい。バスとは何かというところから始めます。回路図や設計言語は扱わず、プログラマーが書くコードの一行がチップの中でどのように動くのかに焦点を当てます。レジスタへの値の書き込みや読み出しを試した経験があれば十分です。

Q. ボードは必ず必要ですか?

いいえ。ボードで測定した結果はすべて動画でお見せします。講義で使用したボードはSTM32F429I-DISC1です。ボードに搭載されていないAXIやセキュリティ機能については、図やサンプルコードを使って説明します。

Q. 英語の原文ドキュメントを読む必要がありますか?

原文を画面に表示し、必要な文に蛍光ペンで線を引き、意味を日本語でかみ砕いて説明します。英語を別途読まなくてもついていけますし、講義が終わる頃には、必要な節を自分で探して読むことにも慣れていきます。

Q. ナレーションはAI音声ですか?

はい。講師本人の声を学習させた音声合成です。台本と内容は講師自身が企画・確認しており、計測画面は実際のボードで実行して確認した結果です。

次のような方に
おすすめです

受講対象

  • コードは書けるが、チップの中身はブラックボックスだったプログラマー

  • レジスタに値を書き込み、読み出してみたファームウェア・ドライバー・システム開発者

  • チップ内部の構造やバスを初めて学ぶ方

前提知識

  • C言語の基礎

  • レジスターに値を書き込み、読み出した経験

こんにちは
guileschoolです。

経歴認証済み

3,632

受講生

263

受講レビュー

281

回答

4.7

講座評価

9

講座

仁荷大学で電子工学を専攻し、組み込みソフトウェア開発者として働いていました。

2008年から18年間、現場で講義を行ってきました。サムスン電子、LG電子、SKハイニックス、現代モービス、LIG D&A、ソウル大学校などの企業や機関で開発者を指導し、その経験を講義教材としてまとめました。

『RTOS』(2008)、『Linuxシェル』(2018)、『FreeRTOS』(2019)、『Cortex-M』(2022)、『ブートローダーベースの組み込みシステム』(2023)

YouTube ガイルスクール(https://www.youtube.com/@guileschool):組み込みと開発の講義

Macの自動化も15年間研究しています。Keyboard MaestroとAppleScriptで反復作業を減らす方法を教え、Final Cut Pro自動化プラグイン「Greenlight」を自ら開発して販売しています。自作のツールはGitHub(https://github.com/guileschool)で公開しています。

YouTube キャプテンマックボット(https://www.youtube.com/@captainmacbot):MacでAIと自動化を使う方法

講義のリクエストおよびその他のお問い合わせはguileschool@gmail.comまでお送りください。

もっと見る

カリキュラム

全体

26件 ∙ (4時間 30分)

講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

guileschoolの他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥15,014

34%

¥22,972