BT

Windows 8の.NET開発者のARMing

| 作者: Jeff Martin フォローする 16 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2012年8月31日. 推定読書時間: 2 分 |

原文(投稿日:2012/08/29)へのリンク

 

.NET FrameworkとCommon Language Runtime (CLR)のアドバンテージのひとつは、開発者が基板となるハードウェアプラットフォームからが抽象化されていることによるベネフィットが得られることである。MicrosoftのCLRチームのプログラムマネージャであるAndrew Pardoe氏は先日、ARMアーキテクチャ上での実行を可能にするためのフレームワークのいくつかの変更について説明した。この動きは、64ビットコンピューティングへのスイッチよりも複雑で、Pardoe氏は違いを説明している。

Pardoe氏は、 Pardoe氏の見解によると、"....NET Frameworkはプラットフォームに依存しないように設計されているが、ほとんどがx86ベースのハードウェア上で実行されてきた"、結果としてARMで実行したい場合、開発者がいくつかのエリアで調査が必要になった:

  • ウィークメモリモデル、ただしより厳密なデータアラインメントが必要
  • 関数パラメータ処理の仕方の違い
  • Visual Studio下におけるプロジェクト構成の詳細

x86アーキテクチャプロセッサは、"... 読み書きがプログラムが指定したのと同じ順に行われることが保証されている"メモリモデルに強く依存する。この保証は、マルチスレッドプログラムをシンプルにしてくれる。対してARMプロセッサは、編成中に再編成が行われこの保証がない。結果としてPardoeによると、x86ベースのマシンでしか実行したことがないコードは、既存のマルチスレッドコードにまだ検出されていないバグが潜んでいるかもしれないと話す。

CLRのパフォーマンスを検討事項は、MicrosoftがどれだけARMプロセッサのメモリモデルを強要するかにある。"タイプセーフを保証してマネージドヒープに書き込むときのキーポイントでのメモリバリアの[挿入]..."などいくつかの変更が行われており、最善の結果を得るためにPardoe氏は、適切な場所にvolatileキーワードを使うことをを推奨している。

CLRはほとんどの場合、データのアラインメントに気をつけているが、開発者はこれに影響を受ける場合がある:

"1つ目は、構造体のレイアウトにExplicitLayoutカスタム属性をつけて明示的に指定した場合です。2つ目は、マネージドとネイティブコードの間で誤って指定されたレイアウトの構造体が渡される場合です。"

最後にほとんどが開発者がCLRのターゲットを単純にセットすることができ、彼らのVisual StudioプロジェクトはAnyCPUをターゲットにすると、生成されたコードはARM、x86、x64と互換がある。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT