1

ldrex/strexこの値は、(素晴らしい)同期プリミティブを使用するデータ構造がメモリ内でどのように配置されるかに影響するため、興味があります。

ARMv7-M アーキテクチャ リファレンスには次のように書かれています。

タグ付きメモリ ブロックのサイズは、排他予約グラニュールと呼ばれます。Exclusives 予約グラニュールは、次の間で実装定義されています。

  • == 2 を使用した実装では、1 つの単語
  • == 11 の実装では 512 語。

したがって、STM32F407 などの特定の実装では、使用されている値を見つけることができるはずです。しかし、私が調べたさまざまな文書では、できません。

誰か知っていますか?また、どうやって見つけましたか?

4

1 に答える 1

2

STM32F407 には Cortex-M4 コアが搭載されているため、ERG のサイズは実際には 4GB です。

Cortex-M4 TRMから:

プロセッサ内のローカル モニタは、物理アドレスを保持せず、アクセスを前の LDREX のアドレスと一致するものとして処理するように構築されています。これは、実装された排他予約グラニュールがメモリ アドレス範囲全体であることを意味します。

STM32F407 TRM は、外部モニターを実装するシステムについては何も言及していないので、そうではないと思います。とにかく、同期する他のCPUがなければ、それほど大したことではありません-DMAによる上書きに対して、読み取り-変更-書き込みをアトミックにする必要がある正当な理由を簡単に考えることができません。

于 2016-04-15T13:47:57.483 に答える