専用プログラムステータスレジスタ(PSR)
Cortex-M3には特殊レジスタとして、「専用プログラムステータスレジスタ(PSR)」と呼ばれるプログラムの実行状態を示すレジスタがあります。専用プログラムステータスレジスタ(PSR)は、システムレベルのプロセッサステータスを表し、次の3つのカテゴリに分けられます。
Cortex-M3には特殊レジスタとして、「専用プログラムステータスレジスタ(PSR)」と呼ばれるプログラムの実行状態を示すレジスタがあります。専用プログラムステータスレジスタ(PSR)は、システムレベルのプロセッサステータスを表し、次の3つのカテゴリに分けられます。
T-Kernelでは、メッセージの送受信ができる機能を複数用意していますが、その一つとしてメッセージバッファがあります。メッセージバッファは、可変長のメッセージを送受信することのできる同期・通信機能の一つです。
Cortex-M3プロセッサは、汎用レジスタの他に特殊レジスタを持っています。特殊レジスタは主に割り込みの処理や設定に使われます。純粋にデータ処理や間接アドレッシングに使うレジスタは13本です。その他に、プログラムカウンタ(PC)、リンクレジスタ(LR)、スタックポインタ(SP)があります。
「あるタスクの処理は他のタスクの処理が完了してから実行したい」場合などに利用できる機能としてイベントフラグがあります。イベントフラグでは、処理完了などのイベントの意味を表すフラグを、ビットパターンで表現することによってタスク間の同期を行います。
Cortex-M3は3段パイプライン処理です。3段パイプラインの3段とは「フェッチ」「デコード」「演算(格納含)」です。パイプライン処理とは、一つの操作を複数の部分操作に分解し、それぞれが独立に、かつ同時に処理できるユニットを用意し、並行して動作させる並列処理のことを言います。
T-Kernelには、このような複数の処理を並列して実行させる機能があります。T-Kernelでは、このような並列に実行する際の処理の単位を「タスク」と呼びます。T-Kernelで動作させるプログラムは、一つのタスクの中では逐次的に実行されますが、異なるタスクの間では並行して実行されることになります。
通常のマイコンにはスタックポインタは一つしかありません。しかしCortex-M3はスタックポインタ(SP)を2つ持っています。汎用レジスタの13番がSPになっています。R13(SP)は、メインスタック(SP_main) とプロセススタック(SP_process)との間で切り替わるバンクレジスタの構成になっています。
リアルタイムOSは、タスクと呼ばれる処理のまとまりを切り替えるための時間や、リアルタイムOSが提供する機能に要する時間があらかじめ予測できたり、発生したイベントに対して高速に応答できたりします。リアルタイムOSを利用することで、リアルタイム性をもつプログラムの作成が容易になります。
Cortex-M3はアンアラインド・データ・アクセスをサポートしています。8ビット、16ビット、32ビットデータをRAM等のメモリに格納する場合、アンアラインド・データ・アクセスをサポートしていれば、無駄な領域を作らず各々のデータをRAMに格納することができます。例えばSRAMメモリでは25%以上削減可能です。