SlideShare a Scribd company logo
1 of 46
Download to read offline
コンピュータアーキテクチャ
I/O入門




           qpstudy 2012.05
           ∼エンジニアのためのハードウェア徹底入門∼
           May 19, 2012

           Takeshi HASEGAWA
           [ja] @hasegaw / [en] @hasegaw_en
プロフィール
長谷川 猛 (HASEGAWA Takeshi)
twitter: @hasegaw


主にLinuxや仮想化技術を得意とする雑食系SE
Xen/KVMを調査、FreeBSD virtioを実装等 
最近のアップデート:家にギネス瓶と生ハムおきました




                                 2
おもな著書・寄稿




           3
Webサイトの記事など




 エンジニアなら知っておきたい仮想マシンのしくみ
   http://gihyo.jp/dev/serial/01/vm_work/
                                            4
今日の目的




        5
本セッションの目的

•    コンピュータにおけるI/O(入出力)の役割を理解する


•    IA-32において利用されるI/Oの種類を理解する


•    実際にコンピュータに接続されているI/Oデバイスの例を見る


•    実際にI/Oデバイスを工作すると何が起きるかを見る


•    セッション終了時には、コンピュータの入出力とFall in Love!

                                           6
I/O (入出力)ってなんだ
入出力とは何か?
PC/AT互換機のハードウェア構成例




                     7
入出力とは何か?
•    コンピュータの三大コンポーネント
     o    計算する            中央処理演算装置	
  
     o    記憶する               (CPU)	
  
     o    入出力(I/O)する

                                                主記憶装置	
  
•    I/Oはコンピュータにとって                           (Main	
  Memory)	
  
     必須ではない
     o    I/Oなしでも計算はできる

                            入出力装置	
  
                           (I/O	
  Devices)	
  

                                                                 8
入出力とは何か?
•    電卓で言えば
     o    液晶画面(Output)
     o    テンキー(Input)




                         9
(参考) Linux KVMの仮想マシンのハードウェア構成
                                                  CPU	
  

                                           Intel	
  82441FX	
  
                                                                                    System	
  Memory	
  
                                          (North-­‐bridge)	
  
                   Cirrus	
  Logic	
                                                    LSI	
  Logic	
  
  VGA	
            CL-­‐GD5446	
                                                                                          SCSI	
  HDD	
  
                                                                                       LSI53c895a	
  

                     Realtek	
                      PCI	
                              PCI	
  Slot	
  
Ethernet	
           RTL8029	
                      Bus	
  
                                                                                       PCI	
  Slot	
  
                      Ensoniq	
  
Speaker	
             ES1370	
                                                                                            IDE	
  HDD	
  
                                                                                    PIIX3	
  PCI	
  IDE	
  
                                         Intel	
  82371	
  PIIX3	
                                                        CD-­‐ROM	
  
                    Bochs	
               (South-­‐bridge)	
  
                                                                                    PIIX3	
  PCI	
  USB	
                     USB	
  
                 Flash	
  BIOS	
                    ISA	
  
                                                    Bus	
                         ISA	
                       Floppy	
  
                 Real	
  Time	
                                                                                                   Keyboard	
  
                   Clock	
                                                I/O	
  Interface	
                   PS/2	
  
                                          PC	
  Speaker	
  
                                                                                                                                    Mouse	
  
                                                                       Serial	
           Parallel	
  
                                                                                                                                            10
                                                                        Port	
             Port	
  
               出典:	
  KVM徹底入門 (2010年 翔泳社)	
  
I/O (入出力)の基本
I/Oポートと割り込み
ソフトウェアからみたキーボードI/O




                     11
IA-32で使われる入出力
•    I/Oポート
•    割り込み (Interrupt)
•    Direct Memory Access (DMA)
•    メモリマップドI/O




                                  12
I/Oポート
•    コンピュータで利用される古典的な入出力
•    プロセッサから外部に接続するためのデジタルインターフェイス
•    1アドレス 8ビット×64K、ON(1) もしくは OFF(0) を通信する
•    アクセス単位が基本8ビットなので非常に低速
•    使途
•    キーボードの押下状況確認、ディスクコントローラの状態設定、通
     知など




                                              13
割り込み (interrupt)
•    デバイスからCPUへイベントを通知するための信号
     o    IRQ(Interrupt ReQuest) = 割り込み入力用の16本の信号線
•    割り込みハンドラ
     o    割り込みが発生すると、CPUは割り込みハンドラに制御を移す
     o    今時に言えば…… 何か起きたときの Listener を定義できる


•    使途
     o    タイマーの通知
     o    キーボードの状態変化通知
     o    データ転送完了通知(DMA, MMIO)など


                                                     14
