x86とARM:PCで同時に動作できますか?

数年前に言われたように、PostPCデバイスはPCを置き換える必要がありました。 最後に? 私たちは異なる言語を話すデバイスを使用しており、場合によっては常に異なるデバイスを切り替える必要があります。 しかし、将来の到着とともに ARMベースのPCでは、x86を搭載した混合プロセッサが登場するのではないかと思います。

一方では、プログラムがx86のレジスタと命令のセット用にコンパイルされたPCがあり、他方では、アプリケーションがARMで話すいわゆるPostPCデバイスがあります。 しかし、最近、PostPCシステムのプロセッサの設計者は、x86ではなくPCにジャンプしたいが、ARMベースのPCを使用したいと考えていることを示しています。

x86とARM

これにより、最終的に86つの異なる市場が生まれ、それぞれがその言語を話し、他のシステムと互換性のないアプリケーションが無数にあります。 理想的なシナリオは? ARMとxXNUMXの両方で、プログラムとシステムを両側で実行できるPCを持っている。

しかし、これは可能ですか? ハイブリッドシステムとハイブリッドSoCの両方を設計する際にアーキテクトが直面する問題とその理由を説明しようと思います。 インテル & AMD 混合プロセッサをリリースしていません。

AMDとIntelは、ARMとx86の混合CPUには関心がありません。

インテル-AMD-ARM

最初の問題は、x86ライセンスはIntelとAMDによってのみライセンスされているため、これらXNUMXつの会社だけが CPU x86バイナリと互換性があります。 したがって、まず、これらの企業がARM用に設計されたプログラムを実行できるCPUを作成した場合にどうなるかについて少し考えなければなりません。

x86とARMで同時に環境を実行することは不可能であることに留意する必要があります。そのため、x86を搭載したPCでもARMコードを実行できることを知っているほとんどの開発者は、コードを少しずつ気にすることはありません。 x86は廃止され、ARMの使用率は増加します。

人々がx86プログラムを使用しない世界は、IntelとAMDにとって価値のない世界であるため、両方の環境を実行できるプロセッサは理想的ではありません。

x86とARMを単一のシステムにデプロイする

レンダリングプロセッサ

この例はありますか? はい、私たちは何千万もの家にあるものを持っています PlayStation 4、メインプロセッサがx86ベースのAMD SoCであるが、ARMプロセッサを備えたXNUMX番目のプロセッサを備えたコンソール。 このプロセッサは、コンソールがスタンバイモードで、オペレーティングシステムを並行して実行し、独自のプロセッサを備えている場合にのみアクティブになります。 RAM メモリ。

両方の世界を統合する最も簡単なアイデアは、常に必要な消費レベルに応じて、XNUMXつのSoCまたは別のSoCをアクティブ化するコンピューターを作成することですが、システムは何らかの方法でアクティブ化されますが、これはXNUMXつのシステムが同じコンピューターで、XNUMXつのシステムの配電システム全体を設計します。これは困難な作業ではありません。

もうXNUMXつの問題は、システムのI / Oデバイスの使用にあります。これらはすべて、両方のISAのプロセッサで使用できる必要があるため、周辺機器にアクセスするハードウェアが複製されるか、共通の要素が作成されます。 、これは、各タイプのプロセッサがそれらと通信するさまざまな方法と競合します。

XNUMXつのSoCで同時にXNUMXつのISAを実行することは可能ですか?

アームx86

SoCの特徴である場合、すべてのコンポーネントが同じチップ上にあるだけでなく、すべてが同じメモリアクセスを共有しているだけでなく、86つのプロセッサが同じ言語を理解しないとどうなりますか? SoCのGPUにはバイナリを読み取るためのCPUとは異なる方法があるため、これは問題ではありません。必要なのは、ARM用の部分とxXNUMX用の部分をアドレス指定するメモリにマークを付けることだけです。

簡単そうですね。 いいえ、その理由は、x86がリトルエンディアンであるためです。つまり、メモリを最小のメモリアドレスから最大のメモリアドレスに移動します。ARMはバイエンディアンであるため、プログラムは両端から開始し、場合に応じて上下に移動できます。 。 原則として、エンドポイントを各ISAに関連付けるのは簡単ですが、リトルエンディアンで動作するARM用のオペレーティングシステムがあります。

PCBルーティング

もうXNUMXつの問題は、RAMが同時にプロセッサにサービスを提供するように設計されているため、XNUMXつのプロセッサが同時にアクセスしている場合、一方が他方を介してメモリにアクセスする際に競合が発生するため、両方のISA向けに設計されたアプリケーションがSoC内の両方の間で共有されるリソースもそうすることは言うまでもなく、同じように簡単に実行することはできません。

そう。 どうですか GPU CPUとスムーズにスペースを共有できますか? GPUはデータを操作してプログラムを実行しますが、オペレーティングシステムを実行するようには設計されておらず、XNUMXつのアーキテクチャで同時に理解できる完全な統合失調症のオペレーティングシステムが存在することは不可能です。 それぞれがメモリをアドレス指定し、周辺機器にアクセスする独自の方法を持っている場合。