Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
昔の外付けキャッシュ
&
コヒーレント・キャッシュ
2017/SEP/23
たけおか@AXE
@takeoka
2
竹岡って誰?
1977年(高校2年生): MITのJames Slagleの書いたAIの教科書(日本語版)を読んで、
「○×」を打つプログラムを8bitマイコンTK-80(8080,RAM 512Bytes)の機械語で書く
1980年代:U...
昔
● CPUチップの外に キャッシュ
– キャッシュはCPU(コア)チップの外
– 高速RAM(SRAM)キャッシュ・コントローラLSIに内蔵だったり、外付
けだったり
– DRAM (遅い)
– 昔(1990年代前半)も、コヒーレンシを保つ...
キャッシュ制御部とは
●
キャッシュ・コントローラは、キャッシュされているデータのアドレスを記憶している
– キャッシュしているデータの、素のアドレス
– SRAM上のアドレス
● CPUからのアドレスが、キャッシュ内にあれば、
そのデータの入...
マルチCPU/マルチ・コア
● キャッシュ制御部 同士は、アドレス線がつながっているよ!
CPUコア#0
メイン・
メモリ
(DRAM)
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
キャッシュ
制御
高速
RAM
キャッシュ
...
コヒーレント・キャッシュ
●
バラバラに存在するキャッシュの一貫性が、自動的に保たれる
●
今ではフツー
– 組込み貧乏マルチ・コア・システムには、入っていないこともフツー
● 昔は、「スヌープ・キャッシュ」(覗き見キャッシュ)と呼ばれた
CP...
スヌープ(コヒーレント)・キャッシュ
● キャッシュ制御部 同士は、アドレス線がつながっているよ!
● みんな、アドレス・バスを覗き見(スヌープ)している
●
書き換わったキャッシュから、情報をブロードキャスト
– 「インバリッド情報」は、アド...
8
スヌープ・キャッシュはXeroxから
●
Xerox Dシリーズ
●
DシリーズはAIマシン
●
Smalltalk, Interlisp-D, Mesa
●
Alto
●
世界で初めて(?)マウスが付いた機械
●
ウインドウ・システム
●...
LL/SCもキャッシュの仕事
●
LL(load-link)/SC(store-conditional)
– MIPSで有名な、排他制御プリミティブ
●
LLとSCの、情報をブロードキャスト
– アドレスのみでいい
CPUコア#0
DRAM
キ...
参考
● Bus snooping (バス・スヌーピング)
https://en.wikipedia.org/wiki/Bus_snooping
● Cache coherence(キャッシュ一貫性)
https://en.wikipedia....
Upcoming SlideShare
Loading in …5
×

昔の外付けキャッシュ & コヒーレント・キャッシュ

675 views

Published on

Cache and Snooping. Address bus is used for communication of CPU Cores

Published in: Engineering
  • Login to see the comments

  • Be the first to like this

