ブックマーク / yamasa.hatenablog.jp (3)

  • Apple M1の参照カウントは本当に速いのか - yamasaのネタ帳

    Apple M1に関して以下のようなツイートが話題になった。 18/ Another "magic" trick is how their "Swift" programming language uses "reference counting" instead of the "garbage collection" in Android. They did something in their CPU to double the speed of reference counting.— Robᵉʳᵗ Graham😷, provocateur (@ErrataRob) 2020年11月26日 fun fact: retaining and releasing an NSObject takes ~30 nanoseconds on current gen Intel, and ~6.

    Apple M1の参照カウントは本当に速いのか - yamasaのネタ帳
    tasshi820
    tasshi820 2021/01/30
    RMW操作によるインクリメント/デクリメントだけを見ると確かに速いが、総合的に見ると参照カウント自体が並列実行との相性が悪い
  • メモリアクセスのセマンティクスとApple siliconの裏技(?)について - yamasaのネタ帳

    アウト・オブ・オーダー実行について補足 前回の記事で「アウト・オブ・オーダー実行」について特に説明せずに話を進めてしまったことに気づいたので、まずはそれについて簡単に補足しておこう。 コンピューターの性能向上の歴史はレイテンシーとの戦いの歴史でもある。 colin-scott.github.io 上のサイトは年代毎にコンピューターシステムでの各種レイテンシーがどのように変化していったかを紹介している。1990年代前半はキャッシュメモリとメインメモリとの間のレイテンシー差はそれほど大きくなかったが、その後の技術革新によって現在はL1キャッシュとメインメモリとの間に100倍くらいのレイテンシー差があるようになってしまった。これはつまり、プログラム実行中にメインメモリへのアクセスが発生してしまうと、それだけ長いレイテンシーの間CPUの処理を進めることができなくなってしまうことを意味する。そのため

    メモリアクセスのセマンティクスとApple siliconの裏技(?)について - yamasaのネタ帳
    tasshi820
    tasshi820 2021/01/30
    セマンティクスによって挙動が規定されているので、各アーキテクチャのメモリアクセスの詳細仕様を意識しなくて済む
  • 「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳

    Apple M1についての面白い記事を見かけて、久しぶりにメモリモデル屋(?)の血が騒いだのでブログを書く。 note.com 強いメモリモデル 現代のCPUアーキテクチャでは、x86(64bit, 32bitどちらも)が「強いメモリモデル」を採用しており、それ以外のメジャーなCPUが「弱いメモリモデル」を採用している。この「強いメモリモデル」「弱いメモリモデル」について、まずおさらいしておこう。 以下のように、2つの変数a, bに対して異なるCPUコアが同時にアクセスしたとする。 int a = 0; int b = 0; CPU1: a = 1; b = 1; CPU2: int r1 = b; int r2 = a; (上記はC言語に似た疑似コードを用いているが、実際は機械語命令になっていると考えてほしい。つまり、CPU1は変数a, bの示すメモリアドレスに対するストア命令を実行して

    「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳
    tasshi820
    tasshi820 2021/01/30
    メモリアクセス順序保証の話。 プログラムの並列実行において、命令の実行順を入れ替えるアウトオブオーダー実行(OoO)は一般的に行われているが、無条件なリオーダーは逐次実行では起こり得ない状態遷移を引き起こ
  • 1