Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
コンピュータアーキテクチャI/O入門           qpstudy 2012.05           ∼エンジニアのためのハードウェア徹底入門∼           May 19, 2012           Takeshi HASE...
プロフィール長谷川 猛 (HASEGAWA Takeshi)twitter: @hasegaw主にLinuxや仮想化技術を得意とする雑食系SEXen/KVMを調査、FreeBSD virtioを実装等 最近のアップデート:家にギネス瓶と生ハムお...
おもな著書・寄稿           3
Webサイトの記事など エンジニアなら知っておきたい仮想マシンのしくみ   http://gihyo.jp/dev/serial/01/vm_work/                                            4
今日の目的        5
本セッションの目的•    コンピュータにおけるI/O(入出力)の役割を理解する•    IA-32において利用されるI/Oの種類を理解する•    実際にコンピュータに接続されているI/Oデバイスの例を見る•    実際にI/Oデバイスを工作...
I/O (入出力)ってなんだ入出力とは何か?PC/AT互換機のハードウェア構成例                     7
入出力とは何か?•    コンピュータの三大コンポーネント     o    計算する            中央処理演算装置	       o    記憶する               (CPU)	       o    入出力(I/O)す...
入出力とは何か?•    電卓で言えば     o    液晶画面(Output)     o    テンキー(Input)                         9
(参考) Linux KVMの仮想マシンのハードウェア構成                                                  CPU	                                       ...
I/O (入出力)の基本I/Oポートと割り込みソフトウェアからみたキーボードI/O                     11
IA-32で使われる入出力•    I/Oポート•    割り込み (Interrupt)•    Direct Memory Access (DMA)•    メモリマップドI/O                               ...
I/Oポート•    コンピュータで利用される古典的な入出力•    プロセッサから外部に接続するためのデジタルインターフェイス•    1アドレス 8ビット×64K、ON(1) もしくは OFF(0) を通信する•    アクセス単位が基本8...
割り込み (interrupt)•    デバイスからCPUへイベントを通知するための信号     o    IRQ(Interrupt ReQuest) = 割り込み入力用の16本の信号線•    割り込みハンドラ     o    割り込み...
(例) ソフトウェアからみたキーボードI/O - 1       コンピュータ	                      キーボードコントローラ                                     •  8bit幅のI/O...
(例) ソフトウェアからみたキーボードI/O - 2;-------------------------------------------------         int09_check_pause: ;; check for pause...
I/O がどう使われるかとある県立高等学校イベントでの実装例                 17
どう使うか•    コンピュータに入出力装置がついている事はわかった。•    しかし、それをどう使うのか???(。・ω・。)     今度、部活紹介でバトン部がパフォーマンスをします。 担当教諭	     放送委員会で照明のお手伝いをしたいと...
どう使うか(2) … 数日後 •    コンピュータに入出力装置がついている事はわかった。 •    しかし、それをどう使うのか???(人´ω`)      副委員長、スポットライト制御用の基盤ができたよ♡ 委員長       え??・あれマジ...
スポットライト制御(I/O基盤の構成イメージ)          倉庫で見つけたパソコン (PC-9801VM2)	                          セントロニクス仕様                           (I...
コントロールout 0x40, 0x00   電   電   電   電   電   電   電   電                 球   球   球   球   球   球   球   球(0000 0000)	out 0x40, 0x...
スポットライト制御システムのデザイン                 コンピュータ	          スポットライト制御システム本体  (イントロ、Aメロ、Bメロ等ごとの点灯パターンデータを持つ)                  ライト  ...
その他の I/OメモリマップドI/ODirect Memory Access (DMA)IRQの共有とMSI                             23
メモリマップドI/O (MMIO)•    プロセッサの物理メモリ空間に、デバイス上のメモリ空間をマッピ     ングする•    ソフトウェアからデバイス上のメモリ空間に直接アクセスできる•    使途     o    ビデオカード、サウン...
ダイレクトメモリアクセス (DMA)•    プロセッサの指示に従ってDMAコントローラがデータ転送する•    データ転送の開始時/終了時のみプロセッサが干渉するため、     プロセッサ時間を節約できる•    使途     o    ビデ...
IRQとMSI•    IRQの数には制限がある•    キーボード、マウス、タイマ、・・・・•    コンピュータに接続されるデバイスは増え続けている•    割り込み信号線が足りない!•    IRQの共有                 ...
IRQの共有•    割り込み信号線を複数のデバイスで共有する     o    15本しかないIRQ     o    例:キーボードとマウスで同じIRQを使う•    割り込み信号線を共有した場合の問題点     o    割り込みの発生元...
Bus (バス)によるI/O                 28
バス(Bus)とは何か•    コンピュータ内部で各回路がデータをやり取りするための伝送路バスの種類•    内部バス …. CPU内部の回路間を接続•    周辺回路 …. CPU(間)のインターコネクト•    拡張バス …. デバイスと接...
PCIバス•    Peripheral Component Interconnect•    コンピュータに各種ハードウェアデバイスを接続するための     標準仕様     o    32bit パラレル通信, 33MB/sec, 帯域幅1...
PCI-Xバス•    PCIの周波数を33MHzから133MHz、帯域幅1.06GB/sに引き上げ•    PCI-X 2.0では533MHz, 4.24GB/s•    PCIバスの上位互換、PCIバスにPCI-Xデバイスの接続も可能•  ...
PCI Express バス•    複数のレーンを束ねて使う•    1レーンあたり 250MB/s•    4レーン 1,000Mbps = 1GB/s, 16レーンで 4GB/s•    活線挿抜に対応 (ハードウェア、ソフトウェアの対応...
PCI Express バスPCI Express 2.0•    クロックが2倍 (1.25MHz→2.5GHz)、レーンあたりの転送速度も     250MB/sから500MB/sに•    16レーンで8GB/sの帯域をサポート•    ...
MSI•    Message Signal Interrupt     o    メモリ書き込みにより割り込みを通知する (0x0FEExxxx)     o    PCIデバイスで利用される     o    IRQを使わない     o ...
CPU間のインターコネクト … QPIとHyperTransportNUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ)Non-Uniform Memory Access (NUMA)	    Uniform Memory ...
CPU間のインターコネクト … QPIとHyperTransport   Hyper Transport (AMD)	   Quick Path Interconnect (Intel)	                            ...
まとめ      37
まとめ•    I/Oとは     o    コンピュータに対するデータ入力/出力の機能•    代表的なI/O方法     o    I/Oポート、割り込み     o    メモリマップドI/O、DMA•    バス     o    拡張...
お疲れ様でした。ガッテン! #qpstudy                 39
BackupI/Oを勉強するには             40
I/Oを勉強するにはマイコンをいじると判りやすい…?超初心者•    Arduino … デザイナーによるプロトタイピングを想定した簡単マイコン初心者•    PICマイコン (ex: 18F2550) 数百円で買える、とりあえず発振子つけれ ...
Arduino 入門キット                42
Arduino (Books)                  43
PIC•    a         44
もっとガチな人には BeagleBoard なんていかが                               45
お疲れ様でした。ガッテン! #qpstudy                 46
Upcoming SlideShare
Loading in …5
×

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

7,279 views

Published on

qpstudy2012.05 session by @hasegaw

http://www.zusaar.com/event/273001

Published in: Technology
  • ありがとうございます。参考になります。

    errata
    PCIe 3.0 はすでに規格が確定していたようです。失礼しました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • p16はキーボード割り込み処理の例ですね。
    p19基盤は基板じゃないかと
    p31コネクタの部分削ってますが、内層にパターンがある場合があるので注意してください(見た感じなさそうなのでこの場合は大丈夫ですが)
    p35右側の例はUMAではなくて、SMP(Symmetric Multi Processor)というのが一般的です。
    UMA(Unified Memory Access)はVRAMを主メモリと共有する場合に使います。
    p41 8051はUSB周辺機器の組み込みで使われているのでEZ-USBで検索すると日本語の情報が大量に出てきます。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. コンピュータアーキテクチャI/O入門 qpstudy 2012.05 ∼エンジニアのためのハードウェア徹底入門∼ May 19, 2012 Takeshi HASEGAWA [ja] @hasegaw / [en] @hasegaw_en
  2. 2. プロフィール長谷川 猛 (HASEGAWA Takeshi)twitter: @hasegaw主にLinuxや仮想化技術を得意とする雑食系SEXen/KVMを調査、FreeBSD virtioを実装等 最近のアップデート:家にギネス瓶と生ハムおきました 2
  3. 3. おもな著書・寄稿 3
  4. 4. Webサイトの記事など エンジニアなら知っておきたい仮想マシンのしくみ http://gihyo.jp/dev/serial/01/vm_work/ 4
  5. 5. 今日の目的 5
  6. 6. 本セッションの目的•  コンピュータにおけるI/O(入出力)の役割を理解する•  IA-32において利用されるI/Oの種類を理解する•  実際にコンピュータに接続されているI/Oデバイスの例を見る•  実際にI/Oデバイスを工作すると何が起きるかを見る•  セッション終了時には、コンピュータの入出力とFall in Love! 6
  7. 7. I/O (入出力)ってなんだ入出力とは何か?PC/AT互換機のハードウェア構成例 7
  8. 8. 入出力とは何か?•  コンピュータの三大コンポーネント o  計算する 中央処理演算装置   o  記憶する (CPU)   o  入出力(I/O)する 主記憶装置  •  I/Oはコンピュータにとって (Main  Memory)   必須ではない o  I/Oなしでも計算はできる 入出力装置   (I/O  Devices)   8
  9. 9. 入出力とは何か?•  電卓で言えば o  液晶画面(Output) o  テンキー(Input) 9
  10. 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年 翔泳社)  
  11. 11. I/O (入出力)の基本I/Oポートと割り込みソフトウェアからみたキーボードI/O 11
  12. 12. IA-32で使われる入出力•  I/Oポート•  割り込み (Interrupt)•  Direct Memory Access (DMA)•  メモリマップドI/O 12
  13. 13. I/Oポート•  コンピュータで利用される古典的な入出力•  プロセッサから外部に接続するためのデジタルインターフェイス•  1アドレス 8ビット×64K、ON(1) もしくは OFF(0) を通信する•  アクセス単位が基本8ビットなので非常に低速•  使途•  キーボードの押下状況確認、ディスクコントローラの状態設定、通 知など 13
  14. 14. 割り込み (interrupt)•  デバイスからCPUへイベントを通知するための信号 o  IRQ(Interrupt ReQuest) = 割り込み入力用の16本の信号線•  割り込みハンドラ o  割り込みが発生すると、CPUは割り込みハンドラに制御を移す o  今時に言えば…… 何か起きたときの Listener を定義できる•  使途 o  タイマーの通知 o  キーボードの状態変化通知 o  データ転送完了通知(DMA, MMIO)など 14
  15. 15. (例) ソフトウェアからみたキーボードI/O - 1 コンピュータ キーボードコントローラ •  8bit幅のI/Oポート2つで接続 CPU 流れ •  キーボードの状態が変わると割り込 みが発生する •  割り込みが発生すると、BIOSもし I/Oポート I/Oポート くはOS内の割り込みハンドラが呼 0x60 0x64 び出される 割り込むハンドラでの処理 割り込み •  キーボードの状態確認 ステータスレジスタ(0x64) コマンド 入力レジスタ レジスタ ステータス •  押されているキー情報の読み取り 出力レジスタ レジスタ 入力レジスタ(0x60) キーボード 15
  16. 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_keyint09_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
  17. 17. I/O がどう使われるかとある県立高等学校イベントでの実装例 17
  18. 18. どう使うか•  コンピュータに入出力装置がついている事はわかった。•  しかし、それをどう使うのか???(。・ω・。)  今度、部活紹介でバトン部がパフォーマンスをします。 担当教諭  放送委員会で照明のお手伝いをしたいと思います パソコンでスポットライトをチカチカ点けようか(笑) (`・ω・´ ) 副委員長 (人´ω`)  いいね(笑) 委員長 18
  19. 19. どう使うか(2) … 数日後 •  コンピュータに入出力装置がついている事はわかった。 •  しかし、それをどう使うのか???(人´ω`)  副委員長、スポットライト制御用の基盤ができたよ♡ 委員長  え??・あれマジなの? (;゚д゚;) 副委員長 19
  20. 20. スポットライト制御(I/O基盤の構成イメージ) 倉庫で見つけたパソコン (PC-9801VM2) セントロニクス仕様 (IEEE1284) リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー リレー 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球 体育館内設備 20
  21. 21. コントロールout 0x40, 0x00 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球(0000 0000) out 0x40, 0xB2 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球(1011 0010) out 0x40, 0xA5 電 電 電 電 電 電 電 電 球 球 球 球 球 球 球 球(1010 0101) out 0x40, 0xFF 電 電 電 電 電 電 電 電(1111 11111) 球 球 球 球 球 球 球 球 21
  22. 22. スポットライト制御システムのデザイン コンピュータ スポットライト制御システム本体 (イントロ、Aメロ、Bメロ等ごとの点灯パターンデータを持つ) ライト 相対 パターン 時間 スポットライト制御ドライバ (アセンブラでDOS用TSRとして開発) ユーザ 操作 ライト タイマ 制御信号 割込 マルチメディア セントロニクス仕様 キーボード タイマ インターフェイス ハードウェア 22
  23. 23. その他の I/OメモリマップドI/ODirect Memory Access (DMA)IRQの共有とMSI 23
  24. 24. メモリマップドI/O (MMIO)•  プロセッサの物理メモリ空間に、デバイス上のメモリ空間をマッピ ングする•  ソフトウェアからデバイス上のメモリ空間に直接アクセスできる•  使途 o  ビデオカード、サウンドカード、ディスクコントローラ、イーサネット コントローラなどでの大量転送 24
  25. 25. ダイレクトメモリアクセス (DMA)•  プロセッサの指示に従ってDMAコントローラがデータ転送する•  データ転送の開始時/終了時のみプロセッサが干渉するため、 プロセッサ時間を節約できる•  使途 o  ビデオカード、サウンドカード、ディスクコントローラ、イーサネット コントローラなどでの大量転送 25
  26. 26. IRQとMSI•  IRQの数には制限がある•  キーボード、マウス、タイマ、・・・・•  コンピュータに接続されるデバイスは増え続けている•  割り込み信号線が足りない!•  IRQの共有 26
  27. 27. IRQの共有•  割り込み信号線を複数のデバイスで共有する o  15本しかないIRQ o  例:キーボードとマウスで同じIRQを使う•  割り込み信号線を共有した場合の問題点 o  割り込みの発生元がわからない o  割り込みが発生した!キーボードが押された?マウスが動いた?•  解決策 o  割り込み発生を発生された時に1になるフラグをハードウェアに準備する o  割り込みが発生したら、各ドライバのステータスをチェックし、必要な ハンドラのみが実行される 27
  28. 28. Bus (バス)によるI/O 28
  29. 29. バス(Bus)とは何か•  コンピュータ内部で各回路がデータをやり取りするための伝送路バスの種類•  内部バス …. CPU内部の回路間を接続•  周辺回路 …. CPU(間)のインターコネクト•  拡張バス …. デバイスと接続するためのインターコネクト 29
  30. 30. PCIバス•  Peripheral Component Interconnect•  コンピュータに各種ハードウェアデバイスを接続するための 標準仕様 o  32bit パラレル通信, 33MB/sec, 帯域幅133MB/s•  プラグアンドプレイ(Plug and     Play Pray) o  接続されたデバイスの種類や必要リソース情報を提供し、OSが自動的に リソースアサインできるようにする o  I/Oポート、IRQ、メモリマッピングなど o  活線挿抜ができるわけではない 30
  31. 31. PCI-Xバス•  PCIの周波数を33MHzから133MHz、帯域幅1.06GB/sに引き上げ•  PCI-X 2.0では533MHz, 4.24GB/s•  PCIバスの上位互換、PCIバスにPCI-Xデバイスの接続も可能•  今でも古いサーバで見かけるかもしれない 31
  32. 32. PCI Express バス•  複数のレーンを束ねて使う•  1レーンあたり 250MB/s•  4レーン 1,000Mbps = 1GB/s, 16レーンで 4GB/s•  活線挿抜に対応 (ハードウェア、ソフトウェアの対応も必要)•  ソフトウェアレベルで PCI の上位互換•  1.25GHzの周波数でデータをシリアル伝送 (1クロックあたり2ビット 伝送) 32
  33. 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. 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. 35. CPU間のインターコネクト … QPIとHyperTransportNUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ)Non-Uniform Memory Access (NUMA) Uniform Memory Access (UMA) 近いデバイスへ速くアクセスできるが、遠く どのCPUから見ても同じ時間でアクセスでのデバイスにはアクセスに時間がかかる きるが、全CPUでバスを共有する 35
  36. 36. CPU間のインターコネクト … QPIとHyperTransport Hyper Transport (AMD) Quick Path Interconnect (Intel) 36
  37. 37. まとめ 37
  38. 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
  39. 39. お疲れ様でした。ガッテン! #qpstudy 39
  40. 40. BackupI/Oを勉強するには 40
  41. 41. I/Oを勉強するにはマイコンをいじると判りやすい…?超初心者•  Arduino … デザイナーによるプロトタイピングを想定した簡単マイコン初心者•  PICマイコン (ex: 18F2550) 数百円で買える、とりあえず発振子つけれ ば動くマイコンチップ•  AVRマイコン … PICよりこちらをお勧めするひと多数。 ArduinoもAVRベース•  Intel 8051 … 性能が割と高めだが日本語での情報はあまりなさそう 41
  42. 42. Arduino 入門キット 42
  43. 43. Arduino (Books) 43
  44. 44. PIC•  a 44
  45. 45. もっとガチな人には BeagleBoard なんていかが 45
  46. 46. お疲れ様でした。ガッテン! #qpstudy 46

×