RAM(すべてのタイプ)のアクセス時間の減少が遅いのはなぜですか?


22

この記事では、DDR4 SDRAMの帯域幅が約8倍のDDR1 SDRAMであることを示しています。ただし、列アドレスを設定してからデータが使用可能になるまでの時間は、10%(13.5ns)しか短縮されていません。クイック検索により、最速の非同期のアクセス時間が示されます。SRAM(18歳)は7nsです。SDRAMのアクセス時間が非常に遅くなったのはなぜですか?その理由は、経済的、技術的、または基本的なものですか?


1
別の考えられる理由は、それが単に必要ではないということでしょうか?
Sebastiaan van den Broek

たとえば、メモリ内のデータをより高速に検索するには、短いアクセス時間が必要です。
アルセニー

余分な速度は常に素晴らしいですが、ソフトウェア開発者の観点から見ると、おそらく他のすべてのIOとアーキテクチャ(文字通り異なるデータセンターで実行できるマイクロサービスを含む)と比較すると、RAMの速度はボトルネックではありませんもう。「十分」が良い場合もあれば、追加のR&Dが高速化することを保証しない場合もあります。私もあなたの質問の潜在的な理由としてそれを追加することを検討します。
セバスチャンファンデンブローク

1
よると、ウィキペディア DDR3-2200それはFR4に3フィートの周りに伝搬する信号を所要時間である6.36ナノ秒の最初の単語の待ち時間を、持っている、私たちは非常に近い物理的限界にあると言うでしょう
マーク・オモ

回答:


33

これは、遅延を減らすよりもDRAMの帯域幅を増やす方が簡単で安価だからです。RAMの開いた行からデータを取得するには、簡単な作業量が必要です。

列アドレスをデコードする必要があり、アクセスする行を選択するマルチプレクサを駆動する必要があり、データはチップを越えて出力バッファに移動する必要があります。これは、SDRAMチップが高いロジック速度ではなく、高いラム密度に合わせたプロセスで製造されていることを考えると、特に時間がかかります。DDR(1,2,3または4)を使用して帯域幅を増やすには、ほとんどのロジックを拡張またはパイプライン化することができ、前世代と同じ速度で動作できます。より高速にする必要があるのは、DDRピンのI / Oドライバーだけです。

対照的に、待ち時間を短縮するには、操作全体を高速化する必要がありますが、これははるかに困難です。おそらく、RAMの一部は、高速CPUのプロセスと同様のプロセスで作成する必要があり、コストが大幅に増加します(高速プロセスはより高価であり、さらに各チップは2つの異なるプロセスを通過する必要があります)。

CPUキャッシュとRAMおよびハードディスク/ SSDを比較すると、ストレージが大きいこととストレージが速いことの間には反比例の関係があります。L1 $は非常に高速ですが、32〜256kBのデータしか保持できません。非常に高速である理由は、小さいためです。

  • それを使用してCPUの非常に近くに配置することができます。つまり、データを取得するために、より短い距離を移動する必要があります。
  • その上のワイヤを短くすることができ、これもまた、データがその上を移動する時間が短くなることを意味します
  • それは多くの面積や多くのトランジスタを占有しないので、速度最適化プロセスでそれを作り、ビットごとに多くの電力を使用することはそれほど高価ではありません

階層を上に移動すると、各ストレージオプションの容量が大きくなりますが、面積が大きくなり、それを使用するデバイスから離れるので、デバイスの速度が遅くなります。


21
素晴らしい答え。物理的な距離係数を強調したいだけです。最も遠いRAMスティックの場合は10cm、信号速度として光の速度の1/3から1/2、さらにPCBトラックをルーティングして一致させるための余分な長さ簡単に往復時間2nsになります。遅延の約15%が、壊れないユニバーサル速度制限によって引き起こされている場合...私の意見では、あなたは本当に良いことをしています。
mbrig

1
L1も一意に編成され、それを使用するコアに直接配置され、SRAMを使用します。
フォレスト

@forestまた、かなり厳しいサイズ制限もあります。大きすぎると、高速に維持する方法がありません。
ルアーン

