Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hirotaka Kawata
PPTX, PDF
42,552 views
ゼロから始める自作 CPU 入門
セキュリティ・キャンプフォーラム2015 ローレイヤー勉強会で発表した内容です。
Engineering
◦
Read more
78
Save
Share
Embed
Embed presentation
Download
Downloaded 74 times
1
/ 38
2
/ 38
3
/ 38
4
/ 38
5
/ 38
6
/ 38
7
/ 38
8
/ 38
9
/ 38
10
/ 38
11
/ 38
12
/ 38
13
/ 38
14
/ 38
15
/ 38
16
/ 38
17
/ 38
18
/ 38
19
/ 38
20
/ 38
21
/ 38
22
/ 38
23
/ 38
24
/ 38
Most read
25
/ 38
26
/ 38
27
/ 38
28
/ 38
29
/ 38
30
/ 38
Most read
31
/ 38
32
/ 38
33
/ 38
34
/ 38
35
/ 38
36
/ 38
37
/ 38
38
/ 38
Most read
More Related Content
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PPTX
冬のLock free祭り safe
by
Kumazaki Hiroki
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
by
Takateru Yamagishi
PDF
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
PDF
深層強化学習と実装例
by
Deep Learning Lab(ディープラーニング・ラボ)
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
プログラムを高速化する話
by
京大 マイコンクラブ
冬のLock free祭り safe
by
Kumazaki Hiroki
中3女子でもわかる constexpr
by
Genya Murakami
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
by
Takateru Yamagishi
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
深層強化学習と実装例
by
Deep Learning Lab(ディープラーニング・ラボ)
What's hot
PDF
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
PDF
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
by
Fixstars Corporation
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
PDF
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
PDF
Marp for VS Code で作る PowerPoint スライド
by
Iosif Takakura
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
by
Preferred Networks
PDF
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PDF
GPU仮想化最前線 - KVMGTとvirtio-gpu -
by
zgock
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PPTX
ARM LinuxのMMUはわかりにくい
by
wata2ki
PDF
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
by
Deep Learning JP
PPTX
UEFIによるELFバイナリの起動
by
uchan_nos
PDF
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
by
Mori Ken
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PDF
Marp Tutorial
by
Rui Watanabe
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PDF
tf,tf2完全理解
by
Koji Terada
PDF
明日使えないすごいビット演算
by
京大 マイコンクラブ
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
by
Fixstars Corporation
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
Marp for VS Code で作る PowerPoint スライド
by
Iosif Takakura
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
by
Preferred Networks
C++ マルチスレッド 入門
by
京大 マイコンクラブ
GPU仮想化最前線 - KVMGTとvirtio-gpu -
by
zgock
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
ARM LinuxのMMUはわかりにくい
by
wata2ki
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
by
Deep Learning JP
UEFIによるELFバイナリの起動
by
uchan_nos
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
by
Mori Ken
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
Marp Tutorial
by
Rui Watanabe
Glibc malloc internal
by
Motohiro KOSAKI
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
tf,tf2完全理解
by
Koji Terada
明日使えないすごいビット演算
by
京大 マイコンクラブ
Viewers also liked
PDF
C++でできる!OS自作入門
by
uchan_nos
PDF
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
PDF
低レイヤー入門
by
demuyan
PDF
EthernetやCPUなどの話
by
Takanori Sejima
PDF
Cpu pipeline basics
by
Shinichiro Niiyama
PDF
Cpu cache arch
by
Shinichiro Niiyama
PDF
経験過程
by
hoxo_m
PDF
確率論基礎
by
hoxo_m
PPTX
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
by
Hirotaka Nishimiya
PDF
やってよかったOS作り
by
Hidemi Kawai
PDF
ハッキング実演
by
Ken Ogura
PDF
MLaPP 2章 「確率」(前編)
by
Shinichi Tamura
PPTX
「数学の世界」発表資料
by
spdbear
PDF
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
by
智啓 出川
PDF
Life with jupyter
by
Etsuji Nakai
PDF
H231126 統計および確率を利用した予測と判断rev1
by
Kenichi Takara
PDF
カップルが一緒にお風呂に入る割合をベイズ推定してみた
by
hoxo_m
PDF
機械語プログラミング
by
Daisuke Kamikawa
PPTX
便利な数を100億個の乱数から算出
by
Toshiyuki Shimono
PPTX
ベイズ基本0425
by
asato kuno
C++でできる!OS自作入門
by
uchan_nos
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
低レイヤー入門
by
demuyan
EthernetやCPUなどの話
by
Takanori Sejima
Cpu pipeline basics
by
Shinichiro Niiyama
Cpu cache arch
by
Shinichiro Niiyama
経験過程
by
hoxo_m
確率論基礎
by
hoxo_m
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
by
Hirotaka Nishimiya
やってよかったOS作り
by
Hidemi Kawai
ハッキング実演
by
Ken Ogura
MLaPP 2章 「確率」(前編)
by
Shinichi Tamura
「数学の世界」発表資料
by
spdbear
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
by
智啓 出川
Life with jupyter
by
Etsuji Nakai
H231126 統計および確率を利用した予測と判断rev1
by
Kenichi Takara
カップルが一緒にお風呂に入る割合をベイズ推定してみた
by
hoxo_m
機械語プログラミング
by
Daisuke Kamikawa
便利な数を100億個の乱数から算出
by
Toshiyuki Shimono
ベイズ基本0425
by
asato kuno
Similar to ゼロから始める自作 CPU 入門
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PDF
PFI Seminar 2010/02/18
by
Preferred Networks
PDF
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
PDF
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
PDF
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
PPTX
Cortex-M0プロセッサから自作してLチカをやってみた
by
Junichi Akita
PPTX
Stellaris を使った組み込みアプリ開発ガイド
by
ryos36
PDF
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
Python physicalcomputing
by
Noboru Irieda
PDF
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
PPT
コンピュータの構成と設計 第3版 第2章 勉強会資料
by
futada
PDF
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
PDF
産学間連携推進室(AC部屋) 2012 成果報告会
by
Hirotaka Kawata
PPTX
20200709 fjt7tdmi-blog-appendix
by
Akifumi Fujita
PDF
初めてのCPUを作ってみた
by
Eric Sartre
PDF
kagami_comput2016_01
by
swkagami
PDF
kagami_comput2015_1
by
swkagami
PDF
kagamicomput201701
by
swkagami
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PFI Seminar 2010/02/18
by
Preferred Networks
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
Cortex-M0プロセッサから自作してLチカをやってみた
by
Junichi Akita
Stellaris を使った組み込みアプリ開発ガイド
by
ryos36
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
Python physicalcomputing
by
Noboru Irieda
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
コンピュータの構成と設計 第3版 第2章 勉強会資料
by
futada
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
産学間連携推進室(AC部屋) 2012 成果報告会
by
Hirotaka Kawata
20200709 fjt7tdmi-blog-appendix
by
Akifumi Fujita
初めてのCPUを作ってみた
by
Eric Sartre
kagami_comput2016_01
by
swkagami
kagami_comput2015_1
by
swkagami
kagamicomput201701
by
swkagami
More from Hirotaka Kawata
PDF
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
PDF
Kotest を使って 快適にテストを書こう - KotlinFest 2024
by
Hirotaka Kawata
PDF
サーバーサイド Kotlin を社内で普及させてみた - Server-Side Kotlin Night 2025
by
Hirotaka Kawata
PDF
xv6 + mist32 + mruby
by
Hirotaka Kawata
PDF
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
by
Hirotaka Kawata
PDF
Micro Python で組み込み Python
by
Hirotaka Kawata
PDF
seccamp2012 チューター発表
by
Hirotaka Kawata
ODP
Open Design Computer Project - Tsukuba.pm
by
Hirotaka Kawata
ODP
About University of Tsukuba Linux User Group
by
Hirotaka Kawata
PDF
Introduction of PyCon JP 2014 in PyCon SG
by
Hirotaka Kawata
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
Kotest を使って 快適にテストを書こう - KotlinFest 2024
by
Hirotaka Kawata
サーバーサイド Kotlin を社内で普及させてみた - Server-Side Kotlin Night 2025
by
Hirotaka Kawata
xv6 + mist32 + mruby
by
Hirotaka Kawata
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
by
Hirotaka Kawata
Micro Python で組み込み Python
by
Hirotaka Kawata
seccamp2012 チューター発表
by
Hirotaka Kawata
Open Design Computer Project - Tsukuba.pm
by
Hirotaka Kawata
About University of Tsukuba Linux User Group
by
Hirotaka Kawata
Introduction of PyCon JP 2014 in PyCon SG
by
Hirotaka Kawata
ゼロから始める自作 CPU 入門
1.
ゼロから始める自作 CPU 入門 セキュリティ・キャンプフォーラム2015 ローレイヤー勉強会
2.
お前だれよ ● 川田 裕貴
@hktechno o 筑波大学 システム情報工学研究科 コンピュータサイエンス専攻 M1 o セキュリティ&プログラミングキ ャンプ 2008 プログラミングコース参加 2009, 10, 12 OS 組チューター
3.
とても、ローレイヤーな話をします
4.
低レイヤとは システムソフトウェア VM OS Kernel アセンブラ バイナリ CPU CPUマニアが考 えるローレイヤ
5.
自作PC != 自作コンピュータ 本格的自作コンピューター 自作コンピューターというのであれば、CPU から作らなければ! ・命令セット ・MMU ・IOコントローラ 全部作る
6.
Open Design Computer
Project ● オリジナル ”コンピューター” を作った o CPU だけじゃない o 基板から、CPU から、ペリフェラルまで ● 2011年度 IPA未踏 IT 人材発掘育成事業採択 ● http://open-arch.org/ ● ↓一緒にやってる人 @cpu_labs
7.
mist32 プロセッサ ● 名前の由来はわからないw ●
32bit RISC アーキテクチャ ● 2オペランド ● Out of order 実行 ● レジスタリネーミング ● 投機的実行 ● オープンソース
8.
CPU も自作できる ● がんばれば。
9.
CPU 自作って楽しいの? ● 楽しい。 ●
作りながら学べる。 ● 理由: o やってる人が少ない o なんかかっこいい o 自分の好きなように設計できる o 上から下まで全部自由
10.
自作 CPU で広がる夢 ●
CPU を自作することで.... o こんな命令があればセキュアになるのに o こんな機能があればセキュアになるのに o こんな命令セットもうイヤだ! o ぼくのかんがえたさいきょうの CPU!
11.
自作 CPU を作ってどうする? ●
考えてはいけない。 ● とりあえず作ってみると楽しい ● 期待してはいけないこと: o 既存の CPU より性能の良い物ができる o 誰かに使ってもらえる o 実用性 o 就活の役に立つ
12.
CPU 自作のメリット ● 得ることができる特殊能力 o
C のコードから吐かれるアセンブラがわ かるようになる o アセンブラからバイナリが想像できるよ うになる o アセンブラの命令列から、命令がどうや って実行されるかがわかる
13.
とりあえず、自作 CPU の民を増やしたい!
14.
そもそも CPU とは ●
何が違うか o アセンブラが違うだけ? ● Intel x86 ● Power PC ● SPARC ● ARM Cortex-A ● ARM Cortex-M ● AVR ● PIC
15.
CPU の分類?
16.
CPU 自作の構成要素 ● ISA
(命令セットアーキテクチャ) ● プロセッサコア ● ペリフェラル o MMU o 割り込み o タイマー o など... ● ソフトウェア o アセンブラ, コンパイラ, OS...
17.
ISA (命令セット) ● 自作
CPU の唯一?見える部分 o バイナリ、アセンブラは見ることが可能 ● ISA の設計は楽しい ● バグが発生しない! ● バイナリアンの君なら、きっと既存の ISA への不満もたまってるはず
18.
ISA (命令セット) ● 命令フォーマット o
種類、オペランドの数、どうやってバイ ナリに詰め込むかなど... ● ニーモニック o add, sub, shr, sar, jxx… ● どんな命令を用意するか o 変態命令をつけるとか o 例えば、”短歌” に最適化された命令
19.
ISA の例 ● 固定長
4byte ● 半固定長 2byte, 4byte ● 可変長 ● 変種 o BPT(Byte Per Tanka)世界一の命令セット o 絶対 ASCII が現れない命令セット o 全部 ASCII で書ける命令セット
20.
プロセッサコア ● 命令の実行ユニットを何かしらで作る ● 一番の肝 o
工夫をたくさん入れる o 先人たちの知識を利用する o または、全く新しいものを作る
21.
4bit CPU の回路
22.
どうやってコアを書くか ● FPGA を使う o
回路を動的に構成できる魔法の LSI o Verilog HDL とか VHDL を使って書く ● FPGA は速い!は間違い o 実際の素子と比べると、とても遅い。 o 特別な処理を回路に起こすと、速い (ただし、専用の IC よりはずっと遅い)
23.
基本的なパイプライン ● Instruction Fetch ●
Instruction Decode ● Execution o Memory Access ● Write Back
24.
● Instruction Fetch ●
Instruction Buffer ● Instruction Decode ● Dispatch ● Execution MIST32 (In-order: MIST1032ISA) IB
25.
実行ポート 4個 OoOな領域 2命令同時 Fetch Decode … (Super- Scalar)
26.
● ほとんどのプロセッサでは、 アセンブラの通りには実行されていない o 高速化のため o
ハードウェアが実行しやすいように実行 したほうが速い ● ソフトウェアで頑張ればよいのでは? o 夢の VLIW... アセンブラと実行順序
27.
Out of Order
Execution (例) mov eax, [eax] xor ebx, ebx add ebx, eax inc ecx add eax, ecx Load (遅 い) ↑の命令とは依存がない ↑の命令とは依存がない 1 1 2 1 2 命令の順番を入れ替えても構わない しかも、開いてるポートに並列に実行できる
28.
Out of Order
Execution ● Register Renaming o 物理レジスタを仮想レジスタにリネーム o 命令の依存をより少なくできる mov eax, [eax] inc eax mov [eax], eax mov eax, ebx mov eax, [eax] 同じ eax レジスタ だが、依存はない ← 先に実行可能
30.
http://arstechnica.com/business/2010/09/intels-next-must-have-upgrade-a-look-at-sandy-bridge/
31.
プロセッサコアの設計 ● レジスタ o 何
bit でいくつ用意するか ● パイプライン o どういう構成で、何段にするか ● 実行ユニット o 何個用意するか、並列化させるか ● その他もろもろ o 分岐予測、投機的実行など...
32.
プロセッサコアと ISA ● 便利な命令や、複雑な命令をたくさん積め ばいいじゃないか? o
そういうわけにも行かない ● 回路規模 o 複雑な実行ユニットは、回路規模が大き くなる、クリティカルパスが長くなる o クロックが上がらなくなる
33.
MMU とか ● 作らなくても良い ●
ただし、OS を動かすには普通は必要 ● 実は作るのが結構大変 o ページテーブルを考えたり、 TLB の事を考えたり...
34.
シミュレータ ● 実機より信頼の置けるシミュレータ o シミュレータが信頼出来ないと デバッグで死ぬ! ●
簡単なものでもいいからつくろう o cycle-accurate でなくてもよい ● シミュレータの高速化も、また楽しい
35.
アセンブラ・コンパイラ ● コアだけでは、プログラムは書けない o ハンドアセンブルで書く人は除く ●
アセンブラやコンパイラが必要 o 一般的には binutils, gcc を使うが? o 簡単なものなら自作も可能
36.
オペレーティングシステム ● OS も自作可能、だが... ●
mist32 向けには xv6 を移植した o Unix V6 っぽい何か o その上で mruby もうごく o http://www.slideshare.net/hktechno/xv6-mist32-mruby
37.
OS を移植すると... ● OS
のことも学べる o どうやって起動するのか o OS を動かすにはどんな機能が必要か o どうすれば、もっと速く OS を実行でき るか...
38.
まとめ CPU を自作すると... 低レイヤーな知識が大体学べる。超楽しい。 ソフトウェアの高速化、OS の作り方、コンパ イラ・アセンブラ、CPU
のパイプラインの中 身、などを学びたいなら CPU を作ろう。
Download