タグ

cache_memoryに関するpipeheadのブックマーク (37)

  • なぜCPUにはL1・L2・L3というように複数のキャッシュレベルがあるのか?

    CPUのキャッシュは、L1が32KB、L2が256KB、L3が2MBという風に多層に分かれているが、なぜ、32KB+256KB+2MBのL1キャッシュではダメなのか?」という素朴な疑問に対して、ファビアン・ギーセン氏(ryg)が「1960年代の古いオフィスでの働き方」を例に挙げて明解に回答しています。 Why do CPUs have multiple cache levels? | The ryg blog https://fgiesen.wordpress.com/2016/08/07/why-do-cpus-have-multiple-cache-levels/ 前述の質問に対するショートバージョンの答えは、「それぞれのキャッシュには役割があるから」。大前提として、キャッシュは容量が大きいほどデータ転送速度が遅く、記憶密度が高く、省電力という性質を持つため、必要性に応じて異なる種類

    なぜCPUにはL1・L2・L3というように複数のキャッシュレベルがあるのか?
  • 投機的プリフェッチとキャッシュの弱点

    投機的プリフェッチとキャッシュの弱点:福田昭のデバイス通信 ARMが語る、最先端メモリに対する期待(8)(1/2 ページ) 今回は、メモリアクセスの高速化手法である「投機的プリフェッチ(Speculative Prefetch)」の仕組みを解説する。これは、“次のアクション”を推測して、データをキャッシュにコピーするものだ。この他、キャッシュが抱える質的な弱点についても触れておきたい。 使われそうなデータをキャッシュにコピーしておく 国際会議「IEDM」のショートコースで英国ARM Reserch社のエンジニアRob Aitken氏が、「System Requirements for Memories(システムがメモリに要望する事柄)」と題して講演した内容を紹介するシリーズの第8回である。 前回で述べたように、キャッシュメモリ(キャッシュ)には、CPUがいったんアクセスしたデータを格納し

    投機的プリフェッチとキャッシュの弱点
    pipehead
    pipehead 2016/03/10
    投機的プリフェッチ (Speculative Prefetch), ライト・アロケーション, リード・アロケーション, データの局所性, 時間的局所性, 空間的局所性
  • キャッシュの基本動作

    キャッシュの基動作:福田昭のデバイス通信 ARMが語る、最先端メモリに対する期待(7)(1/3 ページ) 今回は、キャッシュメモリの基動作について解説する。基動作は、大きく分けて2つある。メインメモリからデータをキャッシュラインにコピーする「アロケーション」と、特定のキャッシュラインからデータを追い出して“空き”を作る「エビクション」だ。 1次キャッシュと2次キャッシュ、外部メモリの動作を見る 国際会議「IEDM」のショートコースで英国ARM Reserch社のエンジニアRob Aitken氏が、「System Requirements for Memories(システムがメモリに要望する事柄)」と題して講演した内容を紹介するシリーズの第5回である。 前回は、キャッシュメモリ(キャッシュ)の基礎に関する講演部分をご報告した。今回は、キャッシュの動作に関する講演の概要をご紹介する。

    キャッシュの基本動作
    pipehead
    pipehead 2016/03/07
    アロケーション (Allocation), エビクション (Eviction), サイクリック方式 (ラウンドロビン方式), LRU (Least Recently Used) 方式, ライトスルー (Write Through) 方式, ライトバック (Write Back) 方式
  • キャッシュメモリの基礎

    キャッシュメモリの基礎:福田昭のデバイス通信 ARMが語る、最先端メモリに対する期待(6)(1/3 ページ) 今回は、キャッシュメモリについて解説する。キャッシュの考え方はとてもシンプルだが、実装となるとさまざまな方法があって複雑だ。今回は、3つのキャッシュアクセス構造について説明しよう。 キャッシュとは何か 国際会議「IEDM」のショートコースで英国ARM Reserch社のエンジニアRob Aitken氏が、「System Requirements for Memories(システムがメモリに要望する事柄)」と題して講演した内容を紹介するシリーズの第5回である。 前回は、CPUの基的なアーキテクチャを説明した。またCPUの演算性能を向上させるさまざまな手段が、メモリ・システムを複雑にしていることを述べた。今回は、キャッシュメモリ(キャッシュ)の基礎に関する講演部分をご紹介する。 キャ

    キャッシュメモリの基礎
    pipehead
    pipehead 2016/03/04
    ライン (Line), タグ (Tag), セット (Set), ウエイ (Way), インデックス (Index), フルアソシアティブ方式, ダイレクトマッピング方式, セットアソシアティブ (Set Associative) 方式
  • CPU とキャッシュのはなし - graphics.hatenablog.com

    別にグラフィックスに限ったことじゃないし、そもそも論文とか全然関係ないけど。GPU 周りでもたまに話題になるし、自分でもたまにわけわからんくなるから整理しとく。 メインメモリは遅い CPU からメインメモリにデータを読みに行く場合、これはとにかく遅い。例えばレジスタにあるデータを読みに行く場合と比べると、だいたい数倍から数100倍の遅さ。ヤバいからなんとかしよう。もっと早くアクセスできる場所にデータおいとこう。 キャッシュライン CPU がメインメモリからデータを読み出すとき、必ず小さなメモリチャンクをキャッシュ上にロードする。ロード単位はプロセッサによるけど、だいたい 8 ~ 512 バイト。このロード単位をキャッシュラインと呼ぶ。 アクセス対象のデータが既にキャッシュに載ってる場合は、メインメモリじゃなくてキャッシュを読みに行く。ない場合はメインメモリにアクセスするけど、そのデータはも

    CPU とキャッシュのはなし - graphics.hatenablog.com
    pipehead
    pipehead 2012/03/23
    キャッシュライン, リードキャッシュ, ライトバックキャッシュ, ライトスルーキャッシュ, ロードヒットストア, L1 (Level 1) Cache, L2 (Level 2) Cache, I-Cache (Instruction Cache), D-Cache (Data Cache), キャッシュコヒーレンシ
  • マルチコアCPUのキャッシュで問題となるコヒーレンシと解決策 (1/3)

    キャッシュの仕組み解説編最後のテーマは、「コヒーレンシ」(Coherency)である。あまり耳にしない単語だが、直訳すると「首尾一貫性」といったところか。キャッシュの場合、この単語は「データの一貫性」「データの整合性」といった意味合いで利用される。これは、前回触れた複数レベルのキャッシュで問題となる場合もあるが、一番大きな問題が起きるのは、マルチプロセッサー/マルチコアCPUの環境である。 マルチプロセッサー環境でキャッシュの整合性を保つ スヌーピングとその方式 例えば図1のような、懐かしいデュアルCPU構造を例にとって見る。ここで「CPU #1」があるデータを書き換えたとする。 すると、図2のように1次/2次キャッシュの更新を経て、最終的にメモリーにそれを反映して終わる。ここまではいい。問題は「CPU #2」である。もしCPU #2が同じアドレスのデータをすでにキャッシュしていたとすると

    マルチコアCPUのキャッシュで問題となるコヒーレンシと解決策 (1/3)
    pipehead
    pipehead 2010/11/22
    コヒーレンシ (Coherency), スヌーピング (Snooping)
  • キャッシュの実装方式から見える AMDとインテルの置かれた状況 (1/3)

    前回までに、CPUには複数のキャッシュが搭載されていることを説明した。今回はそのキャッシュをどう制御するか、という話をしよう。 3階層のキャッシュのどこにデータを置くか? 例えば図1のように、1次~3次までキャッシュを持つCPUを考えてみる。ここでCPUがデータ(命令でもいい)のフェッチを掛けた場合、まずは1次キャッシュのタグを検索する(図1-①)。ここで見つかれば問題なく、単に1次キャッシュからそのデータを引っ張ってくる(図1-②)だけでいい。問題は1次キャッシュにデータがなかった場合(キャッシュミス)である。

    キャッシュの実装方式から見える AMDとインテルの置かれた状況 (1/3)
    pipehead
    pipehead 2010/11/15
    Implicit Prefetch (暗黙のプリフェッチ, Hardware Prefetch), Explicit Prefetch (明示的プリフェッチ, Software Prefetch), Inclusive Cache (包括的キャッシュ), Exclusive Cache (排他的キャッシュ, Victim Cache)
  • 仮想メモリーを支えるもうひとつのキャッシュ TLB (1/3)

    仮想アドレスと物理アドレスを変換する Address Translationの基 前回はメモリーの階層構造と同様に、複数段階のキャッシュ構成があることを説明した。今回はちょっと見方を変えた話をしたい。まず、キャッシュという形でCPU内部に搭載されている、別のメモリーについて触れよう。 ご存知の通り、1次キャッシュは通常「ハーバード・アーキテクチャー」と呼ばれる構造に基づき、命令用とデータ用がそれぞれ別に用意される。詳細は後述するが、2次キャッシュや最近では3次キャッシュを搭載するプロセッサーも多くなった。ただ、これらはいずれも「プログラムそのもの、およびプログラムの実行時に利用されるデータ」である。 「ではそれ以外に何かあるのか?」と言われると、これが結構ある。一番多く利用されるのが「TLB」(Translation Lookaside Buffer)と言われるものだ。これは「仮想記憶」

    仮想メモリーを支えるもうひとつのキャッシュ TLB (1/3)
    pipehead
    pipehead 2010/11/08
    TLB (Translation Lookaside Buffer), Address Translation (アドレス変換), ページテーブル, PTE (ページテーブルエントリ), ハーバード・アーキテクチャー
  • トランジスター数と性能を秤にかけるキャッシュ (1/3)

    引き続き今回もキャッシュの話である。前回はキャッシュにデータを取り込み、それをタグで検索するところまでを解説したが、今回はその先のことを考える。 新しいデータでキャッシュを入れ替える 「リフィル」の方式 プログラムや利用するデータが非常に小さくて、(OSまで含めて)全部オンキャッシュで動くなんて場合は問題ない。例えばMS-DOSであれば、OSそのものは100KB前後で動くし、簡単なプログラムであればライブラリやデータまで含めても100KB未満、なんてことも少なくない。 こうした小さなプログラムなら、2次/3次キャッシュまで含めれば、数MBのキャッシュ容量を持つ昨今のプロセッサーなら、最初だけメモリーアクセスしたあとは、全部オンキャッシュでも動作する。しかし、昨今のOSは流石にこんなものでは済まないし、アプリケーションだって数10MBを軽く超えるものが普通だから、当然キャッシュには入りきらな

    トランジスター数と性能を秤にかけるキャッシュ (1/3)
    pipehead
    pipehead 2010/11/01
    キャッシュ入れ替え (Refill: リフィル) の方式: LRU (Least Recently Used), ラウンドロビン, ランダム
  • CPUとメモリーの速度差を埋めるキャッシュの基礎知識 (1/3)

    CPUの高速化についていけないメモリーの速度 今回からはちょっと趣を変えて、「キャッシュ」の話である。キャッシュの目的は「レイテンシの遮蔽」にある。といきなり大上段に構えても話が通じないので、昔話から始めよう。 初期のPCの場合、図1のようにCPUとメモリーが直結(厳密に言えばメモリーコントローラーを介する)されていた。初期というのは、おおむねi386ないし互換チップセットが利用されていた頃までの話である。 この頃は、CPUの速度が速くても30MHz程度。対するメモリーチップの速度は100ns(10MHz)~80ns(12.5MHz)程度。たまに70ns品(≒14.3MHz)や60ns(≒16.7MHz)品が高値で販売されるという、ある意味のどかな時代であった。 もちろん、これでもCPUの速度には追いついていないが、例えば2~4ウェイ・インターリーブでアクセスすれば、40~50MHz相当で

    CPUとメモリーの速度差を埋めるキャッシュの基礎知識 (1/3)
    pipehead
    pipehead 2010/10/25
    Write Through (ライトスルー), Write Back (ライトバック), Tag (タグ), キャッシュフィル, ラインサイズ, エントリー, フルアソシエイティブ, ダイレクトマップ, n ウェイセットアソシエイティブ
  • コンピュータ基礎の基礎~キャッシュメモリ | 艦長日誌・私的記録 DS9

  • キャッシュコヒーレンシ - Wikipedia

    リソースを共有する複数のキャッシュの概念図 キャッシュコヒーレンシ(英: cache coherency)とは、共有リソースに対する複数のキャッシュの一貫性を意味する。キャッシュコヒーレンシはメモリ一貫性の一種である。 複数のクライアントが共有メモリリソースのキャッシュを保持するとき、キャッシュ間のデータの不一致という問題が生じる。この問題は特にマルチプロセッシングシステムのCPU間で顕著である。右図において、上のクライアントがメモリのある部分を以前に読み込んでいてキャッシュ上にコピーを保持しているとき、下のクライアントが同じメモリ部分を更新すると、更新を何らかの方法で伝えない限り上のクライアントのキャッシュの内容は不正となる。キャッシュコヒーレンシはそのような状況に対処し、キャッシュとメモリの間の一貫性を保つことである。 定義[編集] 一貫性を保つには、同じメモリ位置へのリードとライトの

    キャッシュコヒーレンシ - Wikipedia
  • 第7回 徹底予習:AI時代の組込みシステム開発のお仕事 | 組込みの輪郭 | [技術コラム集]組込みの門 | ユークエスト株式会社

    ユークエスト株式会社は2021年10月1日をもちまして、 株式会社東光高岳に吸収合併を致しました。 Webサイトは下記のURLに移転しました。 https://uquest.tktk.co.jp/ ※5秒後に移転先にジャンプします。

    pipehead
    pipehead 2006/04/17
    Digital Rights Managements (DRM)
  • 【再録】コンピュータアーキテクチャの話(19) キャッシュの構造や働き(応用編) - 各キャッシュ階層に何を入れるか?

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 多階層のキャッシュの場合、一番大きな3次キャッシュに入っているデータの集合が一番大きく、2次キャッシュはこの集合の一部、1次キャッシュは2次キャッシュに入っているものの一部というように、上位のキャッシュの内容は下位のキャッシュの内容のサブセットというやり方が一般的である。この構成は上位キャッシュのデータは下位キャッシュに含まれることからInclusion Cacheと呼ばれる。これに対して、1次キャッシュの内容は必ずしも2次キャッシュに入っていない場合を許容するNon Inclusion(完全に排他の場合は、Exclusionとも呼ばれる)キ

    【再録】コンピュータアーキテクチャの話(19) キャッシュの構造や働き(応用編) - 各キャッシュ階層に何を入れるか?
    pipehead
    pipehead 2006/02/07
    Inclusion Cache, Non Inclusion Cache, Victim Cache
  • 【再録】コンピュータアーキテクチャの話(18) キャッシュの構造や働き(応用編) - どのキャッシュに何を書き込むか? 各種のキャッシュ構造

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 ここまでの議論は、如何にデータをできるだけ速く取り出し性能を上げるかという観点から色々なキャッシュの構造を見てきたが、それらのキャッシュにどのような種類のデータを書き込むかという点には触れず、単純にメモリに入っている情報は何でも一まとめに区別をして来なかった。しかし、今度はキャッシュにどのような種類の情報を書き込むかという観点から、キャッシュの構造を見てみよう。 命令、データ分離キャッシュ プロセサの扱うメモリのデータとして、基的に命令と純粋なデータがある。命令は基的には書き換えが起こらないが、純粋データでは頻繁に内容を書き換えるというよ

    【再録】コンピュータアーキテクチャの話(18) キャッシュの構造や働き(応用編) - どのキャッシュに何を書き込むか? 各種のキャッシュ構造
    pipehead
    pipehead 2006/01/31
    Harvard アーキテクチャ, Unified Cache, Write Through, Write Back, Write Allocate
  • 【再録】コンピュータアーキテクチャの話(17) キャッシュの構造や働き(応用編) - 設計上のトレードオフ

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 前回で述べたように、全体のCPIを小さくするためには、キャッシュミス率を低減することと、待ち時間のTm*を減らすことが重要である。 一般的にキャッシュの容量を大きくすればミス率は減少するが、大きなキャッシュはチップ面積を喰うし、アクセス速度も遅くなる。キャッシュ容量とミス率の関係は、プログラムがどのようなメモリアクセスをするかによるので千差万別であるが、多くの場合、容量を2倍にしてもミス率は半分にはならず、2割~3割減少する程度であり、どの程度の容量のキャッシュを搭載するかにはチップ面積、速度と性能向上のトレードオフが存在する。 一般的に巨大

    【再録】コンピュータアーキテクチャの話(17) キャッシュの構造や働き(応用編) - 設計上のトレードオフ
  • 【再録】コンピュータアーキテクチャの話(16) キャッシュの構造や働き(応用編) - プロセサ性能の見積もり

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 キャッシュに頻繁に使うデータを溜め、遅いメモリまでアクセスに行かないで済むようになれば性能が上がるのは当然であるが、それではどのくらい性能が上がるのであろうか? プロセサの性能はクロック周波数まで考慮にいれた毎秒何命令実行できるかを示すMIPS(Million Instructions Per Second)のような絶対性能の指標もあるが、アーキテクチャ的な性能を言う時には、クロックの影響を除いて1サイクルに何命令実行できるかというIPC(Instructions Per Cycle)あるいは、その逆数である1命令の実行に何サイクルかかるかと

    【再録】コンピュータアーキテクチャの話(16) キャッシュの構造や働き(応用編) - プロセサ性能の見積もり
    pipehead
    pipehead 2006/01/18
    IPC (Instructions Per Cycle), CPI (Cycles Per Instruction)
  • 【再録】コンピュータアーキテクチャの話(15) キャッシュの構造や働き(上級編) - キャッシュ間の通信(ブロードキャストとスヌーピング)

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 MOESIプロトコルの説明で、書き込みにあたっては、他のプロセサの当該データを持つキャッシュラインをInvalid化したり、あるいは、Modifiedのキャッシュラインの物理アドレスへの読出し要求を送るとそのキャッシュラインを保持するプロセサが応答しデータを供給したりすると書いたが、このような動作を実現するためには、プロセサのキャッシュ間で緊密な通信が必要となる。 これを実現する方法として一番広く用いられている方法がブロードキャストとスヌーピングである。各プロセサは自分のキャッシュをミスした場合や書き込みを行うために他のプロセサのキャッシュラ

    【再録】コンピュータアーキテクチャの話(15) キャッシュの構造や働き(上級編) - キャッシュ間の通信(ブロードキャストとスヌーピング)
  • 【再録】コンピュータアーキテクチャの話(14) キャッシュの構造や働き(上級編) - MOESIプロトコル

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 MSIプロトコルでは、そのアドレスのデータをキャッシュに持っているのが自分だけであっても、誰か他のプロセサが同じアドレスのデータを持っているのかいないのかが不明であり、他の全てのプロセサに対してInvalid化の要求を送り、確認を求める必要がある。各プロセサがほぼ独立のデータを使っている場合には、他のプロセサが同じアドレスのデータをキャッシュに持っていることは稀であり、常に他のプロセサにInvalid化を要求するのは効率が悪い。 これを改善するのが、MESIプロトコルである。キャッシュラインが有効でメモリと同じデータを持っている状態を、自分の

    【再録】コンピュータアーキテクチャの話(14) キャッシュの構造や働き(上級編) - MOESIプロトコル
    pipehead
    pipehead 2005/12/22
    MESI プロトコル, MOSI プロトコル
  • 【再録】コンピュータアーキテクチャの話(13) キャッシュの構造や働き(上級編) - キャッシュコヒーレンシ

    連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。 以上のように、VI方式で大容量のキャッシュを実現するには制約があるので、より大きな1次キャッシュとする場合はPIPT方式が用いられる。但し、普通にTLBを引き物理アドレスを求めてからキャッシュをアクセスすると時間が掛かるので、メモリの回路特性を利用して高速化する方法を用いることが多い。一般的なメモリの回路構造は図10に示すように、メモリセルアレイの中からアクセスするメモリセルを行アドレスと列アドレスで選択する。行の選択は行アドレスをRow Decoderでデコードし、セル一つのアレイの一行を選択する。列方向にも信号を増幅して読み出すセンスアン

    【再録】コンピュータアーキテクチャの話(13) キャッシュの構造や働き(上級編) - キャッシュコヒーレンシ