L1dキャッシュはレイテンシーに対しても大幅に最適化できます。たとえば、セット内のすべての方法でタグとデータを並行してフェッチします。そのため、タグが一致すると、SRAMからデータを取得する代わりに、データを出力に多重化します。インデックスビットがすべてアドレスのページ内オフセット部分に由来する場合、これはアドレスの上位ビットでのTLBルックアップと並行して発生する可能性もあります。(つまり、@ Luaanが述べたように、サイズの1つの厳しい制限です。このVIPTのページサイズ= PIPT速度ハックが機能します。VIPTキャッシュ:TLBとキャッシュ間の接続を参照してください
Peter Cordes

6

C_Elegansは答えの一部を提供します— メモリサイクルの全体的な遅延を減らすことは困難です。

答えのもう1つの部分は、現代の階層メモリシステム(複数レベルのキャッシュ)では、メモリ帯域幅がシステム全体のパフォーマンスにメモリレイテンシよりもはるかに強い影響を与えるため、最新の開発努力のすべてに焦点が当てられていることです。

これは、多くのプロセス/スレッドが並行して実行されている一般的なコンピューティングと組み込みシステムの両方に当てはまります。たとえば、私が行っているHDビデオ作品では、ミリ秒のオーダーのレイテンシーは気にしませんが、1秒あたり数ギガバイトの帯域幅が必要です。


また、レイテンシーを減らすことの難しさとコストと比較して、ほとんどの場合、ソフトウェアは「高い」レイテンシーのために非常に簡単に設計できることは間違いなく言及されるべきです。ほとんどの場合、CPUとそのソフトウェアはどちらも効果的なレイテンシを排除するのに非常に優れています。結局、メモリアーキテクチャやCPUキャッシング/プリフェッチなどがどのように機能するのかわからない限り、思うほど頻繁にレイテンシの制限に達することはありません。単純なアプローチは、通常、ほとんどのソフトウェア、特にシングルスレッドで十分に機能します。
ルアーン

最新のIntel CPUでは、メモリレイテンシはシングルコア帯域幅の制限要因です。帯域幅はmax_concurrency /レイテンシを超えることはできません。また、シングルコアは一度に飛行中のオフコアリクエストの容量に制限があります。多くのコアXeonは、(リングバス上の多くのホップから高いアンコア遅延で)持っているより悪いよりDRAMコントローラを持っているにもかかわらず、クアッドコアデスクトップチップよりもシングルコアの帯域幅を。 シングルスレッドメモリスループットに関して、SkylakeがBroadwell-Eよりもはるかに優れているのはなぜですか?。メニーコアXeonでメモリB / Wを飽和させるには、さらに多くのスレッドが必要です。
ピーターコーデス

全体的にあなたの要点は正しいです:ほとんどのアクセスはキャッシュでヒットして低レイテンシーになり、順不同のバックエンドの停止を回避します。HWプリフェッチは、ほとんどの場合、シーケンシャルアクセスに対応し、コアが必要とする前にキャッシュにデータを準備するために帯域幅を必要とします。DRAMのレイテンシは数百コアクロックサイクルであるため、空間的/時間的ローカリティとHWプリフェッチの両方を無効にして、ミスをキャッシュしないアクセスパターンを使用するように効率的なソフトウェアを調整する必要があります。特に、ロードの場合、ストアバッファーはストアレイテンシを他のアウトオブオーダーバックエンドから切り離すことができるためです。
ピーターコード

ディスクI / Oの場合、シーケンシャルアクセスで先読みプリフェッチを非表示にしなければミリ秒のレイテンシが問題になります。しかし、待ち時間が長いほど、隠すのが難しくなります。(プリフェッチアルゴリズムを改善する必要があり、アクセスパターンをより予測可能にする必要があります。)必要な帯域幅を得るために、処理中に保持する必要がある要求/データバイトが増えます。
ピーターコード

2

私はそれほど多くの洞察を持っていませんが、それがすべてのビットであることを期待しています。

経済的

大部分のコンピューター/電話では、速度は十分以上です。データストレージを高速化するために、SSDが開発されました。人々は(ほぼ)リアルタイムでビデオ/音楽およびその他の速度重視のタスクを使用できます。したがって、これ以上の速度はそれほど必要ありません(天気予報などの特定のアプリケーションを除く)。

もう1つの理由は、非常に高いRAM速度を処理することです。高速なCPUが必要です。そして、これには多くの電力消費が伴います。バッテリーデバイス(携帯電話など)で使用する傾向があるため、非常に高速なRAM(およびCPU)の使用が妨げられるため、経済的にも使用できません。

テクニカル

チップ/ ICのサイズが小さくなると(nmレベル)、速度は上がりますが、それほど大きくはなりません。RAMの量を増やすために使用されることが多く、RAMの量はますます難しくなります(経済的な理由)。

基礎

例(両方とも回路):より高速にするための最も簡単な方法(SSDで使用)は、単に複数のコンポーネントに負荷を分散させることです。この方法で「処理」速度も増加します。1つのUSBスティックからデータを連続して読み取るのではなく、8つのUSBスティックを同時に読み取り、結果を結合して比較します(8倍の時間がかかります)。


1
SSDがSDRAMレイテンシと正確に関係するのは何ですか?
C_Elegans

@C_Elegansは両方とも回路です。この「一般的な」質問のために、それほど大きな違いはないと思います。
ミシェルケイツァー

2
プリチャージサイクルのため、ページを開く時間はそれほど減少していません。必要なエネルギー量は、10年前と比べて今日ではそれほど変わりません。それは私の経験ではアクセス時間を支配します。
ピータースミス

5
@MichelKeijzers SSDとSDRAMは両方とも回路ですが、非常に異なるユースケースに対応し、データを保存するためのさまざまな手法を利用します。さらに、CPUは実際には高速のRAMを必要としないと言っても意味がありません。最近のCPUのほとんどが3レベルのキャッシュを持っている理由は、RAMがCPUを処理するのに十分な速さがないためです。
C_Elegans

1
容量ストレージにはSSDがあると言いました。もっと速いという意味ですか?HDDよりもssdで同じ量のストレージを取得する方が費用がかかります。SSDの主なセールスポイントは速度であり、おそらくノイズと信頼性です。容量については、HDDの方が優れています
user198712
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.