Linux応答時間の実力

Linux コーナ
ハードを隠ぺいしたお任せ OS を組み込みで使う可能性を探る
実験リサーチ!
カーネル内部
とことん可視化計画
Linux応答時間 の 実力
第
13 回 専用ハードでカウントしないと意外と誤差が大きい…
Linux で使う時刻
最終回
ファイルのタイム・スタンプを記録するなど時刻の
システムは OS の基本機能です.組み込み CPU では内
部にも RTC 機能がありますが,バッテリ・バックアッ
プ回路の容易さや精度の観点から CPU とは別に時計
IC(RTC)を実装することが多くあります.Linux で
は CPU 処理時間が一定でないため,時刻を CPU 内蔵
タイマでカウントするソフトウェア時計を使うと誤差
が生じます.そこで,高精度な時計 IC を使います.
ハードウェア時計やソフトウェア時計の特徴を表 1 に
示します.
今回は,この外付け時計 IC を調べてみます.
こんな実験
今回は,外付けの時計 IC について以下を調べます.
・実験 1…時計 IC(ハードウェア時計)を読み書きす
特徴
バッテリ・ 読み書
精度
バックアップ き速度
分解能
ハードウェア 時計
時計
IC
あり
低速
高い
一般に 1 秒
単位
ソフトウェア
変数
時計
なし
高速
低い
高分解能
度です.また一般的に RTC の分解能は 1s 単位である
ことが多く,本 RTC でもそのようになっています.
CAT724 では I2C の他にも RTC の 32.768kHz 出力周波
数が CPU の RCLK 端子に入力されています.RCLK
は CPU 内部で CMT(コンペアマッチ・タイマ)に接
続されています.
伝統的な OS や自作 OS などではタイマ割り込みの
際に時計変数をインクリメントして時間を計測する手
法 が と ら れ る こ と が 多 く あ り ま す.Linux で は
・
実験 2…時刻分解能を調べる
● 実験用ハードウェア
本 連 載 で 使 っ て い る SH-4 搭 載 Linux ボ ー ド
CAT724 の時計の構成を図 1 に示します.
CPU と RTC は I2C バスで接続されており,時計レ
ジスタの読み込みには I2C による通信を利用します.
jiffies という変数がまさにこれに当たります.タ
イマ割り込みごとに jiffies がインクリメントされ
ます.従って jiffies を数えれば現在経過した時刻
が分かります.
Linux では一定の間隔ごとにタイマ割り込みが発生
します.タイマ周期は HZ マクロで定義されます.一
般的な PC では HZ = 250(4ms 周期)
,組み込みの SH-
そのため,RTC の読み出しには時間がかかります.
本 RTC は 0 〜 50℃の範囲において 25ppm 以下の精
CPUクロックを
(ルネサス エレクトロニクス)
50ppmで生成する SH7724
システム・
クロック
分 類
● 簡易的に済ませるソフトウェア時計
る時間を測る
33.333MHz
表 1 ハードウェア時計とソフトウェア時計の特徴
おさらい:時計の動作
● 時計 IC を読み書きする時間や分解能を調べる
発振器
海老原 祐太郎
CMT
25ppm,
高精度の外部クロックでコン RX-8571LC
0∼50℃
ペアマッチ・タイマを動かす (エプソン)
I2C
RCLK
RTC
32.768kHz
タイマ割り込みはシス
テム・クロックを使う
…精度が低い
メモリ
ソフトウェア時計
として変数を格納
バッテリ
(キャパシタ)
図 1 実験に使う SH-4 搭載ボード CAT724 のタイマ構成
2015 年 4 月号
第 1 回 電源投入からカーネルが起動するまでの動作(2013 年 11 月号)
第 2 回 ハード制御で需要! 割り込み処理を時間で終わらせる三つのしくみ(2013 年 12 月号)
第 3 回 マルチタスク OS のキモ! タスク切り替えの基本動作(2014 年 1 月号)
149