SlideShare a Scribd company logo
1 of 10
Download to read offline
昔の外付けキャッシュ
&
コヒーレント・キャッシュ
2017/SEP/23
たけおか@AXE
@takeoka
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年)
昔
● CPUチップの外に キャッシュ
– キャッシュはCPU(コア)チップの外
– 高速RAM(SRAM)キャッシュ・コントローラLSIに内蔵だったり、外付
けだったり
– DRAM (遅い)
– 昔(1990年代前半)も、コヒーレンシを保つキャッシュ・コントローラ
LSIはあった(はず。データシートが見つからない)
CPU
コア
メイン・
メモリ
(DRAM)
SRAM
データ データ
データ
アドレス アドレス
アドレス
※キャッシュ制御のための詳細は省略
※アドレスの一部は、直にSRAMにい
くものもある
キャッシュ
コントローラ
キャッシュしている
アドレスの表
キャッシュ
キャッシュ制御部とは
●
キャッシュ・コントローラは、キャッシュされているデータのアドレスを記憶している
– キャッシュしているデータの、素のアドレス
– SRAM上のアドレス
● CPUからのアドレスが、キャッシュ内にあれば、
そのデータの入ってるSRAM上のアドレスを、SRAMに与える
● キャッシュ内になければ、DRAMから取ってくる
● DRAMへの書き戻しは、まぁ分かるよな…
CPU
コア
メイン・
メモリ
(DRAM)
SRAM
データ データ
データ
アドレス アドレス
アドレス
※キャッシュ制御のための詳細は省略
※アドレスの一部は、直にSRAMにいく
ものもある
キャッシュ
コントローラ
キャッシュしている
アドレスの表
キャッシュ
マルチCPU/マルチ・コア
● キャッシュ制御部 同士は、アドレス線がつながっているよ!
CPUコア#0
メイン・
メモリ
(DRAM)
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
CPUコア#1
CPUコア#2
コヒーレント・キャッシュ
●
バラバラに存在するキャッシュの一貫性が、自動的に保たれる
●
今ではフツー
– 組込み貧乏マルチ・コア・システムには、入っていないこともフツー
● 昔は、「スヌープ・キャッシュ」(覗き見キャッシュ)と呼ばれた
CPUコア#0
メイン・
メモリ
キャッシュ
CPUコア#1 キャッシュ
CPUコア#2 キャッシュ
スヌープ(コヒーレント)・キャッシュ
● キャッシュ制御部 同士は、アドレス線がつながっているよ!
● みんな、アドレス・バスを覗き見(スヌープ)している
●
書き換わったキャッシュから、情報をブロードキャスト
– 「インバリッド情報」は、アドレスのみでいい
●
キャッシュ同士が、主にアドレス情報を交換
●
アドレス・バスに少しだけ制御線を増やすなどして、インバリッド情報を通信できるようした
– 「キャッシュ・プロトコル」などという
CPUコア#0
メイン・
メモリ
(DRAM)
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
キャッシュ
制御
高速
RAM
キャッシュ
アドレス
データ
CPUコア#1
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)
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 のようなプリミティブは、資源(主にバスなど)を専有する時間が長い
– システムのメイン・バスを長時間 専有されると、システム全体の性能が ガタ落ちになる
参考
● 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)

More Related Content

What's hot

フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-たけおか しょうぞう
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回Ryuichi Ueda
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回Ryuichi Ueda
 
意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウドTakuma Nakajima
 
DEC_6600,DEC_TITAN Implementation of NetBSD(仮)
 DEC_6600,DEC_TITAN Implementation of NetBSD(仮) DEC_6600,DEC_TITAN Implementation of NetBSD(仮)
DEC_6600,DEC_TITAN Implementation of NetBSD(仮)nullnilaki
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回Ryuichi Ueda
 
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual BoothsChipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual BoothsKeigo Nishida
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaidoslankdev
 
M5StickVで詰まった話
M5StickVで詰まった話M5StickVで詰まった話
M5StickVで詰まった話shts1
 
Unix32 v 20100508
Unix32 v 20100508Unix32 v 20100508
Unix32 v 20100508xylnao
 
UNIX/32V
UNIX/32V UNIX/32V
UNIX/32V xylnao
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Tetsuya Noguchi
 
XRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るXRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るmonochrojazz
 
ロボットシステム学2015年第11回
ロボットシステム学2015年第11回ロボットシステム学2015年第11回
ロボットシステム学2015年第11回Ryuichi Ueda
 

What's hot (20)

フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
フラグ色々&その遅延評価-仮想機械インタープリタ書きのための-
 
ロボット用Open Source Software
ロボット用Open Source Softwareロボット用Open Source Software
ロボット用Open Source Software
 
Os真髄
Os真髄Os真髄
Os真髄
 
xv6 + mist32 + mruby
xv6 + mist32 + mrubyxv6 + mist32 + mruby
xv6 + mist32 + mruby
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド
 