(例) ソフトウェアからみたキーボードI/O - 1

       コンピュータ	
                      キーボードコントローラ
                                     •  8bit幅のI/Oポート2つで接続
            CPU	
                                     流れ
                                     •  キーボードの状態が変わると割り込
                                        みが発生する
                                     •  割り込みが発生すると、BIOSもし
 I/Oポート             I/Oポート              くはOS内の割り込みハンドラが呼
   0x60	
             0x64	
            び出される

                                      割り込むハンドラでの処理
                               割り込み	
 •  キーボードの状態確認
                                         ステータスレジスタ(0x64)
                     コマンド
 入力レジスタ	
            レジスタ	
                    ステータス
                                     •    押されているキー情報の読み取り
 出力レジスタ	
            レジスタ	
                                          入力レジスタ(0x60)
     キーボード	

                                                            15
(例) ソフトウェアからみたキーボードI/O - 2

;-------------------------------------------------         int09_check_pause: ;; check for pause key
;- INT09h : Keyboard Hardware Service Entry Point -          cmp al, #0xe1
;-------------------------------------------------
.org 0xe987                                                  jne int09_process_key
int09_handler:                                               xor ax, ax
  cli                                                        mov ds, ax
  push ax                                                    mov al, BYTE [0x496]    ;; mf2_state ¦= 0x01
                                                            or al, #0x01
 mov al, #0xAD     ;;disable keyboard
                                                            mov BYTE [0x496], al
 out #0x64, al
                                                            jmp int09_done
 mov al, #0x0B
 out #0x20, al                                             int09_process_key:
 in al, #0x20                                                mov bx, #0xf000
 and al, #0x02
                                                             mov ds, bx
 jz int09_finish
                                                             call _int09_function
 in al, #0x60        ;;read key from keyboard controller
 sti                                                       int09_done:
 push ds                                                     popa
 pusha
                                                             pop ds
;; check for extended key                                    cli
 cmp al, #0xe0                                              call eoi_master_pic
 jne int09_check_pause
 xor ax, ax                                                int09_finish:
 mov ds, ax
                                                             mov al, #0xAE     ;;enable keyboard
 mov al, BYTE [0x496]     ;; mf2_state ¦= 0x02
 or al, #0x02                                                out #0x64, al
 mov BYTE [0x496], al                                       pop ax
 jmp int09_done                                             iret                                            16
I/O がどう使われるか
とある県立高等学校イベントでの実装例




                 17
どう使うか
•    コンピュータに入出力装置がついている事はわかった。
•    しかし、それをどう使うのか???

(。・ω・。)     今度、部活紹介でバトン部がパフォーマンスをします。
 担当教諭	
     放送委員会で照明のお手伝いをしたいと思います



 パソコンでスポットライトをチカチカ点けようか(笑)          (`・ω・´ )
                                    副委員長


 (人´ω`)     いいね(笑)
     委員長



                                           18
どう使うか(2) … 数日後
 •    コンピュータに入出力装置がついている事はわかった。
 •    しかし、それをどう使うのか???