昔の外付けキャッシュ & コヒーレント・キャッシュ

  1. 1. 昔の外付けキャッシュ & コヒーレント・キャッシュ 2017/SEP/23 たけおか@AXE @takeoka
  2. 2. 2 竹岡って誰? 1977年(高校2年生): MITのJames Slagleの書いたAIの教科書(日本語版)を読んで、 「○×」を打つプログラムを8bitマイコンTK-80(8080,RAM 512Bytes)の機械語で書く 1980年代:UNIXのサーバクライアント方式の仮名漢字変換システムWnn、国産シンクライアント(X Window端末”XMiNT”)などの設計開発に携わる。TCP/IPスタックの独自実装。Temporal Prolog実装 1990年代初頭: 1024PE規模の超並列計算機”SM-1”(豊橋技科大 湯淺研,住友金属)のLSIハード ウェア、ソフトウェアの設計開発に携わる。Common Lispで開発ツール書いた。 1992年:(株)アックスを興し、マイクロカーネルXTALを設計。XTALはオリンパス社製デジタルカメラ、 シャープ ザウルスなどに使用された。アックスは、人工知能を開発&販売中 2015年: Tier IVの社長を拝命 (アックス社長と兼任) OSSコンソーシアム副会長, JASA技術本部長/理事,PCクラスタコンソーシアム理事,DEOS協会事務局長 超並列計算機SM-1 (1992年) シンクライアント XMiNT (1988年) オリンパス デジカメ (2000年) カラーザウルス(1996年)
  3. 3. 昔 ● CPUチップの外に キャッシュ – キャッシュはCPU(コア)チップの外 – 高速RAM(SRAM)キャッシュ・コントローラLSIに内蔵だったり、外付 けだったり – DRAM (遅い) – 昔(1990年代前半)も、コヒーレンシを保つキャッシュ・コントローラ LSIはあった(はず。データシートが見つからない) CPU コア メイン・ メモリ (DRAM) SRAM データ データ データ アドレス アドレス アドレス ※キャッシュ制御のための詳細は省略 ※アドレスの一部は、直にSRAMにい くものもある キャッシュ コントローラ キャッシュしている アドレスの表 キャッシュ
  4. 4. キャッシュ制御部とは ● キャッシュ・コントローラは、キャッシュされているデータのアドレスを記憶している – キャッシュしているデータの、素のアドレス – SRAM上のアドレス ● CPUからのアドレスが、キャッシュ内にあれば、 そのデータの入ってるSRAM上のアドレスを、SRAMに与える ● キャッシュ内になければ、DRAMから取ってくる ● DRAMへの書き戻しは、まぁ分かるよな… CPU コア メイン・ メモリ (DRAM) SRAM データ データ データ アドレス アドレス アドレス ※キャッシュ制御のための詳細は省略 ※アドレスの一部は、直にSRAMにいく ものもある キャッシュ コントローラ キャッシュしている アドレスの表 キャッシュ
  5. 5. マルチCPU/マルチ・コア ● キャッシュ制御部 同士は、アドレス線がつながっているよ! CPUコア#0 メイン・ メモリ (DRAM) キャッシュ 制御 高速 RAM キャッシュ アドレス データ キャッシュ 制御 高速 RAM キャッシュ アドレス データ キャッシュ 制御 高速 RAM キャッシュ アドレス データ CPUコア#1 CPUコア#2
  6. 6. コヒーレント・キャッシュ ● バラバラに存在するキャッシュの一貫性が、自動的に保たれる ● 今ではフツー – 組込み貧乏マルチ・コア・システムには、入っていないこともフツー ● 昔は、「スヌープ・キャッシュ」(覗き見キャッシュ)と呼ばれた CPUコア#0 メイン・ メモリ キャッシュ CPUコア#1 キャッシュ CPUコア#2 キャッシュ
  7. 7. スヌープ(コヒーレント)・キャッシュ ● キャッシュ制御部 同士は、アドレス線がつながっているよ! ● みんな、アドレス・バスを覗き見(スヌープ)している ● 書き換わったキャッシュから、情報をブロードキャスト – 「インバリッド情報」は、アドレスのみでいい ● キャッシュ同士が、主にアドレス情報を交換 ● アドレス・バスに少しだけ制御線を増やすなどして、インバリッド情報を通信できるようした – 「キャッシュ・プロトコル」などという CPUコア#0 メイン・ メモリ (DRAM) キャッシュ 制御 高速 RAM キャッシュ アドレス データ キャッシュ 制御 高速 RAM キャッシュ アドレス データ CPUコア#1
  8. 8. 8 スヌープ・キャッシュはXeroxから ● Xerox Dシリーズ ● DシリーズはAIマシン ● Smalltalk, Interlisp-D, Mesa ● Alto ● 世界で初めて(?)マウスが付いた機械 ● ウインドウ・システム ● コヒーレント・キャッシュが最初に開発されたのは、 Xerox Dragon (1987年ごろ) ● http://dl.acm.org/citation.cfm?id=36185 ● DEC Firefly ● Dragonの後継 https://en.wikipedia.org/wiki/DEC_Firefly ● CRAY CS6400 ● Dragonの後継 ● https://en.wikipedia.org/wiki/Cray_CS6400 DEC Firefly (Dragonの後継) Alto Star (Dandelion)
  9. 9. LL/SCもキャッシュの仕事 ● LL(load-link)/SC(store-conditional) – MIPSで有名な、排他制御プリミティブ ● LLとSCの、情報をブロードキャスト – アドレスのみでいい CPUコア#0 DRAM キャッシュ 制御 高速 RAM キャッシュ アドレス データ キャッシュ 制御 高速 RAM キャッシュ アドレス データ CPUコア#1 ● LL: メモリ・アドレスにリンクを張る ● LLしたアドレス情報をブロードキャスト ● 自キャッシュ内 当該エントリに LL したフラグを立てる ● SC: ストアを実行、失敗することもある ● SCしたら、SCアドレス情報をブロードキャスト ● 受け取った人は、自キャッシュ内のアドレスをチェックし て、LL していたら、失敗フラグを立てる ● 失敗: 自分がLLをしたアドレスに、 誰かがLLした or 誰かがすでにストアした → 権利取得失敗 ● 先にLLした方が、勝つ方式もあり得る ● 成功: 自分が書き込めた → 権利取得できた ● MIPSでOSポーティングしてる人:「親分、LL/SCが動作しないんですけど…」 ↑ キャッシュがイネーブルになっていない or キャッシュが効かない領域を指定 ● TEST&SET のようなプリミティブは、資源(主にバスなど)を専有する時間が長い – システムのメイン・バスを長時間 専有されると、システム全体の性能が ガタ落ちになる
  10. 10. 参考 ● Bus snooping (バス・スヌーピング) https://en.wikipedia.org/wiki/Bus_snooping ● Cache coherence(キャッシュ一貫性) https://en.wikipedia.org/wiki/Cache_coherence ● Directory-based cache coherence(ディレクトリ・ベースのキャッシュ一貫性) https://en.wikipedia.org/wiki/Directory-based_cache_coherence ● LL/SC https://en.wikipedia.org/wiki/Load-link/store-conditional ● Xerox Dragon (Cray CS6400 へリダイレクトされる) https://en.wikipedia.org/wiki/Cray_CS6400 ● Dragon Protocol https://en.wikipedia.org/wiki/Dragon_protocol ● Firefly https://en.wikipedia.org/wiki/Firefly_(cache_coherence_protocol)

×