Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
メモリと遊んでみた
Search
akira345
August 02, 2015
Technology
47
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
メモリと遊んでみた
Dramの挙動が知りたくて、実際にDramチップを入手し、Arduinoを使いながら挙動を調べてみました。
akira345
August 02, 2015
More Decks by akira345
See All by akira345
回路設計のバイブコーディング
akira345
0
120
ビジネス要件から逆算するマイクロサービスアーキテクチャ選定の「思考プロセス」
akira345
0
92
インシデント対応
akira345
0
580
えれくら!〜電気電子工作系制作・交流会〜#29
akira345
0
70
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
170
AWSデプロイツール紹介
akira345
0
95
40歳でやったこと
akira345
0
74
回路を読むために必要なこと
akira345
0
73
おれのAWSがこんなに辛い訳がない!!
akira345
0
66
Other Decks in Technology
See All in Technology
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
230
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
660
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
250
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.5k
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
310
キャリアLT今日までそして明日から
kentapapa
1
140
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
Incremental HTTP
kazuho
5
2k
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
370
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
510
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
110
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Automating Front-end Workflow
addyosmani
1369
210k
Designing Experiences People Love
moore
143
24k
How STYLIGHT went responsive
nonsquared
100
6.3k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Bash Introduction
62gerente
615
220k
Discover your Explorer Soul
emna__ayadi
2
1.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Transcript
メモリと遊んでみた LT駆動開発 17 - 夏と花火と私の AKIRA345
概要 • メモリ(DRAM)の挙動が知りたくて、DRAM単品を入手し、 花火大会の当日1日篭って実験してみました。 • 1日実験した程度なのと、技術的詳細は省きます。 • 普段意識しない物理的なメモリの挙動について調べてみました。
メモリとは? • コンピュータが処理すべきデジタルデータをある期間だけ保持するのに使 う、部品、装置、電子媒体の総称。 • コンピュータの5大装置、「入力装置」「制御装置」「記憶装置」「演算装置」 「出力装置」のうちの「記憶装置」に相当するもの。(wikipediaより)
メモリの種類 今回はこれ。
DRAM? • コンピュータなどに使用される半導体メモリの1種である。 記憶素子であるRAMの1種で、リフレッシュ(記憶保持動作)を必要とするダ イナミックメモリによるRAMである。
原理 • 多分情報処理の授業でこんなのを習ったのではないでしょうか?? コンデンサとも呼ばれるキャパシタに電荷を蓄え、 この電荷の有無によって1ビットの情報を記憶する。 電荷は漏洩しやがて失われるために1秒間に数 回程、列単位でデータを読み出して列単位で再び 記録し直すリフレッシュが絶えず必要となる。 この煩雑な動作はたとえ外部から読み出しの必 要が無くとも記憶保持の間は常に必要である。
DRAMの原理を習ってからずーーーっと疑問だった • コンデンサの電荷が消失する前にリチャージが必要なのは何となくイメー ジがつくが、本当に読み出しに関係なく必要なのか?? • たとえば1MB(8Mbit)だけでも8,388,608bit • これだけのビット数を1秒間に数回も走査するの? • これ、下手すると走査だけで何も出来ないんじゃね?
ここで疑問が
ぼちぼち調べて数十年・・・ • DRAMにはリフレッシュが必要。扱いが面倒。という情報以外ろくに無い。 • Z80はリフレッシュ回路が内蔵されて楽だったとかはあるが、 リフレッシュ動作自体を説明した資料がない。 • どうやら、専用のICやらで制御していたようで、動作そのものはあまり気に しなかった??
結局調べることに。 • 実験用DRAMチップを入手 • 実験するにはなるべくシンプルなほうが良いので、小容量の単品チップを 探すも、もうそんな時代じゃないので割りと苦労・・・・ すると思ったが、(今は無き)某無線屋で大量在庫を発見(笑) がひとつ300円と地味に高かったので容量違いを2つばかし入手。
まずは使い方を調査 • ネットでググればデータシートが出てくるが・・・
行アドレス指定 列アドレス指定 何これ?? 出力データ?? Word?? 1Bit??
ぶっちゃけ良く分からん(汗 • アドレスバス、データバスは無いの? • アドレスを指定したらその中にあるデータが出てくるんじゃないの?? • なぜ1bit単位なの? • Word=Bit?? •
縦と横のアドレス数の最大値は? • 書き込み、読み込みだけでもいくつも種類がある。 • そもそも見方が分からん(汗
使い方調査・・・ • 中々しっくりくる解説が無い。 • 今さら聞けないメモリーの基礎知識 FP~BEDO DRAM編 http://ascii.jp/elem/000/000/597/597885/index-2.html • ①CPUがアドレス線にRowアドレスを渡す。
• ②CPUはRASを「Low」にして、Rowアドレスを渡したことをDRAMに通知する。 • ③DRAMはRASがLowになったことを検出。Row Address Bufferがアドレス線からアドレスを取得し、 RowアドレスとみなしてRow Decoderに渡す。 • ④CPUがアドレス線にColumnアドレスを渡す。 • ⑤CPUはCASをLowにして、Columnアドレスを渡したことをDRAMに通知する。 • ⑥DRAMはCASがLowになったことを検出。Column Address Bufferがアドレス線からアドレスを取 得し、ColumnアドレスとみなしてColumn Decoderに渡す。 • ⑦CASをLowにしてから一定時間後に、DRAMからデータがデータ線に渡される。CPUはこれを取 得する。
ここでARDUINOの登場 • とりあえず、縦、横のアドレスとRAS、CASを操作すればデータが読み書きで きるっぽいので、Arduinoでプログラムを組みながら試行錯誤。
・・・・・・・・
動かない! • デジタル機器は動く、動かないがハッキリしているので、 正解を当てないと動かない。 • アナログみたいに惜しかったらノイズが出たり何か光ったりなんてことがない。 • 一般家庭に測定器やデバックツールは無いので、 ひたすら推論に基づきトライ。 •
ヒントが無いので辛い・・・・
辛い試行錯誤の結果・・・ • 怪しいながらも一応読み書きすることに成功!! https://github.com/akira345/arduino_dram_test
分かったこと • $0000-$0123のようなアドレスではなく、縦横の物理的なメモリセル指定でアクセスする。 • データの入出力は1bit単位。 昔のSIMMはこれを8個並列に繋いで、縦横のアドレスを共通にして8bitにしていたようです。 • 読み書きにかかわらずリフレッシュが必要ではなく、 読み書きしていないbitはリフレッシュが必 要。
• ずっと読み書きしていると、それ自体がリフレッシュ動作となる。 • 範囲を絞れば、リフレッシュ間隔は長くても割りといける。ただし、リフレッシュせず、特定bitだけ 読み書きしていると、ほかのbitのデータが失われる • bitのセルは正方形。なのでアドレスの最大値は全bit数/2 • リフレッシュ動作はやはり重い処理だし、アクセス手順が煩雑なのもあって、徐々に改善され、 今のDDRに行き着く。 • メモリの電源切っても数秒はデータが飛ばない(!) • 昔のマイコンは制御用の専用ICを使っていたらしい。(ソフトウエアでの制御は重いので)
困ったこと • 1bit単位でしかアクセスできないので、データが化けたのか、元からその値 なのか分からない。(1 or 0 なので) • アクセスする際、遅い分は待ってくれるだろうと思ったけど、よく見ると最大 時間が規定されていて、
そもそもアクセス時間を計る手段が分からなかっ たので、単に動作が遅かった。というのに気づくのに随分嵌った。 • 初期のDRAMは古過ぎてアクセス方法やリフレッシュがすごく面倒だったの で断念。
DRAMのアクセスって結局こういうこと。 1 2 3 4 5 6 7 8 9
10 2 3 4 5 6 7 8 9 10 縦5、横5のセルにある データを読み書き
DRAMのリフレッシュ 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 読み書きしている箇所は チャージされている。 (正確には読み込みだけ すればOK) リフレッシュは全アドレスに対し読み書きしてリチャージする。 (参考:http://news.mynavi.jp/news/2002/09/05/10.html)
まとめ • 文献や調査しても納得できないことは、自分の手と頭を使わないと納得で きない。 • 疑問を持ち続けて、調べるのは大事。 • 未知の分野では試行錯誤しかなく、今までの経験値、思考がものを言う。 • 結局、やって見ないと分からないという事。
時間が有ればデモ