PTM(Parallel Task Machine)¶
はじめに¶
PTMはParallel Task Machineの略で、SF32LB57xのハードウェア資料に記載されたアーキテクチャブロックです。通常のファームウェアループではタイミングを保ちにくく、固定機能ペリフェラルでは対応できない一方、メインのCortex-M33を継続的に動かすほどではない処理を担う、プログラマブルなペリフェラルタスク実行エンジンです。
製品設計では、決定論的な動作が求められるペリフェラル処理をPTMに任せられます。たとえば、サイクル単位のI/Oシーケンス、独自プロトコル、センサーのデータ収集、PWMに類する波形の生成、トリガーへの高速応答、外部イベントに連動した簡単なレジスター/メモリー操作などです。
役割分担はシンプルです。CPUがPTMのタスクを設定・管理し、PTMがI/O、FIFO/DMA、イベント、AHBバスに連携して、繰り返し発生するタイミング依存の処理を実行します。そのためPTMは、GPIO波形を出力するだけの補助機能ではありません。ペリフェラル処理を自動化する、小型のプログラマブル実行エンジンです。
標準ペリフェラルでは必要なタイミングやプロトコルを実現できず、CPUによるポーリングではレイテンシや消費電力、ファームウェアの複雑さが増す場合に、このページを参考にしてください。ハードウェアとファームウェアの役割分担を設計するエンジニア向けの解説であり、一般的なGPIOやタイマーの使い方を説明するものではありません。
PTMが必要な理由¶
マイクロコントローラーでは、アプリケーション処理とペリフェラルのタイミング要件がかみ合わないことがあります。製品全体としてCPU性能が十分でも、低レベルの処理によってファームウェアが不必要に複雑になる場合があります。たとえば、次のような処理です。
- ビット単位、またはサイクル単位の精度が求められるI/Oシーケンス
- UART、SPI、I2C、CANでは実装しにくい独自のシリアルプロトコル
- トリガーへの即時応答が必要なセンサーのポーリングやサンプリング
- 標準的なタイマー出力では実現できないPWMに類する制御
- ペリフェラルイベントに連動する、小規模なデータ転送やレジスター操作
- 各処理のたびにアプリケーションCPUを起こさずに行う、複数ペリフェラル間の連携
こうした処理を割り込みで行うと、割り込み負荷が増え、レイテンシの面でもリスクが生じます。ビジーウェイトではCPU時間と電力を消費し、外付けロジックを追加すれば基板設計が複雑になります。PTMはその中間の選択肢として、ファームウェアから制御できる小規模で決定論的なペリフェラル処理を担います。
SF32LB57xアーキテクチャにおけるPTM¶
PTMは、SF32LB57x SoCのI/O、イベント、FIFO/DMA、AHBバスに接続された小型のプログラマブルエンジンです。SF32LB57xで資料に記載された機能として扱い、他のSF32ファミリーでも利用できると決めつけず、対象デバイスの資料で対応状況を確認してください。
アプリケーション/ファームウェア
│
▼
CPUがPTMタスクを設定
│
▼
PTMが決定論的なペリフェラル処理を実行
│
├── I/Oの読み書き
├── FIFO/DMAによるデータ転送
├── AHBメモリー/レジスターへのアクセス
├── イベント待ち/固定時間の遅延
└── CPU割り込み/内部イベント通知
PTMは小規模な独自命令列を実行し、ピンの制御にとどまらない処理ができます。I/Oの読み書きやイベント待ちに加え、FIFO/DMAを使ったデータ転送、AHBメモリーやペリフェラルレジスターへのアクセスも行えます。上位のファームウェアによる処理が必要になった段階でCPUに通知します。
標準的な処理には従来どおり標準ペリフェラルを使い、専用機能では対応しにくいタイミング要件にはPTMを使う、という設計が可能になります。
中核となる機能¶
SF32LB57xのハードウェア設計ガイドには、PTMブロック1基、16チャネルと記載されています。ピン多重化表にはPTM1_CH0~PTM1_CH15が示されています。SDKの定義と合わせて、資料で確認できる主な機能は次のとおりです。
- 個別に制御できるPTM実行リソース
- コンパクトな独自命令セット
- 内部TCMまたはシステムバスからの命令実行
- バスアドレスの読み書き
- データ操作
- 条件分岐とループ
- I/Oの読み書き
- トリガー待ち
- 固定時間の遅延
- PTM TCMから実行する場合のサイクル単位のタイミング制御
- PTMブロック全体で16のI/Oチャネル
- DMAインターフェースを備えたFIFO
- メモリーやペリフェラルレジスターを操作するためのAHBバスアクセス
- CPU割り込みの生成
- タスクフローの連携に使う内部イベント
- インデックス付きPTMリソース向けのリセット、開始、一時停止、シングルステップ制御(SDK定義)
これらの機能により、PTMは単なるピンシーケンサーではなく、決定論的なペリフェラル処理を自動化する実行ブロックとして機能します。
実行リソースの構成: SDK v2.5.1のレジスター定義にはインデックス0~7の制御・レジスター群があり、命令定義も同じインデックスでTCMリソースを示しています。利用可能な資料だけでは、SDKのインデックスと物理的な処理コア数との対応は確認できません。インデックスの数からコア数を推定せず、対象デバイスの資料とSDK実装で利用可能なリソースを確認してください。
実行モデル¶
PTMは独自形式の命令を実行します。命令セットは小規模ですが、ペリフェラル処理のシーケンスを構成するために必要な操作を備えています。
- 制御フロー: 条件判定、ジャンプ、ループ、待ち、遅延
- I/O制御: 対応するI/Oチャネルの読み書き
- データ処理: 基本的な算術演算とビット演算
- バスアクセス: AHBバス経由でのメモリーやペリフェラルレジスターの読み書き
- 同期: トリガー待ち、割り込みの生成、内部イベントによる連携
タスクをPTM TCMから実行すると、サイクル単位でタイミングを制御できます。独自プロトコルやI/Oシーケンスでは、この点が重要です。CPUが信号の各エッジやタイミングスロット、短い処理区間に逐一応答する必要はありません。
PTMに適したタスクは、一般に小規模で、処理内容とタイミングが明確です。処理が高水準になったり、分岐が増えたり、アプリケーションの方針判断を含むようになったりした場合は、CPU側で実行する方が適切です。
IO、FIFO、DMA¶
SF32LB57xのPTMブロックは、合計16のI/Oチャネルを備えています。独自インターフェースのタイミング制御、複数ピンの監視、複数信号からなるシーケンスの生成に利用できます。
PTMは、DMAインターフェースを備えたFIFOもサポートします。独自プロトコルの実装では、ピンの状態を切り替えるだけでなく、データの受け渡しも必要になることが多いためです。CPUがバイトやワードごとに介入せずに、メモリーとI/O処理の間でデータを転送できます。
たとえば、次のような処理を構成できます。
- 独自インターフェースを介したデータのシフト
- 繰り返し発生するI/Oパターンの取り込みや生成
- ペリフェラルイベントに連動したデータ転送
- 小規模なプロトコルトランザクションのバッファリング
- CPUをクリティカルな処理経路に介在させず、DMAからタスクへデータを供給したり、タスクのデータをDMAへ渡したりすること
イベントと割り込み¶
PTMはイベントを中心に動作します。イベントまたは固定時間の経過を待つことができ、内部イベントでタスクフローを接続できます。利用可能な資料では、SDKのリソースインデックスと物理的なPTMコア数との対応は明らかにされていません。一部のイベント経路ではCPUに割り込みを通知できるため、ファームウェアは処理が所定の区切りに達したときにだけ起動・応答できます。
これがPTMを使うシステム上の主な利点です。低レベルのタイミング処理をPTMに任せ、ファームウェアには明確なイベント境界を示せます。CPUは常時ポーリングしたり、各タイミング区間で割り込みを処理したりせずに、PTMタスクを設定して実行させ、結果を受け取れます。
PTMの代表的な用途¶
SF32LB57xの設計では、固定機能ブロックでは対応しにくく、通常のファームウェアループではタイミングを保ちにくいペリフェラル処理にPTMが役立ちます。
代表的な用途は次のとおりです。
- 独自インターフェースプロトコル
- 独自PWMやパルス生成
- センサーの自動データ収集
- トリガーへの高速応答
- 複数モジュール間のスケジューリング
- メモリーやレジスターの一括操作
- 外部デバイスを制御する小規模で決定論的な処理ループ
- センサー、ディスプレイ、アクチュエーター、コンパニオンICとアプリケーションファームウェアとの間にある、プロトコルのタイミング差の吸収
適用範囲と限界¶
標準ペリフェラルで要件を満たせる場合は、PTMで置き換える必要はありません。一般的な用途では、UART、SPI、I2C、CAN、SDIO、I2S、PDM、タイマー、DMAを引き続き第一候補としてください。PTMが有効なのは、必要な動作がこれらの固定機能の範囲から外れる場合です。
PTMによるCPU消費電力への影響¶
PTMを使うと、短時間で完了する決定論的なペリフェラル処理のためにCPUを起動する回数を減らせる場合があります。CPUがPTMタスクを設定した後は、処理中の関与を抑え、ファームウェア側の対応が必要な区切りで応答できます。
この仕組みは、たとえば次の処理が必要なウェアラブルやAIoT製品で有用です。
- センサーやGPIOの状態変化を監視する
- 短いデータバーストを収集する
- 独自の外部コンポーネントを制御する
- アプリケーションコアが常時動作していない間もタイミングを維持する
- 繰り返し発生するペリフェラル処理で割り込み頻度を抑える
実際に得られる消費電力の低減効果は、クロック制御、ウェイクアップ方針、コードとデータの配置、ペリフェラルの状態、ファームウェア構成に左右されます。それでもPTMなら、短いペリフェラル処理を実行するたびにCPUを起動する必要はありません。
PTM、RP2040 PIO、Nordic PPI/DPPI¶
PTM、RP2040 PIO、Nordic PPI/DPPIはいずれも、タイミングが重要な処理でCPUの負荷を抑える仕組みです。ただし、動作するアーキテクチャ層が異なるため、相互に置き換えられるものではありません。
- PTMはプログラマブルなペリフェラルタスク実行エンジンです。独自のタスク命令を実行し、I/O、イベント、FIFO/DMA、AHBメモリーやレジスターへのアクセスを組み合わせられます。
- PIOはプログラマブルなI/Oステートマシンです。GPIOのタイミング制御や独自のシリアルプロトコル向けに、小規模な命令プログラムを実行します。
- PPI/DPPIはプログラマブルなペリフェラル間接続機構です。ペリフェラルのイベントを既存のペリフェラルタスクへ転送します。命令の実行やデータ処理は行いません。
| 比較項目 | SF32LB57x PTM | RP2040 PIO | Nordic PPI/DPPI |
|---|---|---|---|
| 基本的な役割 | I/Oのタイミング制御、独自プロトコル、センサー収集、イベント連動のペリフェラル処理を行うプログラマブルなタスク実行エンジン。 | GPIOを使った決定論的な制御や独自シリアルプロトコルを実行するプログラマブルなI/Oステートマシン。 | 必要な接続先が用意されている場合に、CPUを介さずペリフェラルのイベントとタスクを接続するハードウェア機構。 |
| 実行ユニット | インデックス付きのPTM実行リソース。対象デバイスで利用できる範囲を確認する。 | PIOブロックを2基搭載し、各ブロックに4つ、合計8つのステートマシンを備える。 | イベントを伝えるチャネル。プログラムは実行しない。 |
| 内部の動作 | PTMが独自のタスク命令を実行する。 | ステートマシンがPIO命令をサイクル単位で実行する。 | PPIはイベント端点とタスク端点を接続する。DPPIではペリフェラルが共有チャネルにイベントを発行し、タスクを購読する。 |
| タイミング制御 | PTM TCMから実行する場合、サイクル単位で制御できる。待ちと固定遅延にも対応する。 | 待ち命令と遅延スロットを使い、ステートマシンをサイクル単位で動作させる。 | イベントで既存のペリフェラルタスクを起動する。タイミングは接続するペリフェラルと相互接続の実装による。 |
| I/O | SF32LB57xのPTMブロックは合計16のI/Oチャネルを備える。 | ピン制御の設定を通じて、選択したGPIOピンを命令の対象にする。 | GPIO波形を直接生成しない。GPIOTEやタイマーなどが提供するタスクを起動できる。 |
| 命令とロジック | I/O、バス読み書き、データ操作、条件分岐、待ち、遅延を行う独自命令セット。 | ピンI/O、シフト、待ち、ジャンプ、FIFOのpush/pull、IRQ、データ移動を行う小規模な命令セット。 | 命令実行、ループ、分岐、データ処理は行わない。 |
| メモリー/レジスターアクセス | AHBメモリーおよびペリフェラルレジスターにアクセスできる。 | 主にGPIO、FIFO、シフトレジスターを扱う。通常、データや設定はCPUまたはDMAが供給する。 | メモリーや一般的なペリフェラルレジスターにはアクセスせず、利用可能なイベント端点とタスク端点だけを接続する。 |
| FIFO/DMA | DMAインターフェース付きFIFOに対応。 | TX/RX FIFOを備え、一般にDMAと組み合わせて利用する。 | 接続機構自体にデータ経路はないが、DMA対応ペリフェラルのタスクを起動できる。 |
| CPUとの連携 | CPU割り込みを発生させ、内部イベントでタスクフローを接続できる。 | IRQフラグ、FIFO、CPU/DMAとの連携を使う。 | CPUがチャネルを設定すれば、実行時のイベントからタスクへの起動はペリフェラル側で自律的に行える。 |
| 代表的な用途 | 独自インターフェース、独自PWM、センサーの自動収集、メモリー/レジスターの一括処理、複数モジュールのスケジューリング。 | UART/SPI/I2Sに類する独自インターフェース、WS2812に類する波形、ピンレベルのシリアルプロトコル、GPIOの精密なタイミング制御。 | RTCやタイマーのイベントでADC変換、カウント処理、その他の公開された標準ペリフェラルタスクを開始する。 |
各方式の内部動作¶
各方式の実行経路を次に示します。
PPI: イベント端点 ──> PPIチャネル ──> タスク端点
DPPI: イベントを発行するペリフェラル ──> DPPIチャネル ──> タスクを購読するペリフェラル
PIO: CPU/DMA ──> PIOステートマシン命令 ──> GPIOのタイミング制御とFIFO
PTM: CPUによる設定 ──> PTMタスク命令 ──> I/O+イベント+FIFO/DMA+AHBアクセス
PPIとDPPIは命令を実行せずにイベントを伝達しますが、接続できるのは既存のイベントとタスクに限られ、新しいプロトコルロジックは定義できません。PIOはステートマシンでピンの動作を定義できますが、主な対象はGPIOとFIFOです。PTMはより幅広い処理を担い、I/Oのタイミング制御、イベント待ち、データ転送、レジスターアクセス、小規模なタスク間連携を一連の処理として実行できます。
PIOは待ち条件やFIFOの満杯・空状態によって実行が停止することがあります。システムDMAによるデータ供給のタイミングも、命令タイミングだけでは保証できません。イベント接続にも実装に依存するレイテンシがあります。これらのアーキテクチャの違いだけで、消費電力の優劣は決まりません。DPPIで電源ドメインをまたぐには、対象デバイスが対応するブリッジを実装している必要があり、すべてのDPPIシステムで可能なわけではありません。
Nordic PPIとDPPI¶
PPIは、nRF52ファミリーなどに採用されているNordicの従来型モデルです。ソフトウェアで各チャネルにイベント端点とタスク端点を割り当てます。チャネルには追加のタスク端点(fork)を設けることもできますが、イベントとタスクを明示的に接続する方式です。
DPPIは、より新しいNordicのモデルです。ペリフェラルがチャネルにイベントを発行し、1つ以上のペリフェラルタスクが同じチャネルを購読します。イベントの発行側とタスクの購読側を分離できるため、新しいマルチドメイン構成に適しています。信号が電源ドメインをまたぐ場合は、PPIブリッジを使って、対応するDPPIチャネルをドメイン間で伝達できます。
| 比較項目 | PPI | DPPI |
|---|---|---|
| 構成方法 | ソフトウェアがチャネルにイベント端点と1つ以上のタスク端点を割り当てる。 | ペリフェラルのイベント発行側とタスク購読側が共通のチャネルを選ぶ。 |
| 接続方式 | イベント端点とタスク端点を明示的に接続する。 | 発行/購読方式で接続する。 |
| 1つのイベントから複数のタスクを起動 | 複数のチャネル、またはチャネルのforkタスク端点を使う。 | 複数のタスク購読側が、同じイベントチャネルを購読できる。 |
| 主な対応デバイス | nRF52の多くを含む、従来型のNordic PPI対応デバイス。 | 分散イベントシステムを実装した、より新しいNordicデバイス。 |
| 実行機能 | 命令実行やデータ処理は行わない。 | 命令実行やデータ処理は行わない。 |
スマートウォッチのセンサーハブのユースケース¶
一般的なスマートウォッチのセンサーハブでは、まず標準のI2C/SPIペリフェラル、DMA、タイマー、低消費電力時のウェイクアップ動作を検討します。そのうえで、必要な処理を次のように分類してください。
- 通常のサンプリング処理: RTCやタイマーの満了を受けて対応する標準ペリフェラルタスクを起動し、処理完了時やしきい値到達時にCPUへ通知する方法です。Nordicでは、従来型デバイスならPPI、新しいデバイスならDPPIが、このような「イベントから既存タスクを起動する」処理に適しています。PIOやPTMのプログラムは不要です。
- 独自の電気的プロトコル: 標準I2C/SPIでは扱えない波形、ビット幅、タイミングがセンサーから要求される場合は、PIOでピンレベルのプロトコルを実装する方法が適しています。
- 独自のセンサー処理フロー: 複数のトリガーを待ち、複数のI/Oを制御し、短いデータを転送し、レジスターへアクセスしながら複数の段階を連携させる必要がある場合、SF32LB57xではPTMが適しています。処理の区切りでCPUに通知できます。
PPI/DPPI、PIO、PTMは、優劣を競う代替手段ではありません。それぞれイベント接続、ピンレベルのプロトコル、ペリフェラル処理の自動化を異なる層で担います。SF32LB57xでは、まず標準ペリフェラルで要件を満たせるかを確認し、必要なタイミングや処理フローがその範囲を超える場合にPTMを検討してください。
参考資料: SiFli PTM命令定義、RP2040データシート、Nordic PPI仕様、Nordic DPPIイベントシステム。
設計指針¶
タイミングと消費電力の制約: 命令をサイクル単位で制御できても、トランザクション全体の時間が一定とは限りません。AHBアクセス、DMA完了待ち、外部イベント待ちは可変の遅延を生じさせます。必要なPTM、メモリー、ペリフェラルのクロックと電源ドメインを維持してください。CPUが処理していないからといって、すべてのSoCスリープモードでPTMが動作するわけではありません。維持するクロックやウェイクアップの負担を含む総エネルギーを測り、標準ペリフェラルを使う実装と比較してください。
リソースの使用権: SDK v2.5.1のSF32LB57x向けRAMless DPIディスプレイドライバーは、SDKで「PTM core 0」と識別される実行リソース、そのTCM、イベント0、関連する割り込み、割り当てたDMAチャネルを使用します。このSDK上の識別名から物理的なPTMコア数は判断できません。これはバスアクセスとDMA連携の実例ですが、そのリソースを自由に再利用できるという意味ではありません。動作中のドライバーが使うリソースを上書きしないでください。CPUとDMA間でバッファーの使用権を明確にし、必要に応じてキャッシュメンテナンスを行ってください。
まず、対象デバイスがSF32LB57xであり、設計に必要なPTM機能が資料に記載されていることを確認してください。次のような条件が複数当てはまる場合は、PTMの利用を検討できます。
- CPUでの処理頻度が高く、消費電力やタイミングマージンへの影響が大きい
- I/Oエッジやトリガー応答に決定論的なタイミングが必要
- 標準ペリフェラルでは実装しにくい独自インターフェースを使う
- FIFO/DMAを使ったデータ転送が有効
- 小規模なステートマシンやタスク列で表現できる
- ファームウェアへの通知を処理上の区切りに限定したい
次の場合はPTMを避けてください。
- 標準ペリフェラルでプロトコルを問題なく実装できる
- 高水準で分岐が多いアプリケーションロジックを扱う
- タイミング要件に余裕があり、通常の割り込みやRTOSタスクで十分に対応できる
- 必要なPTMプログラムを開発するためのSDK、サンプル、ツールが整っていない
PTMを使う際は、タイミングを守る処理と製品の判断を担う処理を分けることが重要です。タイミング制御、短いデータ転送、イベントへの応答はPTMに任せ、製品の動作判断、エラー処理方針、大容量バッファー、複雑な状態管理はファームウェア側に残してください。
要点のまとめ¶
- SF32LB57xのハードウェア設計ガイドには、PTMブロック1基と16チャネルが記載されています。他のファミリーでは各デバイスの資料を確認してください。
- 対象デバイスとSDKで利用できるPTM実行リソースを確認してください。
- PTM TCMまたはシステムバスから、コンパクトな独自命令列を実行できます。
- I/O制御、バス/レジスターアクセス、データ処理、待ち、遅延、FIFO/DMA、割り込み、内部イベントに対応します。
- 固定機能ハードウェアと通常のファームウェアの間にある、タイミング要件の厳しい独自ペリフェラル処理に適しています。
- RP2040 PIOと共通する考え方もありますが、PTMはシステム内の他のリソースとの連携範囲が広く、扱えるタスクも多様です。
- SF32LB57xの設計では、対象デバイスの資料で必要なPTMリソースを確認できる場合、PTMは設計上の差別化要素になります。特に、独自センサーやディスプレイ、アクチュエーター、プロトコル接続、低オーバーヘッドのペリフェラル自動化に有効です。
最終更新: