質問

ARM Cortex-A8 Coreの実装を備えた評価キットがあります。プロセッサのデータシートには、

ARM Cortex A8™コアは、800MHzの高速で最大200MHz DDR2 RAMの速度で動作します。

このシステムに何が期待できますか?メモリアクセスは、わずか200mHzで動作するため、メモリアクセスがボトルネックになると仮定するのは正しいですか?

これを解釈する方法に関する詳細情報が必要です。

役に立ちましたか?

解決

プロセッサは、「フルスピード」でアクセスできる内部キャッシュ(実際、数)で動作します。キャッシュは小さく(通常は8〜32キロバイト)、外部RAMからのチャンク(「キャッシュライン」)で満たされています(キャッシュラインは数十の連続バイトになります)。コードに現在キャッシュにないデータが必要な場合、プロセッサはメインRAMからラインを取得する必要があります。これはaと呼ばれます キャッシュミス.

メインRAMからキャッシュラインをどれだけ速く取得できるかは、呼び出される2つのパラメーターで記述されます。 遅延帯域幅. 。レイテンシとは、プロセッサがリクエストを発行した瞬間と、最初のキャッシュラインバイトが受信された瞬間の間の時間です。典型的なレイテンシは約30nsです。 800 MHzでは、30nsは24クロックサイクルを平均します。帯域幅は、バスで送信できるナノ秒あたりのバイトの数を説明します。 「200 MHz DDR2」とは、バス時計が200 MHzで実行されることを意味します。 DDR2 RAMは、サイクルごとに2つのデータ要素を送信できます(したがって、1秒あたり4億の要素)。帯域幅は、CPUとRAMの間にいくつのワイヤがあるかに依存します。64ビットバスと200 MHz DDR2 RAMを使用すると、理想的な条件で3.2 Gbytes/sを期待できます。そのため、最初のバイトの取得にはかなりの時間がかかりますが(CPUができることに関して遅延は高くなります)、キャッシュラインの残りの部分は非常に迅速に読み取られます。

もう一方の方向には、CPUはキャッシュにいくつかのデータを書き込み、いくつかの回路はその余暇時にメインRAMへの変更を伝播します。

上記の説明は非常に単純です。キャッシュとキャッシュ管理は複雑な領域です。ボトムラインは次のとおりです。コードがメモリ内でビッグデータテーブルを使用し、一見ランダムな方法でアクセスする場合、ほとんどの場合、プロセッサがメインメモリからのデータを待機するため、アプリケーションは遅くなります。一方、コードがわずかなRAMで数十キロバイト未満で動作できる場合、ほとんどの場合、最も内側のキャッシュで実行される可能性があり、外部RAM速度は重要ではありません。キャッシュでうまく動作する方法でメモリアクセスを作成する能力は呼ばれます 参照の地域.

を参照してください キャッシュのウィキペディアページ キャッシュの問題に関する紹介と指針。

(当時のプロセッサはRAMよりも高速ではなく、1サイクルのメモリアクセスがルールであったため、80年代の間には大きな事前化テーブルが一般的な最適化のトリックでした。そのため、8 MHz Motorola 68000 CPUにはキャッシュがありませんでした。もういなくなっています。)

他のヒント

はい、メモリはボトルネックかもしれませんが、あなたはそうするアプリケーションを実行することはほとんどありません なし しかし、メモリに読んで書き込みます。

CPU内では、メモリボトルネックには効果がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top