What's Operating System?
What's Operating System?What's Operating System?
What's Operating System?
 
DEC_6600,DEC_TITAN Implementation of NetBSD(仮)
 DEC_6600,DEC_TITAN Implementation of NetBSD(仮) DEC_6600,DEC_TITAN Implementation of NetBSD(仮)
DEC_6600,DEC_TITAN Implementation of NetBSD(仮)
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回
 
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual BoothsChipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths
Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths
 
OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
 
M5StickVで詰まった話
M5StickVで詰まった話M5StickVで詰まった話
M5StickVで詰まった話
 
Unix32 v 20100508
Unix32 v 20100508Unix32 v 20100508
Unix32 v 20100508
 
UNIX/32V
UNIX/32V UNIX/32V
UNIX/32V
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!
 
XRDPで怠惰な日々を送る
XRDPで怠惰な日々を送るXRDPで怠惰な日々を送る
XRDPで怠惰な日々を送る
 
ロボットシステム学2015年第11回
ロボットシステム学2015年第11回ロボットシステム学2015年第11回
ロボットシステム学2015年第11回
 
Axeai 170421
Axeai 170421Axeai 170421
Axeai 170421
 

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

無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレたけおか しょうぞう
 
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)Akihiro Suda
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマットAkihiro Suda
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
Windows Subsystem for Linux 2
Windows Subsystem for Linux 2Windows Subsystem for Linux 2
Windows Subsystem for Linux 2Tomokazu Kizawa
 
そういえばRとはなんだったか
そういえばRとはなんだったかそういえばRとはなんだったか
そういえばRとはなんだったかNobukuni Kino
 
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PC Cluster Consortium
 
2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返すYasuharu Seki
 
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?Takumi Kurosawa
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題IGDA Japan
 
CSAJ MeeGo 20100423
CSAJ MeeGo 20100423CSAJ MeeGo 20100423
CSAJ MeeGo 20100423Mitz Amano
 
オブジェクト指向モデリング
オブジェクト指向モデリングオブジェクト指向モデリング
オブジェクト指向モデリングtakepu
 

Similar to 昔の外付けキャッシュ & コヒーレント・キャッシュ (20)

無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ無脳スマートスピーカを 越えレレレのレ
無脳スマートスピーカを 越えレレレのレ
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
 
Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1
 
Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
 
最小セット
最小セット最小セット
最小セット
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
Windows Subsystem for Linux 2
Windows Subsystem for Linux 2Windows Subsystem for Linux 2
Windows Subsystem for Linux 2
 
そういえばRとはなんだったか
そういえばRとはなんだったかそういえばRとはなんだったか
そういえばRとはなんだったか
 
OpenStack Updates
OpenStack UpdatesOpenStack Updates
OpenStack Updates
 
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
PCCC22:株式会社アックス テーマ1「俺ASICとロボットと論理推論AI」
 
2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す
 
公開講座
公開講座公開講座
公開講座
 
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?
エバンジェリストが語るパワーシステム特論 ~ 第1回:IBMオフコンはいかにして生き残れたのか?
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
 
CSAJ MeeGo 20100423
CSAJ MeeGo 20100423CSAJ MeeGo 20100423
CSAJ MeeGo 20100423
 
オブジェクト指向モデリング
オブジェクト指向モデリングオブジェクト指向モデリング
オブジェクト指向モデリング
 
Introduction of FPGA
Introduction of FPGAIntroduction of FPGA
Introduction of FPGA
 
Unixの歴史
Unixの歴史Unixの歴史
Unixの歴史
 

More from たけおか しょうぞう (14)

いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加したいにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
いにしえ的ななにか、カニか? RISC-V picoRV32, e203 改造 オレオレ命令追加した
 
SOAR:Smalltalk on RISC
SOAR:Smalltalk on RISCSOAR:Smalltalk on RISC
SOAR:Smalltalk on RISC
 
俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”俺ASICと俺CPU“松竹V(しょうちくぶい)”
俺ASICと俺CPU“松竹V(しょうちくぶい)”
 
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)
 
RISC-Vの可能性
RISC-Vの可能性RISC-Vの可能性
RISC-Vの可能性
 
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
 
Riscv+fpga200606
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
Takep lpc1114-190613
Takep lpc1114-190613Takep lpc1114-190613
Takep lpc1114-190613
 
初歩的な部品の知識
初歩的な部品の知識初歩的な部品の知識
初歩的な部品の知識
 
Takepino LPC1114
Takepino LPC1114Takepino LPC1114
Takepino LPC1114
 
大昔のMMU
大昔のMMU大昔のMMU
大昔のMMU
 
Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter Robot Language and a Tail Recursive Interpreter
Robot Language and a Tail Recursive Interpreter
 
Dataflow140711
Dataflow140711Dataflow140711
Dataflow140711
 

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