2

ARMCortex-A8コアを実装した評価キットがあります。プロセッサのデータシートには、

ARMCortexA8™コア。最大800MHzおよび最大200MHzのDDR2RAMの速度で動作します。

このシステムから何を期待できますか?200MHzでしか動作しないため、メモリアクセスがボトルネックになると思いますか?

これを解釈する方法についての詳細が必要です。

4

2 に答える 2

3

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

メインRAMからキャッシュラインを取得できる速度は、レイテンシ帯域幅と呼ばれる2つのパラメータで表されます。。レイテンシーは、プロセッサーが要求を発行してから最初のキャッシュラインバイトが受信されるまでの時間です。通常のレイテンシは約30nsです。800 MHzでは、30nsは24クロックサイクルを意味します。帯域幅は、バス上で送信できるナノ秒あたりのバイト数を表します。「200MHzDDR2」は、バスクロックが200MHzで動作することを意味します。DDR2 RAMは、サイクルごとに2つのデータ要素を送信できます(したがって、1秒あたり4億の要素)。帯域幅は、CPUとRAMの間にあるワイヤの数によって異なります。64ビットバスと200 MHz DDR2 RAMを使用すると、理想的な条件で3.2Gバイト/秒が期待できます。そのため、最初のバイトの取得にはかなりの時間がかかりますが(CPUが実行できることに関しては待ち時間が長くなります)、残りのキャッシュラインは非常に高速に読み取られます。

反対の方向:CPUはキャッシュにデータを書き込み、一部の回路は変更をメインRAMに自由に伝播します。

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

キャッシュに関する概要とポインタについては、キャッシュに関するWikipediaのページを参照してください。

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

于 2010-11-04T13:09:15.183 に答える
0

はい、メモリがボトルネックになる可能性がありますが、メモリの読み取りと書き込みのみを行うアプリケーションを実行する可能性はほとんどありません。

CPU内部では、メモリのボトルネックは影響しません。

于 2010-11-04T11:16:10.973 に答える