マイクロ・プロセッサでの、テクニック

ユーザ・モード命令(ユーザランド)で、セマフォを作るなど。

1.セマフォ命令/テスト・アンド・セット命令

一般に、同期/排他制御の基本操作としてセマフォ(semaphore)がある。
それを、一命令で実現しているものがセマフォ命令である。
一般に、セマフォ命令は、テスト・アンド・セット(test & set)命令と同値で ある。
テスト・アンド・セット命令は、あるメモリの中の古い値をテストしながら、 新しい値を書き込む命令である。テスト結果は、条件判断命令などで判定す る。
テスト結果が、すでに使用中であれば、そのセマフォが開放される まで、待つべきである。
テストと新しい値のセットが、不可分(アトミック)に行われるのが、 重要である。
CPUに備わっているテスト・アンド・セット命令は、操作中に割り込みまれる ことが無いので、不可分操作を行うのに、いちいち、CPUを割り込み禁止状態にしな くても良い。
なおかつ、SMPやマルチコア対応のテスト・アンド・セット命令は、SMPなど でも不可分性が有効であり、ユーザランドで同期/排他制御の可能なSMPソフト ウェアを作成することができる。

さて、1970年代に設計されて、ポピュラーだった、8bit CPU(マイクロ・プロセッサ)の ほとんどには、表立っては、 テスト・アンド・セット命令やセマフォ命令は備わってない。
そういうCPUで、テスト・アンド・セットを不可分にできるか?
ここでは、その方法を紹介する。


2. 符号付き比較命令が無い機械での符号付き比較

(この項は、UNIXマガジン 1991年12月に掲載した、私の文章の一部と類似)

機械語命令における符号付きというのは、2の補数表示というのが、通常。
ここでも2の補数表示の整数の比較について述べる。

6800や6809は、符号付き比較命令を持っている。
Z80や8080には、符号付き比較命令が無い。 そういう機械で、符号付き比較を行う方法。

たけおか(竹岡尚三)のホームページ