Submit Search
Upload
コンピュータシステムの理論と実装1
•
0 likes
•
5,807 views
H
H T
Follow
第1回目の勉強会で使う資料です。
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 66
Download now
Download to read offline
Recommended
コンピュータシステムの理論と実装3
コンピュータシステムの理論と実装3
Yoko Yama
勉強会用にO'Reillyの「コンピュータシステムの理論と実装」の第3章を纏めた資料です。
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
Anacondaのアップデート方法
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
KMCの例会講座で用いたスライドを一部編集したものです。 ビット演算を組み合わせたトリッキーな方法で様々な操作を高速に行う方法を紹介します。
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
参考: https://github.com/ruby-llvm/ruby-llvm/tree/master/samples https://github.com/Kmotiko/DummyCCompiler http://kschiess.github.io/parslet/ https://github.com/ruby-llvm/ruby-llvm https://github.com/cuzic/llvm-kitsunesan
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
プログラムを高速化するためのテクニックをまとめました。
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
UnityTechnologiesJapan002
スピーカー: ユニティ・テクノロジーズ・ジャパン 安原祐二・名雪通
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757
並列化による高速化
並列化による高速化
sakura-mike
JOI夏季セミナー
Recommended
コンピュータシステムの理論と実装3
コンピュータシステムの理論と実装3
Yoko Yama
勉強会用にO'Reillyの「コンピュータシステムの理論と実装」の第3章を纏めた資料です。
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
ayohe
Anacondaのアップデート方法
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
KMCの例会講座で用いたスライドを一部編集したものです。 ビット演算を組み合わせたトリッキーな方法で様々な操作を高速に行う方法を紹介します。
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
参考: https://github.com/ruby-llvm/ruby-llvm/tree/master/samples https://github.com/Kmotiko/DummyCCompiler http://kschiess.github.io/parslet/ https://github.com/ruby-llvm/ruby-llvm https://github.com/cuzic/llvm-kitsunesan
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
プログラムを高速化するためのテクニックをまとめました。
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
UnityTechnologiesJapan002
スピーカー: ユニティ・テクノロジーズ・ジャパン 安原祐二・名雪通
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757
並列化による高速化
並列化による高速化
sakura-mike
JOI夏季セミナー
確率ロボティクス第12回
確率ロボティクス第12回
Ryuichi Ueda
FastSLAMが何をやっているかをざっくり説明。
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
Frontrend Vol.6 powered by CyberAgent, Inc. http://frontrend.doorkeeper.jp/events/6907 で発表したプレゼン資料です。 こういう資料に対する投げ銭的なのがどうなるのか気になっていたので、もしよろしければ・・・!15円からできるソーシャルカンパサービスだそうですm(_ _)m http://kampa.me/t/dev
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
https://math-coding.connpass.com/event/147508/ Math&coding#6 の発表資料
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
Yosuke Onoue
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
続き (動的木編) はこちら http://www.slideshare.net/iwiwi/2-12188845
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
Behavior Treeという手法を使い、自作ゲームにAIを実装してみました Behavior Designer : https://www.assetstore.unity3d.com/jp/#!/content/15277 講演したイベント 【年末だよ】Unity お・と・な のLT大会 2016【ポロりしてもいいのよ】 http://peatix.com/event/212468
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
Hiroya Kabata
第7回 PostgreSQLアンカンファレンス@東京 - https://atnd.org/events/75718
Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5
Takuya Akiba
Git flowの活用事例
Git flowの活用事例
Hirohito Kato
社内で技術発表会を行ったときのスライドです。 git-flowの基本的なルール説明と、git-flow運用下での管理テクニックについて説明しています。
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。本チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」
強化学習における好奇心
強化学習における好奇心
Shota Imai
強化学習のアルゴリズムの中で,複雑な環境の探索のために内発的報酬を用いているアルゴリズムを紹介した資料です.未知の状態への探索を促していることから「好奇心」を用いた探索とも呼ばれます.元々は別の場所で公開していた資料でしたが,いくつかの修正を加えて,こちらに改めてアップしました.
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。
Gpu vs fpga
Gpu vs fpga
Yukitaka Takemura
モデル高速化百選
モデル高速化百選
Yusuke Uchida
画像センシングシンポジウム (SSII 2019) の企画セッション「深層学習の高速化 〜 高速チップ、分散学習、軽量モデル 〜」の講演資料です。 深層学習モデルを高速化する下記6種類の手法の解説です。 - 畳み込みの分解 (Factorization) - 枝刈り (Pruning) - アーキテクチャ探索 (Neural Architecture Search; NAS) - 早期終了、動的計算グラフ (Early Termination, Dynamic Computation Graph) - 蒸留 (Distillation) - 量子化 (Quantization)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
2013/04/20 デブサミ 2013 アワード & リバイバル
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
電子情報通信学会画像工学研究会(IE)招待講演
通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
ConbGig2で話すスライド.ご意見ください
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
async/awaitダークサイド is 何 まどべんよっかいち 2014/10/18 http://www.kekyo.net/2014/10/18/%e3%80%8casyncawait-%e3%83%80%e3%83%bc%e3%82%af%e3%82%b5%e3%82%a4%e3%83%89-is-%e4%bd%95%e3%80%8d-%e7%ac%ac10%e5%9b%9e%e3%81%be%e3%81%a9%e3%81%b9%e3%82%93%e3%82%88%e3%81%a3%e3%81%8b%e3%81%84/
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
GPUを利用して汎用演算を行う技術であるGPGPUを用いて、プログラムを高速化する技法についてまとめました。高速化の具体例も適宜用いて解説しています。 CPU編はこちら https://www.slideshare.net/KMC_JP/ss-45855264
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
http://open-arch.org/
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
ネタ ※ 2012/07/06 最後のほう訂正・追記しました
More Related Content
What's hot
確率ロボティクス第12回
確率ロボティクス第12回
Ryuichi Ueda
FastSLAMが何をやっているかをざっくり説明。
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
Frontrend Vol.6 powered by CyberAgent, Inc. http://frontrend.doorkeeper.jp/events/6907 で発表したプレゼン資料です。 こういう資料に対する投げ銭的なのがどうなるのか気になっていたので、もしよろしければ・・・!15円からできるソーシャルカンパサービスだそうですm(_ _)m http://kampa.me/t/dev
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
https://math-coding.connpass.com/event/147508/ Math&coding#6 の発表資料
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
Yosuke Onoue
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
続き (動的木編) はこちら http://www.slideshare.net/iwiwi/2-12188845
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
Behavior Treeという手法を使い、自作ゲームにAIを実装してみました Behavior Designer : https://www.assetstore.unity3d.com/jp/#!/content/15277 講演したイベント 【年末だよ】Unity お・と・な のLT大会 2016【ポロりしてもいいのよ】 http://peatix.com/event/212468
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
Hiroya Kabata
第7回 PostgreSQLアンカンファレンス@東京 - https://atnd.org/events/75718
Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5
Takuya Akiba
Git flowの活用事例
Git flowの活用事例
Hirohito Kato
社内で技術発表会を行ったときのスライドです。 git-flowの基本的なルール説明と、git-flow運用下での管理テクニックについて説明しています。
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。本チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」
強化学習における好奇心
強化学習における好奇心
Shota Imai
強化学習のアルゴリズムの中で,複雑な環境の探索のために内発的報酬を用いているアルゴリズムを紹介した資料です.未知の状態への探索を促していることから「好奇心」を用いた探索とも呼ばれます.元々は別の場所で公開していた資料でしたが,いくつかの修正を加えて,こちらに改めてアップしました.
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。
Gpu vs fpga
Gpu vs fpga
Yukitaka Takemura
モデル高速化百選
モデル高速化百選
Yusuke Uchida
画像センシングシンポジウム (SSII 2019) の企画セッション「深層学習の高速化 〜 高速チップ、分散学習、軽量モデル 〜」の講演資料です。 深層学習モデルを高速化する下記6種類の手法の解説です。 - 畳み込みの分解 (Factorization) - 枝刈り (Pruning) - アーキテクチャ探索 (Neural Architecture Search; NAS) - 早期終了、動的計算グラフ (Early Termination, Dynamic Computation Graph) - 蒸留 (Distillation) - 量子化 (Quantization)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
2013/04/20 デブサミ 2013 アワード & リバイバル
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
電子情報通信学会画像工学研究会(IE)招待講演
通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
ConbGig2で話すスライド.ご意見ください
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
async/awaitダークサイド is 何 まどべんよっかいち 2014/10/18 http://www.kekyo.net/2014/10/18/%e3%80%8casyncawait-%e3%83%80%e3%83%bc%e3%82%af%e3%82%b5%e3%82%a4%e3%83%89-is-%e4%bd%95%e3%80%8d-%e7%ac%ac10%e5%9b%9e%e3%81%be%e3%81%a9%e3%81%b9%e3%82%93%e3%82%88%e3%81%a3%e3%81%8b%e3%81%84/
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
GPUを利用して汎用演算を行う技術であるGPGPUを用いて、プログラムを高速化する技法についてまとめました。高速化の具体例も適宜用いて解説しています。 CPU編はこちら https://www.slideshare.net/KMC_JP/ss-45855264
What's hot
(20)
確率ロボティクス第12回
確率ロボティクス第12回
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
Cache-Oblivious データ構造入門 @DSIRNLP#5
Cache-Oblivious データ構造入門 @DSIRNLP#5
Git flowの活用事例
Git flowの活用事例
マルチコアを用いた画像処理
マルチコアを用いた画像処理
強化学習における好奇心
強化学習における好奇心
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Gpu vs fpga
Gpu vs fpga
モデル高速化百選
モデル高速化百選
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
通信対戦ゲームを作った話
通信対戦ゲームを作った話
async/awaitダークサイド is 何
async/awaitダークサイド is 何
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
Similar to コンピュータシステムの理論と実装1
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
http://open-arch.org/
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
ネタ ※ 2012/07/06 最後のほう訂正・追記しました
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
わんくま同盟 東京勉強会 #110 にて登壇 http://www.wankuma.com/seminar/20180324tokyo110/
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
tomitomi3 tomitomi3
移行先 https://speakerdeck.com/tomit3/ltikadezhong-warasenaiarduino-siriarutong-xin-part1 Arduinoを初めてLEDをチカチカさせるだけで終わっていませんか?ArduinoとPCの間で通信を行う方法についてまとめた資料です。LチカからPCとArduinoで通信を行う簡単な方法を説明しています。Part2はコチラ(https://www.slideshare.net/tomit3/larduino-part2)
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
Shigeru Kobayashi
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima
OSC Tokyo/Spring 2013 のJapanese Raspberry Pi Users Group セミナー後半の資料です
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
Tsukasa Oi
150130 edison-ug
150130 edison-ug
Takehiko Tomiyama
Intel Edison
0からコンピュータを作ってみた
0からコンピュータを作ってみた
YuuOkano
「ゆるゆるIT勉強会 feat.Reedex Vol.4」 の発表資料
Exploring the x64
Exploring the x64
FFRI, Inc.
Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや
Masaki Ota
Intel GoldmontとMPXとゆるふわなごや
HTTP/2, QUIC入門
HTTP/2, QUIC入門
shigeki_ohtsu
HTTP/2, QUIC入門 セキュリティキャンプ2015
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
Open Design Computer Project の説明を、FPGA ボードでプレゼンした。
Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介
Takehiko YOSHIDA
ETロボコンにおけるMindstorms NXTのBluetooth通信と活用方法の紹介
seccamp2012 チューター発表
seccamp2012 チューター発表
Hirotaka Kawata
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
mao999
Linuxカーネルの割り込み・例外処理(ソフトウェア寄り) ・IDT ・IDTの初期化 kernel ver 4.9.16
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
tomitomi3 tomitomi3
移行 https://speakerdeck.com/tomit3/ltikadezhong-warasenaiarduino-siriarutong-xin-part2 前回(https://www.slideshare.net/tomit3/larduino-part1)の資料の続き。ArduinoとPCの間で通信を行う方法についてまとめた資料です。LチカからPCとArduinoで通信を行う簡単な方法を説明しています。
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
ryos36
高位合成友の会での発表。高位合成とはなんでしょう?にはじまって、Python での高位合成の話と、その応用について。
Interrupts on xv6
Interrupts on xv6
Takuya ASADA
カーネル/VM勉強会 第二回 OS基礎(xv6)
Similar to コンピュータシステムの理論と実装1
(20)
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
core dumpでcode golf
core dumpでcode golf
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
Lチカで終わらせないArduino シリアル通信 Part1(移行済)
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
OSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
リバースエンジニアリングのための新しいトレース手法 - PacSec 2010
150130 edison-ug
150130 edison-ug
0からコンピュータを作ってみた
0からコンピュータを作ってみた
Exploring the x64
Exploring the x64
Intel GoldmontとMPXとゆるふわなごや
Intel GoldmontとMPXとゆるふわなごや
HTTP/2, QUIC入門
HTTP/2, QUIC入門
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介
seccamp2012 チューター発表
seccamp2012 チューター発表
4章 Linuxカーネル - 割り込み・例外 5
4章 Linuxカーネル - 割り込み・例外 5
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
Interrupts on xv6
Interrupts on xv6
コンピュータシステムの理論と実装1
1.
コンピュータシステム の理論と実装①
2.
本の概要 • コンピュータを一から作っていくこと で、コンピュータの仕組みを学ぶ(ボト ムアップ式) • 前半はハードウェア、後半はソフト ウェアを扱う •
コンピュータ作成後、テトリスを作る nand2tetris (nand to tetris) → nandからtetrisへ
3.
第1章 ブール論理 コンピュータは、電気信号を用いる → オン:1、オフ:0
として, 「0と1」の2つのラベルで表さ れる数(2進数)で情報処理 2進数について学ぶ必要がある! 2進数に関する学問 → ブール代数
4.
ブール代数 ブール値 ・・・ 2つのラベルを持った値 ex)
on/off 、 true/false 、 1/0 ブール関数 ・・・ ブール値を引数に持つ関数 ex) fが引数xを反転して返すブール関数の場合 f(x) = തx ⇔ ቊ f 0 = 1 f 1 = 0
5.
ブール関数の基本要素 ・10進数では四則演算が関数の基本要素 → 一般的な関数は四則演算が複数合わさって構成 ・2進数では次の3つが基本要素 ・And ・Or ・Not → 一般的な関数はAnd、Or、Notが複数合わさって構成
6.
基本ブール関数(And) And(x,y)=ቊ 1 x =
y = 1 0 others イメージ図 x y And(x,y) 0 0 0 0 1 0 1 0 0 1 1 1 x y
7.
基本ブール関数(Or) Or(x,y)=ቊ 0 x =
y = 0 1 others イメージ図 x y Or(x,y) 0 0 0 0 1 1 1 0 1 1 1 1 A A B
8.
基本ブール関数(Not) Not(x)=ቊ 0 x =
1 1 x = 0 イメージ図 x x Not(x) 0 1 1 0
9.
ブール関数の表現方法 • 真理値表 引数とブール関数の値を対応させた表 • ブール式 +
や ・のような演算子を用いた表現
10.
ブール関数の表現方法(真理値表) 真理値表 全てのブール変数の組み合わせとブール関数の値を対応させた表 Andは2つの引数が1の場合1、それ以外の場合0をとるブール関数 x y And(x,y) 0
0 0 0 1 0 1 0 0 1 1 1
11.
ブール関数の表現方法(ブール式) ・ブール式 + や ・のような演算子を用いた表現 ・基本的なブール式 ・And(x,y)
≡ x・y ・Or(x,y) ≡ x+y ・Not(x) ≡ തx → 右辺のような演算子を用いると便利
12.
正規表現 正規表現・・・複数のブール値を1つのブール式にまとめた表現 ex) 2要素ブール値集合の正規表現 x+y x ,
y x・y തx+y ⋮ 変数x,yと演算子+,・, ഥ の組み合わせ ※ 要素数が𝑛個の場合、正規表現は22 𝑛 通り存在 ブール値集合 正規表現 全部で16通り
13.
ブール関数と正規表現 任意のブール関数は少なくとも1つの正規表現で表すことができる ex) ブール関数f(x,y) →
ブール関数fはブール値x,yを持つ x+y, x・y, ・・・ 計16個 → ブール関数fは16個の正規表現の内 どれかで表せる! 正規表現
14.
ブール関数と正規表現 任意のブール関数は少なくとも1つの正規表現で表せる 任意のブール関数は、・(And)と+(Or)と ഥ (Not)を用いて表せる 新たなブール関数Nandを使って表せる
15.
Nandとは Nand ・・・ Not
and の略 Nand(x,y) = x・y = ቊ 0 x = y = 1 1 others x y Nand(x,y) 0 0 1 0 1 1 1 0 1 1 1 0
16.
Nandと基本ブール関数 Nandのみを用いてAnd、Or、Notを表すことができる。 Not(x) = തx
= x・x = Nand(x,x) And(x,y) = x・y = x・y = Nand(x, y) = Nand(Nand(x,y),Nand(x,y)) Or(x,y) = x + y = തx・തy (∵ド・モルガンの法則) = Nand(Nand(x,x),Nand(y,y)) 最後の資料参照
17.
Nandとブール関数 任意のブール関数は少なくとも1つの正規表現で表せる 任意のブール関数は、・(And)と+(Or)と ഥ (Not)を用いて表せる 任意のブール関数はNandを用いて表せる
18.
論理ゲート (論理)ゲート ・・・ ブール関数を物理的に実現したデバイス Orゲート(p.6参照) 基本ブール関数(And、Or、Not)に対応する論理ゲートを基本論 理ゲートという。 And Not
19.
複合ゲート 複合ゲート ・・・ 複数の基本論理ゲートを組み合わせたもの ex)
Andゲート2つを組み合わせた複合ゲート And And
20.
論理設計 2種類の回路構成図 ・インターフェイス ・・・ 外部構成 ・実装
・・・ 内部構成 インターフェイス 実装 And And And
21.
回路の仮想構築 ・PC上で仮想的な回路を構築することができる ・PC上で回路構築するためのツール →ハードウェア記述言語(Hardware Description Language:HDL) ハードウェアシミュレータ(ここではHSと略す) ・HDLで構築したい回路の内容を記述
→ HSで回路を仮想構築
22.
作業 1. 必要フォルダをダウンロード 2. hdlファイルの記述 3.
シミュレーション
23.
1. フォルダのダウンロード ・公式ホームページhttps://www.nand2tetris.org にアクセス ・Software →
Download から Download the Nand2tetris Software Suite をクリックしダウンロード
24.
ダウンロードフォルダ ① projectsフォルダ →
hdlファイル、tstファイル、cmpファイル などが含まれる ・hdlファイル ・・・ ゲート内容を記述する(各自で記述) ・tstファイル ・・・ シミュレータが行うテスト内容(記述済) ・cmpファイル ・・・ 正しい出力結果(記述済) ② toolsフォルダ → シミュレータやコンパイラなどが含まれる
25.
2. hdlファイルの記述 ゲート名.hdl のファイルをテキストエディタで記述 ・メモ帳 ・Visual
Studio ・・・・
26.
ハードウェア記述言語(HDL) HDL ・・・ ゲート(回路)の構造を記述するための言語 Andゲートの記述例 →
ゲートの名前、インターフェイス情報、実装情報で構成
27.
HDLの具体例 AndゲートをHDLで記述してみる! projectsディレクトリ → 01
→ And.hdl を開く ・ゲート名 CHIP ゲート名 (記述済)
28.
次に論理設計(インターフェイス部と実装部)を考える! ・インターフェイス部 インターフェイス(外部構造) → 2入力と1出力 入力端子、出力端子それぞれに名前を付ける ・入力
a,b ・出力 out {}内の初めに IN 入力端子名; OUT 出力端子名; (記述済) And a b out
29.
• 実装部 Andゲートはブール関数で表すと And(a,b) =
Nand(Nand(a,b),Nand(a,b)) →Nandゲートにa,bを入力して,その出力値を再びNand に入力 Andゲートの実装(内部構造) ※上図の端子Nand(a,b)の名前をout1としている NandNand a b Nand(a,b)=out1 And(a,b)=out
30.
• 実装部 既に作成済みゲート(パーツ)への接続手順 → 今の例だと、Nandがパーツ ・NandゲートのHDLに記述されたインターフェイス部を確認 Nandの入力端子名
a,b Nandの出力端子名 out ・Nand(Nandの端子名=Andの端子名)で接続 Nand(a=a, b=b, out=out1) Nand a b o u t out1 a b
31.
• 実装部 PARTS: パーツ名(パーツ端子名=チップ端子名); NandNand a b out out1
32.
HDL全体の構成 CHIP ゲート名{ IN 入力端子名; OUT
出力端子名; PARTS: パーツ名(パーツ端子=チップ端子); }
33.
3. シミュレーション ・シミュレーションファイルを開く toolsディレクトリ →
HardwareSimulator.bat (windows) HardwareSimulator.sh (Linux)
34.
・ファイルの読み込み Load Script をクリック ↓ シミュレートしたい tstファイルを選択
35.
・シミュレート Runをクリックすると シミュレート開始 (黄色線が現在シミュレート してる箇所) 最後までシミュレートできれば 下に 「End of
Scipt ~~~」が 表示される
36.
• 画面説明 各ピンの値 HDL プログラムがシミュ レートしてる箇所の 表示 各ピンの値の表現方法 下記に表示するファイル
37.
基本論理ゲートの作成 ・Notゲート Not(in) = Nand(in,in) •
Orゲート Or(a,b)= Nand(Nand(a,a),Nand(b,b)) Nandin out Nand Nand Nand a b out
38.
その他の論理ゲートの作成 • Xorゲート 2つの値が異なる場合に1、それ以外は0 a b
Xor(a,b) 0 0 0 0 1 1 1 0 1 1 1 0
39.
• Xorゲート <正規表現を求めるテクニック> 1. 出力値が1のものに着目 2.
それぞれのブール式を考える 3. 2の全ての要素を論理和で結合 1. 右表の黄色2つ 2. 1つ目: out = തa・b 、 2つ目: out = a・തb 3. Xor(a,b) = തa・b + a・തb a b Xor(a,b) 0 0 0 0 1 1 1 0 1 1 1 0 最後の参考資料参照
40.
• Xorゲート Xor(a,b) =
തa・b + a・തb And And Or Not Not a b out
41.
• マルチプレクサ(Mux) 3つの入力 =
2つのデータビット+1つの選択ビット 選択ビットの値によって、出力値が決まる ・sel=0のとき、aを出力 ・sel=1のとき、bを出力 Mux a b out sel a b sel out 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1
42.
• マルチプレクサ(Mux) Muxの正規表現は? <正規表現を求めるテクニック> 1. 出力値が1のものに着目 Muxの場合、右表の黄色4つ 2.
それぞれのブール式を考える 1つ目,2つ目 → out=a・sel 3つ目,4つ目 → out=b・sel 3. 2の全ての要素を論理和で結合 out = a・sel + b・sel a b sel out 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1
43.
• マルチプレクサ(Mux) Muxの真理値表を右のように見やするすることで、 正規表現が求めやすくなる! 1行目のブール式 :
a・sel 2行目のブール式 : b・sel → out = a・sel + b・sel sel out 0 a 1 b
44.
• マルチプレクサ(Mux) out =
a・sel + b・sel And And Not Or outsel b a
45.
• デマルチプレクサ(DMux) Muxの逆で、1つの入力に対して選択ビットの値によって 2つの出力に分ける。 ・sel=0のとき、a=in, b=0 ・sel=1のとき、a=0,
b=in DMux a b in sel sel a b 0 in 0 1 0 in
46.
• デマルチプレクサ(DMux) a =
in・sel 、 b = in・sel And And Not sel in a b sel a b 0 in 0 1 0 in
47.
・多ビットゲート ハードウェアでは複数ビットからなる配列(バス)を操作する ことが一般的 → 多ビットゲートが必要
48.
・多ビットゲート 1入力に対して、複数ビットを扱える ex) 16ビットバスのゲート 16入力 1入力 ゲート16個
ゲート 1ビットの 情報 16ビットの 情報
49.
・多ビットNotゲート 多ビットNotゲートをHDLで記述する! 多ビットになっても、基本的に回路図は変わらず! 16ビットバス 入力 Not 16 16ビットバス 出力
50.
・多ビットNotゲート 入出力端子名[ビット数] ビット数分のNotゲート ※初めのビット番号は0
51.
使いたいパーツが完成していない場合の対処 多ビットNotゲートのパーツで Notゲートを使いたい! ↓ Notゲート完成してない。。。 ↓ ビルトイン回路(既に完成済の回路) を使う!
52.
使いたいパーツが完成していない場合の対処 ・ビルトイン回路の管理場所 ダウンロードファイルの tools → builtInChips に多くのビルトイン回路がある。
53.
使いたいパーツが完成していない場合の対処 ・シミュレータの動作 projectsフォルダ内のhdlファイルを読み込む ↓ 対象ファイルが見つからない場合、 builtInChipsの hdlファイルを読み込む ⇒ ビルトイン回路を使う場合、projectsフォルダの hdlファイルを別の場所に移しておく!
54.
・多ビットAnd, 多ビットOr,多ビットマルチプレクサ → 各自で!
55.
・多入力Orゲート 多入力の場合でも、バスのように 入力端子名[入力数] で宣言 Or Or In[0] In[1] In[2]
56.
・多入力/多ビットマルチプレクサ 4入力16ビットマルチプレクサ out = a・sel[0]・
sel[1] + b・sel[0]・ sel[1] + c・ sel[0]・sel[1] + d・sel[0]・sel[1] sel[1] sel[0] out 0 0 a 0 1 b 1 0 c 1 1 d Mux a b out sel[1] c d sel[0]
57.
・多出力デマルチプレクサ 4出力デマルチプレクサ a = in・sel[0]・
sel[1] 、 b = in・sel[0]・ sel[1] c = in・ sel[0]・sel[1] 、 d = in・sel[0]・sel[1] sel[1] sel[0] a b c d 0 0 In 0 0 0 0 1 0 In 0 0 1 0 0 0 In 0 1 1 0 0 0 in DMux a bin sel[1] c d sel[0]
58.
・ 、8入力16ビットマルチプレクサ, 8出力デマルチプレクサ →
各自で!
59.
参考資料(ド・モルガンの法則) ここでは和集合と積集合を次のように定義します。 ・和集合 ・・・ A+B
(Or(A,B)に対応) ・積集合 ・・・ A・B (And(A,B)に対応) 和集合 積集合 A B A B
60.
参考資料(ド・モルガンの法則) ド・モルガンの法則 ・ A +
B = ഥA ・ ഥB ・ A・B = ഥA + ഥB A B 否定 A B A B 否定 A B
61.
参考資料(正規表現を求めるテクニック) <正規表現を求めるテクニック> 1. 出力値が1のものに着目 2. それぞれのブール式を考える 3.
2の全ての要素を論理和で結合 の簡単な証明 2変数ブール関数X(a,b)に関して𝑘個の出力値が1となるとする。 さらに、 X 𝑎, 𝑏 = σ𝑖=0 𝑘 𝐴𝑖(𝑎, 𝑏) ※σ は論理和の
62.
X 𝑎, 𝑏
=1となる 𝑎, 𝑏 の集合をM、 X 𝑎, 𝑏 =0となる 𝑎, 𝑏 の集合 をNとする。 このとき、任意のMの要素mに対して X m = σ𝑖=0 𝑘 𝐴𝑖(𝑚) = 1 は明らかに成り立つ。 また、任意のNの要素nに対して X n = σ𝑖=0 𝑘 𝐴𝑖(n) = 1 ∴ 𝐴0 n + 𝐴1 n + ・・・ + 𝐴 𝑘 n = 0
63.
参考資料(正規表現を求めるテクニック) <正規表現を求めるテクニック> 1. 出力値が1のものに着目 2. それぞれのブール式を考える 3.
2の全ての要素を論理和で結合 で、本当に正規表現になってる?
64.
黄色のブール式をA(a,b)とB(a,b)とする。 このとき、 Xor(a,b) =A(a,b)+B(a,b) が本当にあってるか確認! ⇒ Xor=0になる(a,b)の組み合わせで
AとBが0になることを 確認できれば十分! a b Xor(a,b) 0 0 0 0 1 1 1 0 1 1 1 0 A(a,b) B(a,b)
65.
Xor(0,0)=0なので A(0,0)+B(0,0) = 0 ∴
A(0,0)=B(0,0) = 0 (※ +は論理和) 同様に、 Xor(1,1)=0なので A(1,1)=B(1,1) = 0 つまり、 Xor=0となる(a,b)の組み合わせでは AもBも0になる! a b Xor(a,b) 0 0 0 0 1 1 1 0 1 1 1 0 A(a,b) B(a,b)
66.
一般的なお話 あるゲートGに関して、G=1を満たすGの変数の集合をKとする。 (つまり、G(K)=1ということ) さらに、Kの各要素𝑘𝑖に対するブール式を𝐴𝑖とする。 (前ページでは、 𝐴1 =A,
𝐴2 = B) このとき、 G = ራ 𝑖 𝐴𝑖 が成り立つ。ここで、 ڂ は全ての要素を論理和で結合するこ とを表す記号である。 ・任意のKの要素では、 𝐴𝑖のどれか一つが1になる ・G=0となる変数集合では, 𝐴𝑖全てが0になる
Download now