ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Apple Silicon Macの新しいシステムアーキテクチャについて
Apple Silicon Macは、AppleのSystems-on-Chip (SoC) アーキテクチャを使い最新の強みをもたらします。CPUとGPUのタスクに統合メモリアーキテクチャを活用し、MetalやAccelerateといったApple SiliconがチューニングされたフレームワークでMac Appは驚くべきパフォーマンス上のメリットを享受します。ブート、セキュリティにおける新機能と変更点、またそれらがあなたのAppにどのように影響するかをお話します。
リソース
関連ビデオ
WWDC23
WWDC20
-
ダウンロード
“こんにちは WWDC2020”
WWDCへようこそ “Apple Silicon Macの 新しいシステムアーキテクチャについて” Core OSグループのギャヴィンです macOSをApple Siliconへ導入する仕事を 担当しています これらのシステムの変更点について ご紹介できることをうれしく思います これから新しい機能と― macOSアプリケーションでの 活用法をお話しします セキュリティ強化と アプリケーションの互換性にも触れます 後ほど同僚のアナンドが― ブート機能と復元のお話をします IntelベースのMacはマルチコアCPUと ディスクリート GPUで構成され― 最近のMacにはT2 チップも入っています T2 チップはApple PayやTouch ID Hey Siriを可能にしています ディスクリート GPU搭載のマシンは CPUとGPUにそれぞれメモリがあります
新しいApple Silicon Macは― これらを1つのチップに1つのシステム つまりSoCとしました すべてを1つのチップに構築すると― unified memory architectureになります つまりGPUとCPUが同じメモリで 動作するのです テクスチャやイメージや ジオメトリデータのような画像リソースを― CPUとGPU間で効率的に共有できます PCIe バスを通して データをコピーする必要はないのです MacでApple Siliconを使えば― iPhoneとiPad用に開発された技術を Macに導入することができます Apple Siliconは強力なビデオエンコーダと デコーダ そしてNeural Engineと― 行列乗算の機械学習アクセラレータを含む コプロセッサで構成されています
Macは長年 マルチコアCPUでしたが― IntelベースのMacにとって コアはすべて同じ性能でした Apple Silicon Macは最大の性能を 発揮するperformance coresと― 電力効率のよいefficiency coresの混合型です
asymmetric multiprocessing またはAMPと呼びます コアは同じアーキテクチャの機能を サポートし― 同じソフトウェアに命令を送ります macOSはこれらのコアを同時に使い― アプリケーションの最新の性能要件によって 適切なコアを設定します
ではアプリケーションでどのように macOSの新しい能力を活用すべきでしょうか? 新しいAPIを期待されているかもしれませんね しかし私たちは長年 すべてのプラットフォームのAPIの構築と― Apple Siliconのフレームワークの 最適化に努めてきました
GPUで作業を実行するためには― IntelベースとApple Silicon Macの両方で Metal APIを使うべきです Apple Siliconで unified memory architectureが― 力を発揮するタスクを実行すると 速度が上がります
ハードウェアビデオエンコーダと デコーダを活用するために― 現在のmacOSのAVFoundationと VideoToolboxを使うことができます 最高のパフォーマンスを得るには― ハードウェアが最適化される ピクセルフォーマットを使いたいでしょう Apple Siliconは特にこのような BiPlanarフォーマットの処理に効率的です BiPlanarという名称のコードがあれば 注意してくださいね
Core MLコードは どのMacでも動作します 機能的にはIntelベースのMacでも 利用可能ですが― Apple Siliconのほうが ずっと速く効率的です Neural Engineと 機械学習アクセラレータを利用しています
Core MLコードは何の変更もなしに Neural Engineで動作するはずです モデルがCPUだけで またはCPUとGPUで動作するように― 明確に設定してない事柄を 確認したい場合について Neural Engine上で動作するためには― computeUnitsをすべてに設定し それをデフォルトとします
Apple Siliconでは Accelerate frameworkを使いもっと直接的に― 機械学習アクセラレータを 活用することができます もちろんAccelerateやCompressionや simdフレームワークのすべては― IntelベースとApple Silicon Macの両方で 機能するよう調整されています
AMPに関して2つのアドバイスがあります まず作業アイテムのすべてに 必ずQoSを設定してください これらのQoSプロパティが どの作業を優先するかの指標になります 最高のパフォーマンスで 作業を完了するのか― 出力効率を優先すべきかを判断するのです
すべてのプラットフォームに QoSを正しく設定することが重要ですが― AMPのプラットフォームにおいては 特に重要です QoSがタスクを実行するコアを 決定するファクタだからです
2つめのアドバイスは Grand Central Dispatchを使うことです これもすべてのプラットフォームで 重要ですが― AMPシステムでは特に重要です
なぜでしょう?
コアにそれぞれ異なるパフォーマンスの 特徴がある場合― 複数のコアで作業を分ける際に 慎重さを要します それぞれに適切な割合のタスクを 分配する必要があるからです
concurrentPerformのような Grand Central DispatchのAPIは― タスクを最適に分配し すべてのコアで並行に作業が進むようにします
このようなAPIを使う場合― 必ずタスクを十分な数のイテレーションに 分けてください システムの負荷を効率的に分散できます “WWDC セッション” これらのフレームワークは 長年macOSにあるので― もっと理解したいなら 多くの資料がありますよ これらのWWDCセッションから 見てみてください
今年はMetalチームが 新しいセッションを行います Apple Silicon MacのMetalについてです
これでApple SiliconのmacOSの 説明を終わります 次はセキュリティについて話します
iPhoneに すばらしいセキュリティ機能を もたらしたSilicon その機能をMacに導入しました しかもMac本来の能力を失うことは まったくありません 機能の例としては書き込みXOR実行 カーネル整合性保護 ポインタ認証とデバイス分離があります
Apple Siliconは書き込みXOR実行と呼ばれる 制限を実施します メモリページは書き込み可能でも 実行可能でも構いませんが― 両方が同時になっていては いけません 書き込み可能かつ実行可能なページは セキュリティの脆弱性になり得ます ただし最新のアプリケーションの多くは JITコンパイラを組み込んでおり― JavaやJavaScriptなどの言語をサポートします これらのコンパイラは― しばしばメモリが書き込み可能かつ 実行可能であることに依存します
そこで我々は新しいAPIでメモリの― 書き込み権限と実行権限を 素早く切り替えられるようにしました すばらしいのは これが スレッドごとに機能することです 2つのスレッドが同じページで 異なる権限を受けられます これによりマルチスレッドJITでの 採用が容易になり― また高速で安全なJITコンパイラが実現します Apple Siliconにはメモリコントローラ内で ハードウェア・サポートがあり― OSカーネルのコードを不変にします カーネルがメモリに読み込まれると― カーネル整合性保護がカーネルコードを含む ページが変更されるのを防ぎます 追加ページが実行可能にされることもです 実行中に新しいコードがカーネルに 挿入されるような攻撃をブロックします
ポインタ認証はポインタの誤用を防ぎ― リターン指向プログラミングなどの 攻撃に対して強化できます 64ビットポインタの未使用ビットは ポインタ認証コードを格納するために使われ― ポインタが使われた時にチェックされます 現在 カーネルやシステムアプリケーション システムサービスで使用できるようにしています ポインタ認証のアプリケーションの配布を 開始する準備は まだ整っていません でも実験してみたければ 自分で設定できるboot-argがあります
PCIe デバイスはIOMMUを介して システムメモリにアクセスします IntelベースのMacでは― macOSは すべてのデバイスに システムメモリの共有ビューを提供します
Apple Siliconでは すべてのデバイスに 個別のメモリマッピングが与えられ― デバイスのアクセスは 意図するメモリのみに制限されます デバイス間のスヌーピングも防ぎます
PCIe デバイスドライバで DMA転送をセットアップするには― IOMapperとIODMACommand APIを 使用する必要があります デバイスからIOMapperを 取得していることを確認し― IODMACommandを構成する時に それをパスします
一部の古いドライバは このAPIを使わず― IOMemoryDescriptorで直接 getPhysicalSegmentを使います それでは うまくいきません 新しいプラットフォームに移植する前に 新しいAPIに更新する必要があります この古いAPIならカーネル拡張で書かれた IOKitドライバで使っているはずです
カーネル拡張は依然 サポートされていますが― 開発者 そしてユーザにとって 不便さが増していくでしょう 私が紹介した最後の3つのセキュリティ機能は カーネル拡張の開発に影響を与えます カーネル整合性保護を サポートできるようにするには― macOSがカーネル拡張をロードする方法を 変更する必要がありました つまり再起動が必要になります “カーネル拡張” そしてポイント認証です カーネル拡張を開発する場合 ポイント認証を有効にする必要があります プラットフォームの改善が進むにつれ カーネル拡張に関する摩擦は増すでしょう 昨年 CatalinaでDriverKitを紹介しました ユーザ空間で実行するドライバを構築でき― システムの安定性とセキュリティが向上します 開発するドライバにDriverKitを 検討してないなら 今そうすべきです DriverKitを使い始めるために このリソースをご利用ください セキュリティについては以上です 次に このプラットフォームでの アプリケーションサポートを見てみましょう
Rosettaは既存のx86_64アプリケーションを 実行するためのトランスレータです あらゆる種類のアプリケーションを実行します macOS Catalyst ゲーム… JITコンパイラが埋め込まれたWebブラウザなどの 複雑なアプリケーションもです
Metalを使用するアプリケーションは Apple GPUに適切なコマンドを直接生成 Core MLを使用する翻訳済みアプリケーションは Neural Engineで実行できます Rosettaのパフォーマンスと互換性は― Apple Siliconとソフトウェアチームの 連携により実現しました
Rosettaはアプリケーションが インストールされた瞬間から動作します App Storeかパッケージインストーラに トリガーされ― Rosettaはアプリケーション内の すべての実行可能コードの翻訳を開始 アプリケーションが我々のインストーラを 使用しない場合― 最初の起動時にDockに 余計なバウンスの表示が出ることがあります それから翻訳を開始します
またセキュリティは この翻訳プロセスに深く統合されています アプリケーションの翻訳は すべてコード署名されており― 1つのマシンに関連付けられ 安全に保存され OSのアップデートで更新されます アプリケーションが起動し 保存されている翻訳を読み込ませると― Rosettaはx86_64プロセスを 完全にエミュレートします システムコールインターフェースまでです 全システムのフレームワークを含め プロセスのすべてが翻訳されます Rosettaがインストール時に翻訳されてない コードに新しく遭遇した場合― その場でコンパイルします Rosettaは期待どおりの セキュリティを維持します 強化されたランタイム保護により 実行されている全プロセスに実施されます すべて うまくいくといいですが― アプリケーションをデバッグかプロファイルする 必要がある場合もフルにサポートされています Xcodeから直接 翻訳済みAppをビルドし 実行し Instrumentsからプロファイルできます LLDBなどのコマンドラインツールも使えます IntelベースとApple Silicon Macで 実行されるプロセスに違いがあります ページサイズ メモリの順序規則 mach_absolute_timeの頻度― 浮動小数点の動作の細かいところ これらは すべて変わります Rosettaで実行されるアプリケーションでは― すべてがIntelベースのMacでの動作と 一致することを確認しました Rosettaはx86へのAVXベクトル拡張を サポートしていません アプリケーションは使用前にマシンがAVXを サポートしているかチェックしているはずです 必要な場合 sysctlが使えます
Developer Transition Kitで実行されている 制限も いくつか出てきます そのハードウェアに 互換性の制限があるためです DTKのリリースノートに詳細があります 最後にアプリケーションがRosettaで 実行されている時に知る必要があれば― sysctl.proc_translatedでチェックします
以上 Rosettaでした 顧客が本当に欲しいのはアプリケーションの ネイティブARM64ポートです アプリケーションの移植と最適化については 多くの情報が― 開発者向けドキュメントWebサイトにあります アプリケーションの移植に関する アドバイス満載のセッションもあります ぜひチェックし ネイティブポートに着手してください 互換性のあるiPadとiPhoneアプリケーションも Macで利用可能となりました それについてのセッションもあります お役に立てたでしょうか macOSのApple Siliconと― 新しいセキュリティの強化と アプリケーションサポートの解説でした 次はアナンドが これらのシステムの ブートアーキテクチャを解説します ありがとう ありがとう ギャヴィン Apple Siliconへの移行は試行の連続で― ブート時の変革が大きな課題でした 今日は すべてをお話しします このセッションでは皆さんに 新たなブートの方法を説明します 起動やログイン方法が新しくなりました macOS 復元モードが変わり ブート時の安全性や データ保護も強化されました
Apple SiliconはiOSや iPadOSのセキュアブートで起動します 暗号化したAppleの署名を持つ要素だけを 選び取るのです このため 信頼できると証明されて初めて 起動するわけです macOSの起動時の安全性を高めてくれます
内蔵や外付けといった複数のmacOSも― 同じように安全に起動するように サポートしました AppleのmacOSなら どのバージョンでも起動できます これなら未来のmacOSで 以前のバージョンも使用可能です 新しいmacOS 復元も導入しました Apple Siliconの起動を説明します 今までより ずっとシンプルです 起動に使うキーは統一されました
Mac端末のTouch IDボタンを押し続けます デスクトップなら電源を入れ Startup optionsを立ち上げます Startup optionsは macOS 復元のUIです Startup optionsからは― UIやショートカットを使って 各種 機能やツールにアクセスできます 実際にお見せしましょう macOS 復元のStartup optionsのUIです Startup Managerに組み込まれています 起動や復元に関することならすべて macOS 復元だけで済ませられ― 新たなユーザ体験となっています 中でも紹介したいのはStartup Diskと Mac Sharing Modeです Mac Sharing Modeは ターゲットディスクモードの代わりをします ファイルレベルのデータへのアクセスを SMB経由で提供します 有効にするにはユーザ認証が必要です 次にStartup Diskです macOS 復元のStartup Diskは― それぞれのボリュームごとに セキュリティポリシーを選びます セキュリティはフルか縮小型 どちらか選択可能です 詳しく説明しましょう
Apple Siliconのフルセキュリティモードは トップクラスのセキュリティ技術です iPhoneと同じですね デフォルトで この状態です そして外付けディスクから起動しても セキュリティの強度は変わりません 安心ですよね 一方 縮小型セキュリティなら― 自分のMacを思うままに設定できます 素のままのMacです
これなら どのバージョンのmacOSも使えます Appleの署名が外されたものも同様です 認証を受けたカーネル機能拡張を インストールにするには― 縮小型セキュリティモードを選んでください 縮小型を有効にするには まずmacOS 復元の認証が必要です セキュリティ構成ツール “csrutil”を使えば― 特定のワークフローを対象とした セキュリティを構成できます 例えばあなたが カーネル機能拡張を開発したい人や研究者 Appleのプラットフォームを 開拓したい人なら活用してください csrutliを使えば安全性を高めることができます IntelベースのMacでは― アクティブなセキュリティポリシーが 全体に適用されました つまり複数のボリュームに macOSをインストールすると― 1つのダウングレードが 全体に影響してしまいます しかしApple Silicon Macなら― 独立したセキュリティポリシーが適用されます 開発中やテスト中のmacOSのセキュリティを ダウングレードしても― 別の端末はセキュリティが万全のまま 使用できるのです 次は新しいログイン方法です
きれいですね Apple Silicon Macでは ログインは統合されています 進化したグラフィックを搭載した 優れたUIを実現していながら macOSらしさは失っていません これはユーザがアンロックすることなく macOSをフル起動させられるからです このログインならFileVaultがオンの状態でも 新機能を導入できます CCIDやPIVと互換性のある ICカードの認証は― ビルトインサポートとして搭載されています さらにVoiceOverもサポートしています 次にデータ保護です T2と同じようにApple Silicon Macも デフォルトでデータ全体を暗号化します FileVaultがオンならユーザに委ねられます
さらにセキュアハイバネーションも サポートしています バッテリー残量が少ない時の アプリケーションの保存以外にも― セキュアハイバネーションは 静止時に記憶内容全体を保護します インテグリティやanti-replayによるものです Apple Siliconならではの機能です Apple Silicon Macの復元を説明しましょう ソフトウェアは macOSとmacOS 復元から 構成されています macOSにアクセスできない時は macOS 復元で再インストールし復旧させます では macOS 復元にアクセスできない時は?
Intelベースなら インターネット復元を使いますが―
Apple Silicon Macはシステム復元を使います 隠れた場所に格納されている 最小限のmacOSの環境です macOSやmacOS 復元を再インストールして Macを復元します
Apple Configurator 2もサポートするので― システム復元が機能しない時でも 復元できます macOSを削除し再インストールできるのです 今日はセキュリティ強化を含めた Apple Siliconの機能についてお話ししました macOSのアプリケーションならではの強みです アプリケーションの互換性や Rosettaも紹介し― 新しい起動時の機能や 復元手順についても説明しました Apple SiliconになったmacOSは 大きく進化しました このセッションでそれが伝われば うれしいです あなたのアプリケーションに 役に立ててもらえるのを楽しみにしています ありがとうございました
-
-
9:42 - Set up DMA transfer in a PCIe driver
// Get the IOMapper for the device IOMapper *mapper = IOMapper::copyMapperForDevice(device); // Use an IODMACommand; pass the mapper when initializing IODMACommand *dmaCommand = IODMACommand::withSpecification( outSegFunc, numAddressBits, maxSegmentSize, mappingOptions, maxTransferSize, alignment, mapper, refCon); // Keep the IODMACommand prepared for the duration of the i/o
-
14:31 - Check if running in Rosetta
// Use "sysctl.proc_translated" to check if running in Rosetta // Returns 1 if running in Rosetta int processIsTranslated() { int ret = 0; size_t size = sizeof(ret); // Call the sysctl and if successful return the result if (sysctlbyname("sysctl.proc_translated", &ret, &size, NULL, 0) != -1) return ret; // If "sysctl.proc_translated" is not present then must be native if (errno == ENOENT) return 0; return -1; }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。