(人´ω`)      副委員長、スポットライト制御用の基盤ができたよ♡
 委員長


       え??・あれマジなの?
                                       (;゚д゚;)
                                       副委員長




                                            19
スポットライト制御(I/O基盤の構成イメージ)

          倉庫で見つけたパソコン (PC-9801VM2)	

                          セントロニクス仕様
                           (IEEE1284)	




  リレー	
   リレー	
   リレー	
    リレー	
   リレー	
   リレー	
   リレー	
   リレー	



  リレー	
   リレー	
   リレー	
    リレー	
   リレー	
   リレー	
   リレー	
   リレー	


  電       電       電        電       電       電       電       電
  球       球       球        球       球       球       球       球



                          体育館内設備	
                                 20
コントロール

out 0x40, 0x00   電   電   電   電   電   電   電   電
                 球   球   球   球   球   球   球   球
(0000 0000)	


out 0x40, 0xB2   電   電   電   電   電   電   電   電
                 球   球   球   球   球   球   球   球
(1011 0010)	

out 0x40, 0xA5   電   電   電   電   電   電   電   電
                 球   球   球   球   球   球   球   球
(1010 0101)	

out 0x40, 0xFF   電   電   電   電   電   電   電   電
(1111 11111)	
   球   球   球   球   球   球   球   球

                                                 21
スポットライト制御システムのデザイン
                 コンピュータ	
          スポットライト制御システム本体
  (イントロ、Aメロ、Bメロ等ごとの点灯パターンデータを持つ)

                  ライト
    相対           パターン
    時間	

     スポットライト制御ドライバ
  (アセンブラでDOS用TSRとして開発)	
     ユーザ
                             操作	
                  ライト
   タイマ           制御信号
   割込	

 マルチメディア      セントロニクス仕様
                            キーボード	
   タイマ	
       インターフェイス	

                 ハードウェア	
                                      22
その他の I/O
メモリマップドI/O
Direct Memory Access (DMA)
IRQの共有とMSI




                             23
メモリマップドI/O (MMIO)

•    プロセッサの物理メモリ空間に、デバイス上のメモリ空間をマッピ
     ングする
•    ソフトウェアからデバイス上のメモリ空間に直接アクセスできる
•    使途
     o    ビデオカード、サウンドカード、ディスクコントローラ、イーサネット
          コントローラなどでの大量転送




                                             24
ダイレクトメモリアクセス (DMA)

•    プロセッサの指示に従ってDMAコントローラがデータ転送する
•    データ転送の開始時/終了時のみプロセッサが干渉するため、
     プロセッサ時間を節約できる


•    使途
     o    ビデオカード、サウンドカード、ディスクコントローラ、イーサネット
          コントローラなどでの大量転送




                                             25
IRQとMSI
•    IRQの数には制限がある
•    キーボード、マウス、タイマ、・・・・
•    コンピュータに接続されるデバイスは増え続けている
•    割り込み信号線が足りない!
•    IRQの共有




                                26
IRQの共有
•    割り込み信号線を複数のデバイスで共有する
     o    15本しかないIRQ
     o    例:キーボードとマウスで同じIRQを使う

•    割り込み信号線を共有した場合の問題点
     o    割り込みの発生元がわからない
     o    割り込みが発生した!キーボードが押された?マウスが動いた?

•    解決策
     o    割り込み発生を発生された時に1になるフラグをハードウェアに準備する
     o    割り込みが発生したら、各ドライバのステータスをチェックし、必要な
          ハンドラのみが実行される



                                          27
Bus (バス)によるI/O




                 28
バス(Bus)とは何か
•    コンピュータ内部で各回路がデータをやり取りするための伝送路


バスの種類
•    内部バス …. CPU内部の回路間を接続
•    周辺回路 …. CPU(間)のインターコネクト
•    拡張バス …. デバイスと接続するためのインターコネクト




                                     29
PCIバス
•    Peripheral Component Interconnect
•    コンピュータに各種ハードウェアデバイスを接続するための
     標準仕様
     o    32bit パラレル通信, 33MB/sec, 帯域幅133MB/s


•    プラグアンドプレイ(Plug and     Play	
                        Pray)
     o    接続されたデバイスの種類や必要リソース情報を提供し、OSが自動的に
          リソースアサインできるようにする
     o    I/Oポート、IRQ、メモリマッピングなど
     o    活線挿抜ができるわけではない


                                               30
PCI-Xバス
•    PCIの周波数を33MHzから133MHz、帯域幅1.06GB/sに引き上げ
•    PCI-X 2.0では533MHz, 4.24GB/s
•    PCIバスの上位互換、PCIバスにPCI-Xデバイスの接続も可能
•    今でも古いサーバで見かけるかもしれない




                                              31
PCI Express バス
•    複数のレーンを束ねて使う
•    1レーンあたり 250MB/s
•    4レーン 1,000Mbps = 1GB/s, 16レーンで 4GB/s
•    活線挿抜に対応 (ハードウェア、ソフトウェアの対応も必要)
•    ソフトウェアレベルで PCI の上位互換


•    1.25GHzの周波数でデータをシリアル伝送 (1クロックあたり2ビット
     伝送)




                                            32
PCI Express バス

PCI Express 2.0
•    クロックが2倍 (1.25MHz→2.5GHz)、レーンあたりの転送速度も
     250MB/sから500MB/sに
•    16レーンで8GB/sの帯域をサポート
•    Message Signal Interrupt のサポートが必須に


PCI Express 3.0
•    規格策定中



                                             33
MSI
•    Message Signal Interrupt
     o    メモリ書き込みにより割り込みを通知する (0x0FEExxxx)
     o    PCIデバイスで利用される
     o    IRQを使わない
     o    32 メッセージまで共存可能


•    Enhanced MSI (MSI-X)
     o    PCI Express バス向けの MSI
     o    PCI Express 2.0 では実装が必須に
     o    2048 メッセージまで共存可能



                                             34
CPU間のインターコネクト … QPIとHyperTransport
NUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ)

Non-Uniform Memory Access (NUMA)	
    Uniform Memory Access (UMA)	




近いデバイスへ速くアクセスできるが、遠く                 どのCPUから見ても同じ時間でアクセスで
のデバイスにはアクセスに時間がかかる	
                   きるが、全CPUでバスを共有する	
                                                                  35
CPU間のインターコネクト … QPIとHyperTransport


   Hyper Transport (AMD)	
   Quick Path Interconnect (Intel)	




                                                             36
まとめ




      37
まとめ
•    I/Oとは
     o    コンピュータに対するデータ入力/出力の機能
•    代表的なI/O方法
     o    I/Oポート、割り込み
     o    メモリマップドI/O、DMA
•    バス
     o    拡張バス
           •  PCI, PCI-X, PCI Express
     o    最近の内部バス
           •  現代のコンピュータはほとんどNUMA <-> UMA
           •  Quick Path Interconnect, Hyper Transport

                                                         38
お疲れ様でした。

ガッテン! #qpstudy




                 39
Backup
I/Oを勉強するには




             40
I/Oを勉強するには
マイコンをいじると判りやすい…?


超初心者
•    Arduino … デザイナーによるプロトタイピングを想定した簡単マイコン


初心者
•    PICマイコン (ex: 18F2550) 数百円で買える、とりあえず発振子つけれ
     ば動くマイコンチップ


•    AVRマイコン … PICよりこちらをお勧めするひと多数。
     ArduinoもAVRベース
•    Intel 8051 … 性能が割と高めだが日本語での情報はあまりなさそう

                                                 41
Arduino 入門キット




                42
Arduino (Books)




                  43
PIC
•    a




         44
もっとガチな人には BeagleBoard なんていかが




                               45
お疲れ様でした。
ガッテン! #qpstudy




                 46

More Related Content

What's hot

4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 24章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2mao999
 
オリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートオリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートyou_ucchy
 
ワンコインでIot入門
ワンコインでIot入門 ワンコインでIot入門
ワンコインでIot入門 Makoto Takahashi
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3mao999
 
Raspberry pi + piface=home electronics-security
Raspberry pi + piface=home electronics-securityRaspberry pi + piface=home electronics-security
Raspberry pi + piface=home electronics-securityYamauchi isamu
 
4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4mao999
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64FFRI, Inc.
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出FFRI, Inc.
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host APIksk sue
 
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208Nobuaki Omura
 
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126Nobuaki Omura
 
2章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理12章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1mao999
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobeYamauchi isamu
 
Solnik secure enclaveprocessor-pacsec-final-jp
Solnik secure enclaveprocessor-pacsec-final-jpSolnik secure enclaveprocessor-pacsec-final-jp
Solnik secure enclaveprocessor-pacsec-final-jpPacSecJP
 

What's hot (18)

4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 24章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
 
オリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートオリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノート
 
ワンコインでIot入門
ワンコインでIot入門 ワンコインでIot入門
ワンコインでIot入門
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3
 
Raspberry pi + piface=home electronics-security
Raspberry pi + piface=home electronics-securityRaspberry pi + piface=home electronics-security
Raspberry pi + piface=home electronics-security
 
4章 Linuxカーネル - 割り込み・例外 4
 4章 Linuxカーネル - 割り込み・例外 4 4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
 
Exploring the x64
Exploring the x64Exploring the x64
Exploring the x64
 
Cisco ios
Cisco iosCisco ios
Cisco ios
 
Cisco ios
Cisco iosCisco ios
Cisco ios
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出
 
イチからはじめるUSB Host API
イチからはじめるUSB Host APIイチからはじめるUSB Host API
イチからはじめるUSB Host API
 
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208
第1回【CCNA】ネットワーク基礎講座‗なにわTECH道171208
 
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
 
2章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理12章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 
Slides AXIS WS2
Slides AXIS WS2Slides AXIS WS2
Slides AXIS WS2
 
Arduino入門
Arduino入門Arduino入門
Arduino入門
 
Solnik secure enclaveprocessor-pacsec-final-jp
Solnik secure enclaveprocessor-pacsec-final-jpSolnik secure enclaveprocessor-pacsec-final-jp
Solnik secure enclaveprocessor-pacsec-final-jp
 

Similar to 20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門

OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)Takeshi HASEGAWA
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
hitach flora 220fx 9911
hitach flora 220fx 9911hitach flora 220fx 9911
hitach flora 220fx 9911u_0
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
IoT におけるシングルボードコンピュータとワンボードマイコンについて考える
IoT におけるシングルボードコンピュータとワンボードマイコンについて考えるIoT におけるシングルボードコンピュータとワンボードマイコンについて考える
IoT におけるシングルボードコンピュータとワンボードマイコンについて考えるkakakikikeke
 
2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップTakahiro Shinagawa
 
Extreme Assembler Tanka - eagle0wl
Extreme Assembler Tanka - eagle0wlExtreme Assembler Tanka - eagle0wl
Extreme Assembler Tanka - eagle0wlasmtanka
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介Takehiko YOSHIDA
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解するNorimasa FUJITA
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon DMasaru Oki
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話nullnilaki
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうksk sue
 
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)Kazuyuki Sato
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例についてMasanori Itoh
 

Similar to 20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門 (20)

OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
 
150130 edison-ug
150130 edison-ug150130 edison-ug
150130 edison-ug
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
hitach flora 220fx 9911
hitach flora 220fx 9911hitach flora 220fx 9911
hitach flora 220fx 9911
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
IoT におけるシングルボードコンピュータとワンボードマイコンについて考える
IoT におけるシングルボードコンピュータとワンボードマイコンについて考えるIoT におけるシングルボードコンピュータとワンボードマイコンについて考える
IoT におけるシングルボードコンピュータとワンボードマイコンについて考える
 
2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ
 
Extreme Assembler Tanka - eagle0wl
Extreme Assembler Tanka - eagle0wlExtreme Assembler Tanka - eagle0wl
Extreme Assembler Tanka - eagle0wl
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
Bluetooth通信の 仕組みと活用法紹介
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon D
 
あるブートローダの話
あるブートローダの話あるブートローダの話
あるブートローダの話
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
 
Bhyve Internals
Bhyve InternalsBhyve Internals
Bhyve Internals
 
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 

More from Takeshi HASEGAWA

コンピュータエンジニアへのFPGAのすすめ
コンピュータエンジニアへのFPGAのすすめコンピュータエンジニアへのFPGAのすすめ
コンピュータエンジニアへのFPGAのすすめTakeshi HASEGAWA
 
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)Takeshi HASEGAWA
 
IkaLog: Data Collector for Splatoon and Machine Learning
IkaLog: Data Collector for Splatoon and Machine LearningIkaLog: Data Collector for Splatoon and Machine Learning
IkaLog: Data Collector for Splatoon and Machine Learning Takeshi HASEGAWA
 
#IkaLog によるスプラトゥーンの画像解析と機械学習
#IkaLog によるスプラトゥーンの画像解析と機械学習#IkaLog によるスプラトゥーンの画像解析と機械学習
#IkaLog によるスプラトゥーンの画像解析と機械学習Takeshi HASEGAWA
 
IkaLog and Deep Learning (20161122 GDLCjp)
IkaLog and Deep Learning (20161122 GDLCjp)IkaLog and Deep Learning (20161122 GDLCjp)
IkaLog and Deep Learning (20161122 GDLCjp)Takeshi HASEGAWA
 
IkaLog Presentation for BMD users
IkaLog Presentation for BMD usersIkaLog Presentation for BMD users
IkaLog Presentation for BMD usersTakeshi HASEGAWA
 
ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話Takeshi HASEGAWA
 
IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11Takeshi HASEGAWA
 
IkaLog Presentation at Kansai Open Forum 2015
IkaLog Presentation at Kansai Open Forum 2015IkaLog Presentation at Kansai Open Forum 2015
IkaLog Presentation at Kansai Open Forum 2015Takeshi HASEGAWA
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側Takeshi HASEGAWA
 
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)Eject-io (OSC2014 Tokyo/Fall 懇親会LT)
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)Takeshi HASEGAWA
 
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所Takeshi HASEGAWA
 

More from Takeshi HASEGAWA (20)

FPGAx10_Sakura
FPGAx10_SakuraFPGAx10_Sakura
FPGAx10_Sakura
 
コンピュータエンジニアへのFPGAのすすめ
コンピュータエンジニアへのFPGAのすすめコンピュータエンジニアへのFPGAのすすめ
コンピュータエンジニアへのFPGAのすすめ
 
IkaLog20170316pynq_dist
IkaLog20170316pynq_distIkaLog20170316pynq_dist
IkaLog20170316pynq_dist
 
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
 
IkaLog: Data Collector for Splatoon and Machine Learning
IkaLog: Data Collector for Splatoon and Machine LearningIkaLog: Data Collector for Splatoon and Machine Learning
IkaLog: Data Collector for Splatoon and Machine Learning
 
#IkaLog によるスプラトゥーンの画像解析と機械学習
#IkaLog によるスプラトゥーンの画像解析と機械学習#IkaLog によるスプラトゥーンの画像解析と機械学習
#IkaLog によるスプラトゥーンの画像解析と機械学習
 
IkaLog and Deep Learning (20161122 GDLCjp)
IkaLog and Deep Learning (20161122 GDLCjp)IkaLog and Deep Learning (20161122 GDLCjp)
IkaLog and Deep Learning (20161122 GDLCjp)
 
IkaLog_FPGAStartup1
IkaLog_FPGAStartup1IkaLog_FPGAStartup1
IkaLog_FPGAStartup1
 
IkaLog osc2016tf
IkaLog osc2016tfIkaLog osc2016tf
IkaLog osc2016tf
 
IkaLog Presentation for BMD users
IkaLog Presentation for BMD usersIkaLog Presentation for BMD users
IkaLog Presentation for BMD users
 
IkaLog_overview_en
IkaLog_overview_enIkaLog_overview_en
IkaLog_overview_en
 
ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話
 
IkaLog Presentation v1.3
IkaLog Presentation v1.3IkaLog Presentation v1.3
IkaLog Presentation v1.3
 
IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11IkaLog Presentation at qpstudy 2015.11
IkaLog Presentation at qpstudy 2015.11
 
IkaLog Presentation at Kansai Open Forum 2015
IkaLog Presentation at Kansai Open Forum 2015IkaLog Presentation at Kansai Open Forum 2015
IkaLog Presentation at Kansai Open Forum 2015
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 
ssmjp October 2014
ssmjp October 2014ssmjp October 2014
ssmjp October 2014
 
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)Eject-io (OSC2014 Tokyo/Fall 懇親会LT)
Eject-io (OSC2014 Tokyo/Fall 懇親会LT)
 
Eject-io @ Kernel/VM
Eject-io @ Kernel/VMEject-io @ Kernel/VM
Eject-io @ Kernel/VM
 
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門

  • 1. コンピュータアーキテクチャ I/O入門 qpstudy 2012.05 ∼エンジニアのためのハードウェア徹底入門∼ May 19, 2012 Takeshi HASEGAWA [ja] @hasegaw / [en] @hasegaw_en
  • 2. プロフィール 長谷川 猛 (HASEGAWA Takeshi) twitter: @hasegaw 主にLinuxや仮想化技術を得意とする雑食系SE Xen/KVMを調査、FreeBSD virtioを実装等  最近のアップデート:家にギネス瓶と生ハムおきました 2
  • 6. 本セッションの目的 •  コンピュータにおけるI/O(入出力)の役割を理解する •  IA-32において利用されるI/Oの種類を理解する •  実際にコンピュータに接続されているI/Oデバイスの例を見る •  実際にI/Oデバイスを工作すると何が起きるかを見る •  セッション終了時には、コンピュータの入出力とFall in Love! 6
  • 8. 入出力とは何か? •  コンピュータの三大コンポーネント o  計算する 中央処理演算装置   o  記憶する (CPU)   o  入出力(I/O)する 主記憶装置   •  I/Oはコンピュータにとって (Main  Memory)   必須ではない o  I/Oなしでも計算はできる 入出力装置   (I/O  Devices)   8
  • 9. 入出力とは何か? •  電卓で言えば o  液晶画面(Output) o  テンキー(Input) 9
  • 10. (参考) Linux KVMの仮想マシンのハードウェア構成 CPU   Intel  82441FX   System  Memory   (North-­‐bridge)   Cirrus  Logic   LSI  Logic   VGA   CL-­‐GD5446   SCSI  HDD   LSI53c895a   Realtek   PCI   PCI  Slot   Ethernet   RTL8029   Bus   PCI  Slot   Ensoniq   Speaker   ES1370   IDE  HDD   PIIX3  PCI  IDE   Intel  82371  PIIX3   CD-­‐ROM   Bochs   (South-­‐bridge)   PIIX3  PCI  USB   USB   Flash  BIOS   ISA   Bus   ISA   Floppy   Real  Time   Keyboard   Clock   I/O  Interface   PS/2   PC  Speaker   Mouse   Serial   Parallel   10 Port   Port   出典:  KVM徹底入門 (2010年 翔泳社)  
  • 12. IA-32で使われる入出力 •  I/Oポート •  割り込み (Interrupt) •  Direct Memory Access (DMA) •  メモリマップドI/O 12
  • 13. I/Oポート •  コンピュータで利用される古典的な入出力 •  プロセッサから外部に接続するためのデジタルインターフェイス •  1アドレス 8ビット×64K、ON(1) もしくは OFF(0) を通信する •  アクセス単位が基本8ビットなので非常に低速 •  使途 •  キーボードの押下状況確認、ディスクコントローラの状態設定、通 知など 13
  • 14. 割り込み (interrupt) •  デバイスからCPUへイベントを通知するための信号 o  IRQ(Interrupt ReQuest) = 割り込み入力用の16本の信号線 •  割り込みハンドラ o  割り込みが発生すると、CPUは割り込みハンドラに制御を移す o  今時に言えば…… 何か起きたときの Listener を定義できる •  使途 o  タイマーの通知 o  キーボードの状態変化通知 o  データ転送完了通知(DMA, MMIO)など 14
  • 15. (例) ソフトウェアからみたキーボードI/O - 1 コンピュータ キーボードコントローラ •  8bit幅のI/Oポート2つで接続 CPU 流れ •  キーボードの状態が変わると割り込 みが発生する •  割り込みが発生すると、BIOSもし I/Oポート I/Oポート くはOS内の割り込みハンドラが呼 0x60 0x64 び出される 割り込むハンドラでの処理 割り込み •  キーボードの状態確認 ステータスレジスタ(0x64) コマンド 入力レジスタ レジスタ ステータス •  押されているキー情報の読み取り 出力レジスタ レジスタ 入力レジスタ(0x60) キーボード 15
  • 16. (例) ソフトウェアからみたキーボードI/O - 2 ;------------------------------------------------- int09_check_pause: ;; check for pause key ;- INT09h : Keyboard Hardware Service Entry Point - cmp al, #0xe1 ;------------------------------------------------- .org 0xe987 jne int09_process_key int09_handler: xor ax, ax cli mov ds, ax push ax mov al, BYTE [0x496] ;; mf2_state ¦= 0x01 or al, #0x01 mov al, #0xAD ;;disable keyboard mov BYTE [0x496], al out #0x64, al jmp int09_done mov al, #0x0B out #0x20, al int09_process_key: in al, #0x20 mov bx, #0xf000 and al, #0x02 mov ds, bx jz int09_finish call _int09_function in al, #0x60 ;;read key from keyboard controller sti int09_done: push ds popa pusha pop ds ;; check for extended key cli cmp al, #0xe0 call eoi_master_pic jne int09_check_pause xor ax, ax int09_finish: mov ds, ax mov al, #0xAE ;;enable keyboard mov al, BYTE [0x496] ;; mf2_state ¦= 0x02 or al, #0x02 out #0x64, al mov BYTE [0x496], al pop ax jmp int09_done iret 16
  • 18. どう使うか •  コンピュータに入出力装置がついている事はわかった。 •  しかし、それをどう使うのか??? (。・ω・。)  今度、部活紹介でバトン部がパフォーマンスをします。 担当教諭  放送委員会で照明のお手伝いをしたいと思います  パソコンでスポットライトをチカチカ点けようか(笑) (`・ω・´ ) 副委員長 (人´ω`)  いいね(笑) 委員長 18
  • 19. どう使うか(2) … 数日後 •  コンピュータに入出力装置がついている事はわかった。 •  しかし、それをどう使うのか??? (人´ω`)  副委員長、スポットライト制御用の基盤ができたよ♡ 委員長  え??・あれマジなの? (;゚д゚;) 副委員長 19
  • 20. スポットライト制御(I/O基盤の構成イメージ) 倉庫で見つけたパソコン (PC-9801VM2) セントロニクス仕様 (IEEE1284) リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球 体育館内設備 20
  • 21. コントロール out 0x40, 0x00 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球 (0000 0000) out 0x40, 0xB2 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球 (1011 0010) out 0x40, 0xA5 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球 (1010 0101) out 0x40, 0xFF 電 電 電 電 電 電 電 電 (1111 11111) 球 球 球 球 球 球 球 球 21
  • 22. スポットライト制御システムのデザイン コンピュータ スポットライト制御システム本体 (イントロ、Aメロ、Bメロ等ごとの点灯パターンデータを持つ) ライト 相対 パターン 時間 スポットライト制御ドライバ (アセンブラでDOS用TSRとして開発) ユーザ 操作 ライト タイマ 制御信号 割込 マルチメディア セントロニクス仕様 キーボード タイマ インターフェイス ハードウェア 22
  • 23. その他の I/O メモリマップドI/O Direct Memory Access (DMA) IRQの共有とMSI 23
  • 24. メモリマップドI/O (MMIO) •  プロセッサの物理メモリ空間に、デバイス上のメモリ空間をマッピ ングする •  ソフトウェアからデバイス上のメモリ空間に直接アクセスできる •  使途 o  ビデオカード、サウンドカード、ディスクコントローラ、イーサネット コントローラなどでの大量転送 24
  • 25. ダイレクトメモリアクセス (DMA) •  プロセッサの指示に従ってDMAコントローラがデータ転送する •  データ転送の開始時/終了時のみプロセッサが干渉するため、 プロセッサ時間を節約できる •  使途 o  ビデオカード、サウンドカード、ディスクコントローラ、イーサネット コントローラなどでの大量転送 25
  • 26. IRQとMSI •  IRQの数には制限がある •  キーボード、マウス、タイマ、・・・・ •  コンピュータに接続されるデバイスは増え続けている •  割り込み信号線が足りない! •  IRQの共有 26
  • 27. IRQの共有 •  割り込み信号線を複数のデバイスで共有する o  15本しかないIRQ o  例:キーボードとマウスで同じIRQを使う •  割り込み信号線を共有した場合の問題点 o  割り込みの発生元がわからない o  割り込みが発生した!キーボードが押された?マウスが動いた? •  解決策 o  割り込み発生を発生された時に1になるフラグをハードウェアに準備する o  割り込みが発生したら、各ドライバのステータスをチェックし、必要な ハンドラのみが実行される 27
  • 29. バス(Bus)とは何か •  コンピュータ内部で各回路がデータをやり取りするための伝送路 バスの種類 •  内部バス …. CPU内部の回路間を接続 •  周辺回路 …. CPU(間)のインターコネクト •  拡張バス …. デバイスと接続するためのインターコネクト 29
  • 30. PCIバス •  Peripheral Component Interconnect •  コンピュータに各種ハードウェアデバイスを接続するための 標準仕様 o  32bit パラレル通信, 33MB/sec, 帯域幅133MB/s •  プラグアンドプレイ(Plug and     Play Pray) o  接続されたデバイスの種類や必要リソース情報を提供し、OSが自動的に リソースアサインできるようにする o  I/Oポート、IRQ、メモリマッピングなど o  活線挿抜ができるわけではない 30
  • 31. PCI-Xバス •  PCIの周波数を33MHzから133MHz、帯域幅1.06GB/sに引き上げ •  PCI-X 2.0では533MHz, 4.24GB/s •  PCIバスの上位互換、PCIバスにPCI-Xデバイスの接続も可能 •  今でも古いサーバで見かけるかもしれない 31
  • 32. PCI Express バス •  複数のレーンを束ねて使う •  1レーンあたり 250MB/s •  4レーン 1,000Mbps = 1GB/s, 16レーンで 4GB/s •  活線挿抜に対応 (ハードウェア、ソフトウェアの対応も必要) •  ソフトウェアレベルで PCI の上位互換 •  1.25GHzの周波数でデータをシリアル伝送 (1クロックあたり2ビット 伝送) 32
  • 33. PCI Express バス PCI Express 2.0 •  クロックが2倍 (1.25MHz→2.5GHz)、レーンあたりの転送速度も 250MB/sから500MB/sに •  16レーンで8GB/sの帯域をサポート •  Message Signal Interrupt のサポートが必須に PCI Express 3.0 •  規格策定中 33
  • 34. MSI •  Message Signal Interrupt o  メモリ書き込みにより割り込みを通知する (0x0FEExxxx) o  PCIデバイスで利用される o  IRQを使わない o  32 メッセージまで共存可能 •  Enhanced MSI (MSI-X) o  PCI Express バス向けの MSI o  PCI Express 2.0 では実装が必須に o  2048 メッセージまで共存可能 34
  • 35. CPU間のインターコネクト … QPIとHyperTransport NUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ) Non-Uniform Memory Access (NUMA) Uniform Memory Access (UMA) 近いデバイスへ速くアクセスできるが、遠く どのCPUから見ても同じ時間でアクセスで のデバイスにはアクセスに時間がかかる きるが、全CPUでバスを共有する 35
  • 36. CPU間のインターコネクト … QPIとHyperTransport Hyper Transport (AMD) Quick Path Interconnect (Intel) 36
  • 37. まとめ 37
  • 38. まとめ •  I/Oとは o  コンピュータに対するデータ入力/出力の機能 •  代表的なI/O方法 o  I/Oポート、割り込み o  メモリマップドI/O、DMA •  バス o  拡張バス •  PCI, PCI-X, PCI Express o  最近の内部バス •  現代のコンピュータはほとんどNUMA <-> UMA •  Quick Path Interconnect, Hyper Transport 38
  • 41. I/Oを勉強するには マイコンをいじると判りやすい…? 超初心者 •  Arduino … デザイナーによるプロトタイピングを想定した簡単マイコン 初心者 •  PICマイコン (ex: 18F2550) 数百円で買える、とりあえず発振子つけれ ば動くマイコンチップ •  AVRマイコン … PICよりこちらをお勧めするひと多数。 ArduinoもAVRベース •  Intel 8051 … 性能が割と高めだが日本語での情報はあまりなさそう 41
  • 44. PIC •  a 44