錦です。
MacGおよび気になる、記になる...によると、macOS Venturaに採用されたオープンソース部分が公開され、その中にARMアーキテクチャでECCメモリに関するものがあった事がわかりました。
ECC
ECCメモリとは、エラーを自己修正する機能を持ったメモリのことです。主に、連続利用などでメモリのデータが壊れてしまう恐れがある場合に採用されます。ECCが採用されるような場面というのは例えばサーバーなど信頼性が求められる場面であり、コンシューマー向けにはあまりないので聞き馴染みがない方もいるかも知れません。ただ、3DCGの場面でもECCの効果はあるようで、ワークステーションでも採用されている場面があります。
ECCの利用にはメモリの対応の他、マザーとCPUの対応が必要となります。Intelプロセッサでは基本的にXeon(と何故かCore i3)がECCをサポートしている事が多いです。Macでは、iMac ProやMac ProというXeonを搭載したMacでECCメモリを採用しています。
このECCメモリの採用はApple Siliconでも続くようです。
ARMでのECCメモリの対応が発見されたのはXNUカーネルの部分。XNUカーネルとはMacのカーネル「Darwin」の一部であり、UNIXに依存しない部分のコードです。大本はMachなようですが、詳細を話すのはまた別の機会に。
正直なところ、ECCに対応した以上の話は今回はないので、これまでの情報から考えるに、少なくともM2 ExtreamはECCメモリ、M2 UltraももしかしたらECCメモリになるということでしょうか。そもそも毎世代Mac Studioが登場するかはわかりませんが、こうなると上位Mac StudioでもECC対応モデルが登場する可能性がありますね(Mac StudioをiMac Proと同グレードだと考えるとありえます)。
Rosetta on ...
そうそう。最近気になる話がありまして。今回のMacGの記事でも触れられていました。Rosetta 2の話です。Rosseta 2はmacOS上で動作するx86向けアプリケーションをArmプロセッサで動作させる事ができるエミュレータです。
そのRosetta 2ですが、どうやら部分的にオープンソースになった模様。というよりかは、今回公開されたコードの中にRosetta 2を呼び出すコードが含まれているということのよう。
Rosetta 2はWWDC 22の中で、macOS Venturaで動作するVirtualizationフレームワーク上で動作するARM Linux上で動作するx86向けアプリケーションをエミュレートすることができるようになりました。これはつまり、M1 Macで動作しているLinuxに対してもエミュレータを使うことができるようになったということを意味します。
* this particular CPU doesn't support TSO, resulting in the emulation of a particular beast, an x86 with relaxed memory ordering.
— Longhorn (@never_released) June 7, 2022
Linuxで動作するようになったということは、M1依存ではない可能性があるということにもなります。Longhorn氏は、Rosetta 2はARMv8.2以降の命令をサポートするならばApple Silicon以外でも動作する可能性があると指摘していました。
ただし、Rosetta 2は、x86/64と同等のメモリモデルであるTSO(Total Store Ordering)を利用しており、かつApple SiliconはTSOを有効にできるハードウェア的な実装があると見られています。つまり、Rosetta 2はソフトウェアのみならず、ハードウェア側からのアプローチもあるため、一概にApple Silicon以外でも動作するよいうわけではないようです。
参考:メモリアクセスのセマンティクスとApple siliconの裏技(?)について - yamasaのネタ帳
状況が変わって最近、Microsoftから登場したArmベースのSnapdragon 8cx Gen 3を搭載した開発者キット「Windows Dev Kit 2023」上のWindows 11上で動作するWSLにて、Rosetta 2が動作したという報告が上がりました。
Rosetta 2 on the Windows Dev Kit 2023 pic.twitter.com/7Mhzdti8zx
— Lily (@bendycatus) October 27, 2022
ただ、この件についてはこのツイート以外に探しても情報が見つからない(充てられているRosetta_289.3_patchedでググっても何も出てこない)のでもう少し情報がいります。なにか知っていたらぜひコメントやTwitterで教えて下さい。