4

http://www.ptlsim.org/のような CAS ソフトウェアがどのように機能するか教えてもらえますか? 命令ごとに使用されるサイクル数も CPU 分岐予測ロジックも不明な場合、どのようにしてサイクル精度を達成するのでしょうか? それとも、すべて NDA を介して利用できますか?

おそらく、キャッシュがヒットまたはミスしてもかなり正確であると思います(間違っているかもしれませんが、内部アルゴリズムを予測する方が簡単だと思います)が、パイプライン処理とスーパースカラリティがどのように実装されているかを知らなければ、シミュレーションサイクルを作成する方法がわかりません正確。

したがって、x86 ベースのハードウェアにハードrtos を実装することは理論的に可能ですか? または、命令ごとに必要な時間を見積もることができるように、ある種の NDA に署名する必要がありますか?

4

3 に答える 3

4

最初の質問:命令ごとに使用されるサイクル数も CPU 分岐予測ロジックも不明な場合、どのようにしてサイクル精度を達成するのでしょうか?

シミュレーターは、十分に正確な CPU モデルの正確なサイクル シミュレーションを提供しますが、Intel または AMD の現在の製品向けのすぐに使えるモデルは付属していません。必要な情報にアクセスできる Intel または AMD の誰かが、RTL レベルのモデルを作成し、現在のプロセッサのサイクル精度の高いシミュレーションを取得できます。Intel と AMD 以外の人はできません。公開されている情報をシミュレーターにフィードして、妥当な結果を得ることができます。これらの結果は、実際のハードウェアと同じではありません。

あなたがソフトウェア開発者で、実際のハードウェアのベンチマークを行いたい場合は、実際のハードウェアを使用してください! PLTsim のようなシミュレータは、新しいチップに何十万ドルも費やすことなく、新しいハードウェア機能をテストしたい (学術) ハードウェア開発者向けに設計されています。

2 番目の質問: x86 ベースのハードウェアにハード rtos を実装することは理論的に可能ですか?

もちろん、理論上は可能です。すべての状況下で、すべての入力に対して各コード セグメントの絶対的な最悪のケースを考慮する必要があります。実際の問題は、Core 2 のようなプロセッサが非常に複雑であり、プロセッサの状態が非常に大きいことです。さらに、これらのプロセッサは、タイミングに関して確定的に動作するようには設計されていません。本当に難しい RTOS は、非常に保守的でなければなりません。最後に、あなたが正しく観察しているように、Intel と AMD 以外の人々は、これらの保守的な仮定を行うために必要なすべての情報にアクセスすることはできません。実際には、最新かつ最高の cpu を渡し、代わりに決定論的なタイミングを持つ古い単純な cpu を使用するのが合理的です。

一方、RTOS が非常にリアルタイムである必要がない場合は、いつでもいくらかの安全マージンを含めて、最善を尽くすことができます。;-)

于 2013-01-10T23:12:14.783 に答える
2

これは両方の質問に対する答えではありません。2つ目だけお答えします。一般的にMackieの回答の方が優れているようですが、自由に賛成票を投じてください。

ハード RTOSを x86 に実装するのは困難です。RTOS によってなされたすべての約束を台無しにすることができる特別なものの 1 つは、SMM、またはシステム管理モードです。システム管理割り込みの後に CPU が入ります。システム管理割り込みは、ハードウェア障害、特別な MMIO ロケーションでの書き込み、out特別なポートへの命令など、さまざまな理由で発生する可能性があります。これを無効にすることはできず、SMI がいつ発生するかを実際に予測することはできず、SMI ハンドラーが終了するまでに非常に長い時間がかかる可能性があります。

基本的に、CPU が SMI の処理に長時間費やしたために OS で何かが失敗するまで、CPU が SMM にある時期についてはまったくわかりません。特殊なケースでは、ハード RTOS は言うまでもなく、非リアルタイム OS でも問題になることがあります。

x86 での RTOSing についてさらにいくつかのポイントを提供できるこのスレッドもあります。

于 2013-01-10T23:25:03.953 に答える
0

リンクしたサイトには、次のようなステートメントがあります。

PTLsim は、x86 および x86-64 命令セット用の最先端のサイクル精度マイクロプロセッサ シミュレータおよび仮想マシンです。

シミュレートしているのと同じプラットフォーム(Linux を実行している x86-64 または x86 マシン)上で直接実行されます。

これが QEMU、VirtualBox、VMWare、Virtual PC などの他の x86 仮想マシン テクノロジとどのように異なるのかは明確ではありません。ハードウェア上で命令を実際に直接実行する (およびコアで実行する) ことにより、サイクル精度が高くなります。速度)。シミュレーターですか、それとも VM ですか? 私の考えでは、それらは同じものではありません。 たとえば、 bochsは VM ではなくシミュレータですが、PTLsim はその中間にあるように見えますか?

于 2013-01-13T11:02:25.550 に答える