Open4

M1とatomic operation

Atsushi EnoAtsushi Eno

https://www.dtmstation.com/archives/32814.html を見てこんな感想を書いたら

こういうコメントがあって

なるほど、ってなってその流れで「もしかしてリアルタイムオーディオ処理で必須になるAtomic操作も翻訳されない可能性がある…?」と思ってしまった。その疑問に対する答えではないのだけど、たぶん各種の前提知識が必要になりそうなので、いろいろまとめておきたい。

Atsushi EnoAtsushi Eno

リアルタイムオーディオ処理は2020年でもhot topicで、今年はこんな記事が出ている。

https://timur.audio/using-locks-in-real-time-audio-processing-safely

リアルタイムオーディオ処理ではスレッドをブロックしてはならず、これはmutex lockだけでなくunlockですら問題になりうるので根本的にmutexは使えない。代わりにatomicsとsemaphoreでマルチスレッドを乗り切ることになる。atomics対応を気にするのはこれが理由。

Atsushi EnoAtsushi Eno

Twitterではちょいちょい言及している人がいるけど、M1はunified memoryとしてCPU/DRAM/GPUがユニバーサルにメモリに直接アクセスできてCPUキャッシュが必要になる場面が減るらしい。

https://www.apple.com/mac/m1/

先のAtomicの実装のところで、atomicsは必ずメモリキャッシュをオペランドとする必要があるっていう話が書かれているけど、M1ではもしかしたらこの制約がなくなるのではないか。となると、もしかしたら、atomic operationまわりでボトルネックになっているリアルタイムオーディオ処理があるようなアプリケーションには、M1上ではパフォーマンスを改善できる可能性があるのかもしれない。