ビットバンディングとは何ですか?


16

ARM Cortex M3リファレンスマニュアルを読んでいますが、「ビットバンド」、「ビットバンド領域」、「ビットバンドエイリアス」という概念が表示されます。

ビットバンディングとは何ですか?


ビットバンディングとは何か、どのように機能し、どのように使用するかを説明するために、githubページを用意しました。ビットバンディングに関するほとんどの質問に答えていると思いますので、お気軽に(再)ご覧ください。

これは、ARMのCortex M3におけるビットバンディング機能に関する便利な紹介ですatadiat.com/en/articles/...
tawilヤヒヤ

回答:


8

ARM情報センターのように、自分のCortex-M3と-M4ドキュメンテーション、コンパイラーのドキュメント、およびその他のいくつかの場所でビットバンディングを指し、ビットバンディング>>ホームプログラマモデル。From Home> Cortex-M3用ソフトウェアの開発>ビットバンディング

ビットバンディングは、メモリの完全なワードをビットバンド領域の単一ビットにマッピングします。たとえば、エイリアスワードの1つに書き込むと、ビットバンド領域の対応するビットが設定またはクリアされます。

これは、単一ビットのアトミック操作を取得する方法のようです。

エイリアス領域に書き込む場合、32ビットワードのビット0を使用して、ビットバンディング領域に値を設定します。エイリアスアドレスから読み取ると、ビット0のビットバンド領域から値が返され、他のビットはクリアされます。


内部でビットバンド演算がどのように実行されるか、そして原子性に関して実際に保証されるものは何かご存知ですか?アトミックビットセットまたはビットクリア操作を容易にするためにチップを設計した場合、2つの上位アドレスビットを使用して、「通常アクセス」(00)、「1を書き込む」(01)、および「ゼロを書き込む」を選択します(1回)。さらに、これらのアドレスビットが0x11の場合、CPUにデータ出力を反転させます。そのようにして、読み取り-変更-書き込みを必要とせずに、1サイクルでビットを設定またはクリアできます。書き込みと同時にビットがハードウェアによって設定される場合でも、
...-supercat

1
リンクをたどるだけです。
tyblu

1
@AlKepp、私が使用した多くのシステムでビットを書くことは、中断できない行為を実行する単一の命令で本当にアトミックです。
Kortuk

1
@AlKepp、私はアトミック命令でこれを行うことができないシステムがあったことを暗示しようとしませんでした。あなたは、「少し書くことは本当にアトミックではない」と言った。私はこの主張に不同意されました。私はそれがアトミックであり、彼らが存在しない多くのシステムを使用してきました。
Kortuk

3
@ AlKepp、Cortex M3は、より多くのマイクロコントローラの例です。私にとって重要なことは、アトミックな指示が頻繁に存在する場合、存在しないとは言えないということです。ここの多くの人々は、メモリが内部であるほど十分に低いリソースである組み込みシステムを実行します。それは実際に私がコーディングを楽しんでいる唯一のシステムです。それはさておき、それが存在し、一般的に使用されているときにそれが存在しないことを誰かに伝えることは誤解を招く可能性があります。
Kortuk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.