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,574 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
25
/ 38
26
/ 38
27
/ 38
28
/ 38
29
/ 38
Most read
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
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
Zynq mp勉強会資料
by
一路 川染
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
by
Fixstars Corporation
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
高位合成ツールVivado hlsのopen cv対応
by
marsee101
PDF
JIT のコードを読んでみた
by
y-uti
PDF
Tensor flow usergroup 2016 (公開版)
by
Hiroki Nakahara
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
Zynq mp勉強会資料
by
一路 川染
いまさら聞けないarmを使ったNEONの基礎と活用事例
by
Fixstars Corporation
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
高位合成ツールVivado hlsのopen cv対応
by
marsee101
JIT のコードを読んでみた
by
y-uti
Tensor flow usergroup 2016 (公開版)
by
Hiroki Nakahara
What's hot
PDF
ACRiウェビナー:小野様ご講演資料
by
直久 住川
PDF
katagaitaictf11_misc_ysk
by
ysk256
PDF
Gpu vs fpga
by
Yukitaka Takemura
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
PPT
Javaバイトコード入門
by
Kota Mizushima
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
by
Norishige Fukushima
PDF
Android起動周りのノウハウ
by
chancelab
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
PPTX
C#とILとネイティブと
by
信之 岩永
PDF
第1回 配信講義 計算科学技術特論A (2021)
by
RCCSRENKEI
PPTX
UE4のスレッドの流れとInput Latency改善の仕組み
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
PDF
Vivado hls勉強会1(基礎編)
by
marsee101
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
by
Hiroki Nakahara
PDF
ラズパイでデバイスドライバを作ってみた。
by
Kazuki Onishi
PDF
深層学習向け計算機クラスター MN-3
by
Preferred Networks
PDF
マルチコアを用いた画像処理
by
Norishige Fukushima
PDF
CXL_説明_公開用.pdf
by
Yasunori Goto
ACRiウェビナー:小野様ご講演資料
by
直久 住川
katagaitaictf11_misc_ysk
by
ysk256
Gpu vs fpga
by
Yukitaka Takemura
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
Javaバイトコード入門
by
Kota Mizushima
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
by
Norishige Fukushima
Android起動周りのノウハウ
by
chancelab
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
C#とILとネイティブと
by
信之 岩永
第1回 配信講義 計算科学技術特論A (2021)
by
RCCSRENKEI
UE4のスレッドの流れとInput Latency改善の仕組み
by
エピック・ゲームズ・ジャパン Epic Games Japan
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
Vivado hls勉強会1(基礎編)
by
marsee101
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
by
Hiroki Nakahara
ラズパイでデバイスドライバを作ってみた。
by
Kazuki Onishi
深層学習向け計算機クラスター MN-3
by
Preferred Networks
マルチコアを用いた画像処理
by
Norishige Fukushima
CXL_説明_公開用.pdf
by
Yasunori Goto
Viewers also liked
PDF
低レイヤー入門
by
demuyan
PDF
機械語プログラミング
by
Daisuke Kamikawa
PDF
C++でできる!OS自作入門
by
uchan_nos
PDF
ハッキング実演
by
Ken Ogura
PDF
やってよかったOS作り
by
Hidemi Kawai
PDF
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
PDF
確率論基礎
by
hoxo_m
PDF
EthernetやCPUなどの話
by
Takanori Sejima
PDF
経験過程
by
hoxo_m
PDF
Life with jupyter
by
Etsuji Nakai
PPTX
「数学の世界」発表資料
by
spdbear
PPTX
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
by
Hirotaka Nishimiya
PDF
H231126 統計および確率を利用した予測と判断rev1
by
Kenichi Takara
PPTX
便利な数を100億個の乱数から算出
by
Toshiyuki Shimono
PDF
Cpu cache arch
by
Shinichiro Niiyama
PDF
MLaPP 2章 「確率」(前編)
by
Shinichi Tamura
PPTX
ベイズ基本0425
by
asato kuno
PDF
カップルが一緒にお風呂に入る割合をベイズ推定してみた
by
hoxo_m
PDF
Cpu pipeline basics
by
Shinichiro Niiyama
PDF
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
by
智啓 出川
低レイヤー入門
by
demuyan
機械語プログラミング
by
Daisuke Kamikawa
C++でできる!OS自作入門
by
uchan_nos
ハッキング実演
by
Ken Ogura
やってよかったOS作り
by
Hidemi Kawai
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
確率論基礎
by
hoxo_m
EthernetやCPUなどの話
by
Takanori Sejima
経験過程
by
hoxo_m
Life with jupyter
by
Etsuji Nakai
「数学の世界」発表資料
by
spdbear
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
by
Hirotaka Nishimiya
H231126 統計および確率を利用した予測と判断rev1
by
Kenichi Takara
便利な数を100億個の乱数から算出
by
Toshiyuki Shimono
Cpu cache arch
by
Shinichiro Niiyama
MLaPP 2章 「確率」(前編)
by
Shinichi Tamura
ベイズ基本0425
by
asato kuno
カップルが一緒にお風呂に入る割合をベイズ推定してみた
by
hoxo_m
Cpu pipeline basics
by
Shinichiro Niiyama
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
by
智啓 出川
Similar to ゼロから始める自作 CPU 入門
PDF
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
PDF
初めてのCPUを作ってみた
by
Eric Sartre
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PDF
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
PDF
kagamicomput201701
by
swkagami
PDF
kagami_comput2016_01
by
swkagami
PDF
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
PDF
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
kagami_comput2015_1
by
swkagami
PPTX
Stellaris を使った組み込みアプリ開発ガイド
by
ryos36
PPT
コンピュータの構成と設計 第3版 第2章 勉強会資料
by
futada
PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
PPTX
Cortex-M0プロセッサから自作してLチカをやってみた
by
Junichi Akita
PDF
PFI Seminar 2010/02/18
by
Preferred Networks
PDF
産学間連携推進室(AC部屋) 2012 成果報告会
by
Hirotaka Kawata
PDF
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
PPTX
20200709 fjt7tdmi-blog-appendix
by
Akifumi Fujita
PDF
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
PDF
Python physicalcomputing
by
Noboru Irieda
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
初めてのCPUを作ってみた
by
Eric Sartre
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
kagamicomput201701
by
swkagami
kagami_comput2016_01
by
swkagami
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
kagami_comput2015_1
by
swkagami
Stellaris を使った組み込みアプリ開発ガイド
by
ryos36
コンピュータの構成と設計 第3版 第2章 勉強会資料
by
futada
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
Cortex-M0プロセッサから自作してLチカをやってみた
by
Junichi Akita
PFI Seminar 2010/02/18
by
Preferred Networks
産学間連携推進室(AC部屋) 2012 成果報告会
by
Hirotaka Kawata
Altera SDK for OpenCL解体新書 : ホストとデバイスの関係
by
Mr. Vengineer
20200709 fjt7tdmi-blog-appendix
by
Akifumi Fujita
0章 Linuxカーネルを読む前に最低限知っておくべきこと
by
mao999
Python physicalcomputing
by
Noboru Irieda
More from Hirotaka Kawata
PDF
Spring Boot 4 in Kotlin - Kotlin 対応がさらに便利に
by
Hirotaka Kawata
PDF
サーバーサイド Kotlin を社内で普及させてみた - Server-Side Kotlin Night 2025
by
Hirotaka Kawata
PDF
Kotest を使って 快適にテストを書こう - KotlinFest 2024
by
Hirotaka Kawata
PDF
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
by
Hirotaka Kawata
PDF
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
PDF
Micro Python で組み込み Python
by
Hirotaka Kawata
PDF
Introduction of PyCon JP 2014 in PyCon SG
by
Hirotaka Kawata
PDF
xv6 + mist32 + mruby
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
Spring Boot 4 in Kotlin - Kotlin 対応がさらに便利に
by
Hirotaka Kawata
サーバーサイド Kotlin を社内で普及させてみた - Server-Side Kotlin Night 2025
by
Hirotaka Kawata
Kotest を使って 快適にテストを書こう - KotlinFest 2024
by
Hirotaka Kawata
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
by
Hirotaka Kawata
本当にわかる Spectre と Meltdown
by
Hirotaka Kawata
Micro Python で組み込み Python
by
Hirotaka Kawata
Introduction of PyCon JP 2014 in PyCon SG
by
Hirotaka Kawata
xv6 + mist32 + mruby
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
ゼロから始める自作 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