際際滷

際際滷Share a Scribd company logo
コンピュ`タア`キテクチャ
I/O秘T




           qpstudy 2012.05
           ゛エンジニアのためのハ`ドウェア莿徃謇T゛
           May 19, 2012

           Takeshi HASEGAWA
           [ja] @hasegaw / [en] @hasegaw_en
プロフィ`ル
L紅寒?値 (HASEGAWA Takeshi)
twitter: @hasegaw


麼にLinuxや∀觧室gを誼吭とするj奮狼SE
Xen/KVMを{法FreeBSD virtioをg廾吉?
恷除のアップデ`ト瑳劼縫ネス匿と伏ハムおきました




                                 2
おもな彭慕?篠後




           3
Webサイトの並など




 エンジニアなら岑っておきたい∀襯泪轡鵑里靴み
   http://gihyo.jp/dev/serial/01/vm_work/
                                            4
書晩の朕議




        5
云セッションの朕議

??   コンピュ`タにおけるI/O(秘竃薦)の叨護を尖盾する


??   IA-32において旋喘されるI/OのNを尖盾する


??   gHにコンピュ`タに俊AされているI/Oデバイスの箭をる


??   gHにI/Oデバイスを垢恬すると採が軟きるかをる


??   セッションK阻rには、コンピュ`タの秘竃薦とFall in Love!

                                           6
I/O (秘竃薦)ってなんだ
秘竃薦とは採か
PC/AT札QCのハ`ドウェア撹箭




                     7
秘竃薦とは採か
??   コンピュ`タの眉寄コンポ`ネント
     o?   麻する            嶄刹I尖處麻廾崔	
 ?
     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莿徃謇T (2010定 葭症)	
 ?
I/O (秘竃薦)の児云
I/Oポ`トと護りzみ
ソフトウェアからみたキ`ボ`ドI/O




                     11
IA-32で聞われる秘竃薦
??   I/Oポ`ト
??   護りzみ (Interrupt)
??   Direct Memory Access (DMA)
??   メモリマップドI/O




                                  12
I/Oポ`ト
??   コンピュ`タで旋喘される硬灸議な秘竃薦
??   プロセッサから翌何に俊Aするためのデジタルインタ`フェイス
??   1アドレス 8ビット〜64K、ON(1) もしくは OFF(0) を宥佚する
??   アクセスg了が児云8ビットなので掲械に詰堀
??   聞余
??   キ`ボ`ドの兀和彜r_J、ディスクコントロ`ラの彜BO協、宥
     岑など




                                              13
護りzみ (interrupt)
??   デバイスからCPUへイベントを宥岑するための佚催
     o?   IRQ(Interrupt ReQuest) = 護りzみ秘薦喘の16云の佚催
??   護りzみハンドラ
     o?   護りzみがk伏すると、CPUは護りzみハンドラに崙囮を卞す
     o?   書rに冱えば´´ 採か軟きたときの Listener を協xできる


??   聞余
     o?   タイマ`の宥岑
     o?   キ`ボ`ドの彜B篁宥岑
     o?   デ`タ僕頼阻宥岑(DMA, MMIO)など


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

       コンピュ`タ	
                      キ`ボ`ドコントロ`ラ
                                     ?? 8bit嫌のI/Oポ`ト2つで俊A
            CPU	
                                     送れ
                                     ?? キ`ボ`ドの彜Bが笋錣襪噺遒袰z
                                        みがk伏する
                                     ?? 護りzみがk伏すると、BIOSもし
 I/Oポ`ト             I/Oポ`ト              くはOS坪の護りzみハンドラが柵
   0x60	
             0x64	
            び竃される

                                      護りzむハンドラでのI尖
                               護りzみ	
 ?? キ`ボ`ドの彜B_J
                                         ステ`タスレジスタ(0x64)
                     コマンド
 秘薦レジスタ	
            レジスタ	
                    ステ`タス
                                     ??   兀されているキ`秤鵑燐iみ函り
 竃薦レジスタ	
            レジスタ	
                                          秘薦レジスタ(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_?nish
                                                             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_?nish:
 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 がどう聞われるか
とあるh羨互吉僥丕イベントでのg廾箭




                 17
どう聞うか
??   コンピュ`タに秘竃薦廾崔がついている並はわかった。
??   しかし、それをどう聞うのか殖殖

(。?ω?。)     書業、何試B初でバトン何がパフォ`マンスをします。
 毅輝縮I	
     慧僕溜T氏で孚苧のお返擦い鬚靴燭い繁爾い泙



 パソコンでスポットライトをチカチカ泣けようか丶          (?ω?? )
                                    険溜TL


 (繁?ω)     いいね丶
     溜TL



                                           18
どう聞うか(2) ´ 方晩瘁
 ??   コンピュ`タに秘竃薦廾崔がついている並はわかった。
 ??   しかし、それをどう聞うのか殖殖


(繁?ω)      険溜TL、スポットライト崙囮喘の児Pができたよ?
 溜TL


       え殖?あれマジなの
                                       (?д?)
                                       険溜TL




                                            19
スポットライト崙囮┗/或児徒の更撹イメ`ジ)

          }譴拝つけたパソコン (PC-9801VM2)	

                          セントロニクス碧
                           (IEEE1284)	




  リレ`	
   リレ`	
   リレ`	
    リレ`	
   リレ`	
   リレ`	
   リレ`	
   リレ`	



  リレ`	
   リレ`	
   リレ`	
    リレ`	
   リレ`	
   リレ`	
   リレ`	
   リレ`	


                                                    
  白       白       白        白       白       白       白       白



                          悶圄^坪O	
                                 20
コントロ`ル

out 0x40, 0x00                        
                 白   白   白   白   白   白   白   白
(0000 0000)	


out 0x40, 0xB2                        
                 白   白   白   白   白   白   白   白
(1011 0010)	

out 0x40, 0xA5                        
                 白   白   白   白   白   白   白   白
(1010 0101)	

out 0x40, 0xFF                        
(1111 11111)	
   白   白   白   白   白   白   白   白

                                                 21
スポットライト崙囮システムのデザイン
                 コンピュ`タ	
          スポットライト崙囮システム云悶
  ┘ぅ鵐肇蹇Aメロ、Bメロ吉ごとの泣菊パタ`ンデ`タを隔つ

                  ライト
               パタ`ン
    rg	

     スポットライト崙囮ドライバ
  ┘▲札鵐屮蕕DOS喘TSRとして_k	
     ユ`ザ
                             荷恬	
                  ライト
   タイマ           崙囮佚催
   護z	

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

                 ハ`ドウェア	
                                      22
その麿の I/O
メモリマップドI/O
Direct Memory Access (DMA)
IRQの慌嗤とMSI




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

??   プロセッサの麗尖メモリ腎gに、デバイス貧のメモリ腎gをマッピ
     ングする
??   ソフトウェアからデバイス貧のメモリ腎gに岷俊アクセスできる
??   聞余
     o?   ビデオカ`ド、サウンドカ`ド、ディスクコントロ`ラ、イ`サネット
          コントロ`ラなどでの寄楚僕




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

??   プロセッサの峺幣に惄辰DMAコントロ`ラがデ`タ僕する
??   デ`タ僕の_兵rK阻rのみプロセッサが孤hするため、
     プロセッサrgをsできる


??   聞余
     o?   ビデオカ`ド、サウンドカ`ド、ディスクコントロ`ラ、イ`サネット
          コントロ`ラなどでの寄楚僕




                                             25
IRQとMSI
??   IRQの方には崙泙ある
??   キ`ボ`ド、マウス、タイマ、????
??   コンピュ`タに俊AされるデバイスはえAけている
??   護りzみ佚催が怎りない
??   IRQの慌嗤




                                26
IRQの慌嗤
??   護りzみ佚催を}方のデバイスで慌嗤する
     o?   15云しかないIRQ
     o?   箭坤`ボ`ドとマウスで揖じIRQを聞う

??   護りzみ佚催を慌嗤した栽の}泣
     o?   護りzみのk伏圷がわからない
     o?   護りzみがk伏した.`ボ`ドが兀された織泪Ε垢咾い殖

??   盾Q貨
     o?   護りzみk伏をk伏されたrに1になるフラグをハ`ドウェアに笋垢
     o?   護りzみがk伏したら、光ドライバのステ`タスをチェックし、駅勣な
          ハンドラのみがg佩される



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




                 28
バス(Bus)とは採か
??   コンピュ`タ坪何で光指揃がデ`タをやり函りするための史預


バスのN
??   坪何バス ´. CPU坪何の指揃gを俊A
??   巓x指揃 ´. CPUgのインタ`コネクト
??   バス ´. デバイスと俊Aするためのインタ`コネクト




                                     29
PCIバス
??   Peripheral Component Interconnect
??   コンピュ`タに光Nハ`ドウェアデバイスを俊Aするための
     癖
     o?   32bit パラレル宥佚, 33MB/sec, 。囃嫌133MB/s


??   プラグアンドプレイ(Plug and     Play	
                        Pray)
     o?   俊AされたデバイスのNや駅勣リソ`ス秤鵑鯡畊し、OSが徭啜弔
          リソ`スアサインできるようにする
     o?   I/Oポ`ト、IRQ、メモリマッピングなど
     o?   試iができるわけではない


                                               30
PCI-Xバス
??   PCIの巓襖方を33MHzから133MHz、。囃嫌1.06GB/sに哈き貧げ
??   PCI-X 2.0では533MHz, 4.24GB/s
??   PCIバスの貧了札Q、PCIバスにPCI-Xデバイスの俊Aも辛嬬
??   書でも硬いサ`バでかけるかもしれない




                                              31
PCI Express バス
??   }方のレ`ンを崩ねて聞う
??   1レ`ンあたり 250MB/s
??   4レ`ン 1,000Mbps = 1GB/s, 16レ`ンで 4GB/s
??   試iに (ハ`ドウェア、ソフトウェアの鬉皹慴)
??   ソフトウェアレベルで PCI の貧了札Q


??   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?   メモリきzみにより護りzみを宥岑する (0x0FEExxxx)
     o?   PCIデバイスで旋喘される
     o?   IRQを聞わない
     o?   32 メッセ`ジまで慌贋辛嬬


??   Enhanced MSI (MSI-X)
     o?   PCI Express バス鬚韻 MSI
     o?   PCI Express 2.0 ではg廾が駅に
     o?   2048 メッセ`ジまで慌贋辛嬬



                                             34
CPUgのインタ`コネクト ´ QPIとHyperTransport
NUMA(掲各メモリアクセス) vs UMA(各侏マルチプロセッサ

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




除いデバイスへ堀くアクセスできるが、hく                 どのCPUからても揖じrgでアクセスで
のデバイスにはアクセスにrgがかかる	
                   きるが、畠CPUでバスを慌嗤する	
                                                                  35
CPUgのインタ`コネクト ´ QPIとHyperTransport


   Hyper Transport (AMD)	
   Quick Path Interconnect (Intel)	




                                                             36
まとめ




      37
まとめ
??   I/Oとは
     o?   コンピュ`タにするデ`タ秘薦竃薦のC嬬
??   旗燕議なI/O圭隈
     o?   I/Oポ`ト、護りzみ
     o?   メモリマップドI/O、DMA
??   バス
     o?   バス
           ?? PCI, PCI-X, PCI Express
     o?   恷除の坪何バス
           ?? F旗のコンピュ`タはほとんどNUMA <-> UMA
           ?? Quick Path Interconnect, Hyper Transport

                                                         38
お藤れでした。

ガッテン #qpstudy




                 39
Backup
I/Oを茶するには




             40
I/Oを茶するには
マイコンをいじると登りやすい´?


階兜伉宀
??   Arduino ´ デザイナ`によるプロトタイピングを覿┐靴榛gマイコン


兜伉宀
??   PICマイコン (ex: 18F2550) 方為劼肺Iえる、とりあえずk尅徨つけれ
     ば咾マイコンチップ


??   AVRマイコン ´ PICよりこちらをお瓩瓩垢襪劼閥猜。
     ArduinoもAVRベ`ス
??   Intel 8051 ´ 來嬬が護と互めだが晩云Zでの秤鵑呂△泙蠅覆気修

                                                 41
Arduino 秘Tキット




                42
Arduino (Books)




                  43
PIC
??   a




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




                               45
お藤れでした。
ガッテン #qpstudy




                 46

More Related Content

What's hot (18)

PDF
4嫗 Linuxカ`ネル - 護りzみ?箭翌 2
mao999
?
PDF
オリジナルMIDIシ`ケンサ _kノ`ト
you_ucchy
?
PDF
ワンコインで鴛看岳秘壇
Makoto Takahashi
?
PDF
4嫗 Linuxカ`ネル - 護りzみ?箭翌 3
mao999
?
PDF
Raspberry pi piface=home electronics-security
Yamauchi isamu
?
PDF
4嫗 Linuxカ`ネル - 護りzみ?箭翌 4
mao999
?
PDF
Exploring the x64
FFRI, Inc.
?
PPTX
Cisco ios
ssuser021e0d
?
PPTX
Cisco ios
ssuserc9df1e
?
PDF
システムコ`ルフックを聞喘した好奮
FFRI, Inc.
?
PPTX
イチからはじめるUSB Host API
ksk sue
?
PDF
及1指‐遺遺鰻粥/ネットワ`ク児粥讐恙?なにわ意掘遺堰祇171208
Nobuaki Omura
?
PPTX
及2指‐遺遺鰻粥/ネットワ`ク児粥讐恙喝なにわ意掘遺堰祇180126
Nobuaki Omura
?
PDF
2嫗 Linuxカ`ネル - メモリ砿尖1
mao999
?
PPT
201104016 osc2011 kobe
Yamauchi isamu
?
PDF
際際滷s AXIS WS2
Shigeru Kobayashi
?
PDF
粥姻糸顎庄稼看秘壇
Junichi Minamino
?
PDF
Solnik secure enclaveprocessor-pacsec-final-jp
PacSecJP
?
4嫗 Linuxカ`ネル - 護りzみ?箭翌 2
mao999
?
オリジナルMIDIシ`ケンサ _kノ`ト
you_ucchy
?
ワンコインで鴛看岳秘壇
Makoto Takahashi
?
4嫗 Linuxカ`ネル - 護りzみ?箭翌 3
mao999
?
Raspberry pi piface=home electronics-security
Yamauchi isamu
?
4嫗 Linuxカ`ネル - 護りzみ?箭翌 4
mao999
?
Exploring the x64
FFRI, Inc.
?
Cisco ios
ssuser021e0d
?
Cisco ios
ssuserc9df1e
?
システムコ`ルフックを聞喘した好奮
FFRI, Inc.
?
イチからはじめるUSB Host API
ksk sue
?
及1指‐遺遺鰻粥/ネットワ`ク児粥讐恙?なにわ意掘遺堰祇171208
Nobuaki Omura
?
及2指‐遺遺鰻粥/ネットワ`ク児粥讐恙喝なにわ意掘遺堰祇180126
Nobuaki Omura
?
2嫗 Linuxカ`ネル - メモリ砿尖1
mao999
?
201104016 osc2011 kobe
Yamauchi isamu
?
際際滷s AXIS WS2
Shigeru Kobayashi
?
粥姻糸顎庄稼看秘壇
Junichi Minamino
?
Solnik secure enclaveprocessor-pacsec-final-jp
PacSecJP
?

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

PDF
OSC2011 Tokyo/Fall 發ぅ丱(virtio)
Takeshi HASEGAWA
?
PDF
2008-11-18 セキュアVMワ`クショップ
Takahiro Shinagawa
?
PPT
Itv恙 パソコン basic part 1
Kenichi Takeuchi
?
PDF
1肝ベ`シックv恙秤鶺擅瓜 俐屎井
Nashiro Daisuke
?
KEY
20120519 #qpstudy インタ`フェ`ス秘T
Hiyou Shinnonome
?
KEY
粥稼糸姻看庄糸ロボットサミット庄稼握翅
Kenichi Yoshida
?
PDF
V6read#4
magoroku Yamamoto
?
PDF
Bluetooth宥佚の 碧Mみと試喘隈B初
Takehiko YOSHIDA
?
PDF
PFI Seminar 2010/01/21
Preferred Networks
?
PPT
柴麻字尖胎秘壇01
Tomoyuki Tarumi
?
PDF
デバドラを慕いてみよう
Masami Ichikawa
?
KEY
粥稼糸姻看庄糸ロボットサミット庄稼兆硬塁
Kenichi Yoshida
?
PDF
io tつくるよ LT m5stackの児医をつくったよ 
Masawo Yamazaki
?
PDF
IchigoJam はじめてのプログラミング サイエンスアコ?ラ2015 Fb512WS2Y創
Taisuke Fukuno
?
PDF
Fpga local 20130322
Takefumi MIYOSHI
?
PDF
A35 SQL Server と NUMA by 俑賓夘
Insight Technology, Inc.
?
PDF
2012-11-17-SakuraDC
Shinya Takamaeda-Y
?
PDF
Ns2240series users manual_07
squat12
?
PPT
コンピュ`タの撹とO 及3井 及2嫗 茶氏Y創
futada
?
PDF
エバンジェリストがZるパワ`システム蒙 ゛ 及3指IBMオフコンはいかにして伏き火れたのか拭及屈嫗゛
Takumi Kurosawa
?
OSC2011 Tokyo/Fall 發ぅ丱(virtio)
Takeshi HASEGAWA
?
2008-11-18 セキュアVMワ`クショップ
Takahiro Shinagawa
?
Itv恙 パソコン basic part 1
Kenichi Takeuchi
?
1肝ベ`シックv恙秤鶺擅瓜 俐屎井
Nashiro Daisuke
?
20120519 #qpstudy インタ`フェ`ス秘T
Hiyou Shinnonome
?
粥稼糸姻看庄糸ロボットサミット庄稼握翅
Kenichi Yoshida
?
Bluetooth宥佚の 碧Mみと試喘隈B初
Takehiko YOSHIDA
?
PFI Seminar 2010/01/21
Preferred Networks
?
柴麻字尖胎秘壇01
Tomoyuki Tarumi
?
デバドラを慕いてみよう
Masami Ichikawa
?
粥稼糸姻看庄糸ロボットサミット庄稼兆硬塁
Kenichi Yoshida
?
io tつくるよ LT m5stackの児医をつくったよ 
Masawo Yamazaki
?
IchigoJam はじめてのプログラミング サイエンスアコ?ラ2015 Fb512WS2Y創
Taisuke Fukuno
?
Fpga local 20130322
Takefumi MIYOSHI
?
A35 SQL Server と NUMA by 俑賓夘
Insight Technology, Inc.
?
2012-11-17-SakuraDC
Shinya Takamaeda-Y
?
Ns2240series users manual_07
squat12
?
コンピュ`タの撹とO 及3井 及2嫗 茶氏Y創
futada
?
エバンジェリストがZるパワ`システム蒙 ゛ 及3指IBMオフコンはいかにして伏き火れたのか拭及屈嫗゛
Takumi Kurosawa
?
Ad

More from Takeshi HASEGAWA (20)

PDF
FPGAx10_Sakura
Takeshi HASEGAWA
?
PDF
コンピュ`タエンジニアへの酷永赫粥のすすめ
Takeshi HASEGAWA
?
PDF
IkaLog20170316pynq_dist
Takeshi HASEGAWA
?
PDF
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
Takeshi HASEGAWA
?
PDF
IkaLog: Data Collector for Splatoon and Machine Learning
Takeshi HASEGAWA
?
PDF
#IkaLog によるスプラトゥ`ンの鮫饅睥とC亠僥
Takeshi HASEGAWA
?
PDF
IkaLog and Deep Learning (20161122 GDLCjp)
Takeshi HASEGAWA
?
PPTX
IkaLog_FPGAStartup1
Takeshi HASEGAWA
?
PDF
IkaLog osc2016tf
Takeshi HASEGAWA
?
PDF
IkaLog Presentation for BMD users
Takeshi HASEGAWA
?
PDF
IkaLog_overview_en
Takeshi HASEGAWA
?
PPTX
ネットワ`クカメラを聞った傲v念モニタリングの逗沙
Takeshi HASEGAWA
?
PDF
IkaLog Presentation v1.3
Takeshi HASEGAWA
?
PDF
IkaLog Presentation at qpstudy 2015.11
Takeshi HASEGAWA
?
PDF
IkaLog Presentation at Kansai Open Forum 2015
Takeshi HASEGAWA
?
PDF
仝スプラトゥ`ン々リアルタイム鮫饅睥ツ`ル 仝IkaLog々のY
Takeshi HASEGAWA
?
PDF
ssmjp October 2014
Takeshi HASEGAWA
?
PDF
Eject-io (OSC2014 Tokyo/Fall H氏LT)
Takeshi HASEGAWA
?
PDF
Eject-io @ Kernel/VM
Takeshi HASEGAWA
?
PDF
qpstudy 2014.04 ハ`ドウェアOの娠侭
Takeshi HASEGAWA
?
FPGAx10_Sakura
Takeshi HASEGAWA
?
コンピュ`タエンジニアへの酷永赫粥のすすめ
Takeshi HASEGAWA
?
IkaLog20170316pynq_dist
Takeshi HASEGAWA
?
IkaLog: Data Collector for Splatoon and Machine Learning (Jan 2017 @ Softbank)
Takeshi HASEGAWA
?
IkaLog: Data Collector for Splatoon and Machine Learning
Takeshi HASEGAWA
?
#IkaLog によるスプラトゥ`ンの鮫饅睥とC亠僥
Takeshi HASEGAWA
?
IkaLog and Deep Learning (20161122 GDLCjp)
Takeshi HASEGAWA
?
IkaLog_FPGAStartup1
Takeshi HASEGAWA
?
IkaLog osc2016tf
Takeshi HASEGAWA
?
IkaLog Presentation for BMD users
Takeshi HASEGAWA
?
IkaLog_overview_en
Takeshi HASEGAWA
?
ネットワ`クカメラを聞った傲v念モニタリングの逗沙
Takeshi HASEGAWA
?
IkaLog Presentation v1.3
Takeshi HASEGAWA
?
IkaLog Presentation at qpstudy 2015.11
Takeshi HASEGAWA
?
IkaLog Presentation at Kansai Open Forum 2015
Takeshi HASEGAWA
?
仝スプラトゥ`ン々リアルタイム鮫饅睥ツ`ル 仝IkaLog々のY
Takeshi HASEGAWA
?
ssmjp October 2014
Takeshi HASEGAWA
?
Eject-io (OSC2014 Tokyo/Fall H氏LT)
Takeshi HASEGAWA
?
Eject-io @ Kernel/VM
Takeshi HASEGAWA
?
qpstudy 2014.04 ハ`ドウェアOの娠侭
Takeshi HASEGAWA
?
Ad

Recently uploaded (9)

PDF
芦硫 暖, 臼翫 誰伏, 防和 高. 頂Πk伏rにおける瓜墾彜r委燐を朕議とした秤鷙禾丱轡好謄爐了A篇, 徨秤麝佚僥氏HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナ` 仝GDC2025 オ`ディオ鷂羯瓠SIG-Audio_GDC2025_鷂羯痊Y創_局xさ...
IGDA Japan SIG-Audio
?
PDF
芦硫 暖, 防和 高. h廠Z崑を楚辛嬬にするためのみ繁垢岑嬬僥氏及4指碧賺а仂浸, 2018.
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナ` 仝GDC2025 オ`ディオ鷂羯瓠SIG-Audio_GDC2024_鷂羯痊Y創_勸さ...
IGDA Japan SIG-Audio
?
PDF
芦硫 暖, 儲旗 圍岻, 防和 高. f{議秤鵐肇螢〒`ジにおけるコミュニケ`ションの唹についての篇, 及11指デ`タ垢僥と秤鵐泪優献瓮鵐箸哩vする...
Matsushita Laboratory
?
PDF
APIJ辛を屶えるKeycloakの児云とOの深え圭 ゛ OAuth/OIDCによるAPI隠oのベストプラクティス ゛
Hitachi, Ltd. OSS Solution Center.
?
PDF
マルチAIエ`ジェントのbI順でのg樹に鬚韻織`プンソ`ス試咾燐考 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
猟B初Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
猟B初AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
芦硫 暖, 臼翫 誰伏, 防和 高. 頂Πk伏rにおける瓜墾彜r委燐を朕議とした秤鷙禾丱轡好謄爐了A篇, 徨秤麝佚僥氏HCGシンポジウム2018...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナ` 仝GDC2025 オ`ディオ鷂羯瓠SIG-Audio_GDC2025_鷂羯痊Y創_局xさ...
IGDA Japan SIG-Audio
?
芦硫 暖, 防和 高. h廠Z崑を楚辛嬬にするためのみ繁垢岑嬬僥氏及4指碧賺а仂浸, 2018.
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナ` 仝GDC2025 オ`ディオ鷂羯瓠SIG-Audio_GDC2024_鷂羯痊Y創_勸さ...
IGDA Japan SIG-Audio
?
芦硫 暖, 儲旗 圍岻, 防和 高. f{議秤鵐肇螢〒`ジにおけるコミュニケ`ションの唹についての篇, 及11指デ`タ垢僥と秤鵐泪優献瓮鵐箸哩vする...
Matsushita Laboratory
?
APIJ辛を屶えるKeycloakの児云とOの深え圭 ゛ OAuth/OIDCによるAPI隠oのベストプラクティス ゛
Hitachi, Ltd. OSS Solution Center.
?
マルチAIエ`ジェントのbI順でのg樹に鬚韻織`プンソ`ス試咾燐考 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
猟B初Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
猟B初AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?

20120519_qpstudy 2012.05 いやらしい@hasegawのI/O秘T

  • 1. コンピュ`タア`キテクチャ I/O秘T qpstudy 2012.05 ゛エンジニアのためのハ`ドウェア莿徃謇T゛ May 19, 2012 Takeshi HASEGAWA [ja] @hasegaw / [en] @hasegaw_en
  • 2. プロフィ`ル L紅寒?値 (HASEGAWA Takeshi) twitter: @hasegaw 麼にLinuxや∀觧室gを誼吭とするj奮狼SE Xen/KVMを{法FreeBSD virtioをg廾吉? 恷除のアップデ`ト瑳劼縫ネス匿と伏ハムおきました 2
  • 6. 云セッションの朕議 ?? コンピュ`タにおけるI/O(秘竃薦)の叨護を尖盾する ?? IA-32において旋喘されるI/OのNを尖盾する ?? gHにコンピュ`タに俊AされているI/Oデバイスの箭をる ?? gHにI/Oデバイスを垢恬すると採が軟きるかをる ?? セッションK阻rには、コンピュ`タの秘竃薦とFall in Love! 6
  • 8. 秘竃薦とは採か ?? コンピュ`タの眉寄コンポ`ネント o? 麻する 嶄刹I尖處麻廾崔 ? 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莿徃謇T (2010定 葭症) ?
  • 12. IA-32で聞われる秘竃薦 ?? I/Oポ`ト ?? 護りzみ (Interrupt) ?? Direct Memory Access (DMA) ?? メモリマップドI/O 12
  • 13. I/Oポ`ト ?? コンピュ`タで旋喘される硬灸議な秘竃薦 ?? プロセッサから翌何に俊Aするためのデジタルインタ`フェイス ?? 1アドレス 8ビット〜64K、ON(1) もしくは OFF(0) を宥佚する ?? アクセスg了が児云8ビットなので掲械に詰堀 ?? 聞余 ?? キ`ボ`ドの兀和彜r_J、ディスクコントロ`ラの彜BO協、宥 岑など 13
  • 14. 護りzみ (interrupt) ?? デバイスからCPUへイベントを宥岑するための佚催 o? IRQ(Interrupt ReQuest) = 護りzみ秘薦喘の16云の佚催 ?? 護りzみハンドラ o? 護りzみがk伏すると、CPUは護りzみハンドラに崙囮を卞す o? 書rに冱えば´´ 採か軟きたときの Listener を協xできる ?? 聞余 o? タイマ`の宥岑 o? キ`ボ`ドの彜B篁宥岑 o? デ`タ僕頼阻宥岑(DMA, MMIO)など 14
  • 15. (箭) ソフトウェアからみたキ`ボ`ドI/O - 1 コンピュ`タ キ`ボ`ドコントロ`ラ ?? 8bit嫌のI/Oポ`ト2つで俊A CPU 送れ ?? キ`ボ`ドの彜Bが笋錣襪噺遒袰z みがk伏する ?? 護りzみがk伏すると、BIOSもし I/Oポ`ト I/Oポ`ト くはOS坪の護りzみハンドラが柵 0x60 0x64 び竃される 護りzむハンドラでのI尖 護りzみ ?? キ`ボ`ドの彜B_J ステ`タスレジスタ(0x64) コマンド 秘薦レジスタ レジスタ ステ`タス ?? 兀されているキ`秤鵑燐iみ函り 竃薦レジスタ レジスタ 秘薦レジスタ(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_?nish 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_?nish: 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. どう聞うか ?? コンピュ`タに秘竃薦廾崔がついている並はわかった。 ?? しかし、それをどう聞うのか殖殖 (。?ω?。)  書業、何試B初でバトン何がパフォ`マンスをします。 毅輝縮I  慧僕溜T氏で孚苧のお返擦い鬚靴燭い繁爾い泙  パソコンでスポットライトをチカチカ泣けようか丶 (?ω?? ) 険溜TL (繁?ω)  いいね丶 溜TL 18
  • 19. どう聞うか(2) ´ 方晩瘁 ?? コンピュ`タに秘竃薦廾崔がついている並はわかった。 ?? しかし、それをどう聞うのか殖殖 (繁?ω)  険溜TL、スポットライト崙囮喘の児Pができたよ? 溜TL  え殖?あれマジなの (?д?) 険溜TL 19
  • 20. スポットライト崙囮┗/或児徒の更撹イメ`ジ) }譴拝つけたパソコン (PC-9801VM2) セントロニクス碧 (IEEE1284) リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` リレ` 白 白 白 白 白 白 白 白 悶圄^坪O 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メロ吉ごとの泣菊パタ`ンデ`タを隔つ ライト パタ`ン rg スポットライト崙囮ドライバ ┘▲札鵐屮蕕DOS喘TSRとして_k ユ`ザ 荷恬 ライト タイマ 崙囮佚催 護z マルチメディア セントロニクス碧 キ`ボ`ド タイマ インタ`フェイス ハ`ドウェア 22
  • 23. その麿の I/O メモリマップドI/O Direct Memory Access (DMA) IRQの慌嗤とMSI 23
  • 24. メモリマップドI/O (MMIO) ?? プロセッサの麗尖メモリ腎gに、デバイス貧のメモリ腎gをマッピ ングする ?? ソフトウェアからデバイス貧のメモリ腎gに岷俊アクセスできる ?? 聞余 o? ビデオカ`ド、サウンドカ`ド、ディスクコントロ`ラ、イ`サネット コントロ`ラなどでの寄楚僕 24
  • 25. ダイレクトメモリアクセス (DMA) ?? プロセッサの峺幣に惄辰DMAコントロ`ラがデ`タ僕する ?? デ`タ僕の_兵rK阻rのみプロセッサが孤hするため、 プロセッサrgをsできる ?? 聞余 o? ビデオカ`ド、サウンドカ`ド、ディスクコントロ`ラ、イ`サネット コントロ`ラなどでの寄楚僕 25
  • 26. IRQとMSI ?? IRQの方には崙泙ある ?? キ`ボ`ド、マウス、タイマ、???? ?? コンピュ`タに俊AされるデバイスはえAけている ?? 護りzみ佚催が怎りない ?? IRQの慌嗤 26
  • 27. IRQの慌嗤 ?? 護りzみ佚催を}方のデバイスで慌嗤する o? 15云しかないIRQ o? 箭坤`ボ`ドとマウスで揖じIRQを聞う ?? 護りzみ佚催を慌嗤した栽の}泣 o? 護りzみのk伏圷がわからない o? 護りzみがk伏した.`ボ`ドが兀された織泪Ε垢咾い殖 ?? 盾Q貨 o? 護りzみk伏をk伏されたrに1になるフラグをハ`ドウェアに笋垢 o? 護りzみがk伏したら、光ドライバのステ`タスをチェックし、駅勣な ハンドラのみがg佩される 27
  • 29. バス(Bus)とは採か ?? コンピュ`タ坪何で光指揃がデ`タをやり函りするための史預 バスのN ?? 坪何バス ´. CPU坪何の指揃gを俊A ?? 巓x指揃 ´. CPUgのインタ`コネクト ?? バス ´. デバイスと俊Aするためのインタ`コネクト 29
  • 30. PCIバス ?? Peripheral Component Interconnect ?? コンピュ`タに光Nハ`ドウェアデバイスを俊Aするための 癖 o? 32bit パラレル宥佚, 33MB/sec, 。囃嫌133MB/s ?? プラグアンドプレイ(Plug and     Play Pray) o? 俊AされたデバイスのNや駅勣リソ`ス秤鵑鯡畊し、OSが徭啜弔 リソ`スアサインできるようにする o? I/Oポ`ト、IRQ、メモリマッピングなど o? 試iができるわけではない 30
  • 31. PCI-Xバス ?? PCIの巓襖方を33MHzから133MHz、。囃嫌1.06GB/sに哈き貧げ ?? PCI-X 2.0では533MHz, 4.24GB/s ?? PCIバスの貧了札Q、PCIバスにPCI-Xデバイスの俊Aも辛嬬 ?? 書でも硬いサ`バでかけるかもしれない 31
  • 32. PCI Express バス ?? }方のレ`ンを崩ねて聞う ?? 1レ`ンあたり 250MB/s ?? 4レ`ン 1,000Mbps = 1GB/s, 16レ`ンで 4GB/s ?? 試iに (ハ`ドウェア、ソフトウェアの鬉皹慴) ?? ソフトウェアレベルで PCI の貧了札Q ?? 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? メモリきzみにより護りzみを宥岑する (0x0FEExxxx) o? PCIデバイスで旋喘される o? IRQを聞わない o? 32 メッセ`ジまで慌贋辛嬬 ?? Enhanced MSI (MSI-X) o? PCI Express バス鬚韻 MSI o? PCI Express 2.0 ではg廾が駅に o? 2048 メッセ`ジまで慌贋辛嬬 34
  • 35. CPUgのインタ`コネクト ´ QPIとHyperTransport NUMA(掲各メモリアクセス) vs UMA(各侏マルチプロセッサ Non-Uniform Memory Access NUMA) Uniform Memory Access (UMA) 除いデバイスへ堀くアクセスできるが、hく どのCPUからても揖じrgでアクセスで のデバイスにはアクセスにrgがかかる きるが、畠CPUでバスを慌嗤する 35
  • 36. CPUgのインタ`コネクト ´ QPIとHyperTransport Hyper Transport (AMD) Quick Path Interconnect (Intel) 36
  • 37. まとめ 37
  • 38. まとめ ?? I/Oとは o? コンピュ`タにするデ`タ秘薦竃薦のC嬬 ?? 旗燕議なI/O圭隈 o? I/Oポ`ト、護りzみ o? メモリマップドI/O、DMA ?? バス o? バス ?? PCI, PCI-X, PCI Express o? 恷除の坪何バス ?? F旗のコンピュ`タはほとんどNUMA <-> UMA ?? Quick Path Interconnect, Hyper Transport 38
  • 41. I/Oを茶するには マイコンをいじると登りやすい´? 階兜伉宀 ?? Arduino ´ デザイナ`によるプロトタイピングを覿┐靴榛gマイコン 兜伉宀 ?? PICマイコン (ex: 18F2550) 方為劼肺Iえる、とりあえずk尅徨つけれ ば咾マイコンチップ ?? AVRマイコン ´ PICよりこちらをお瓩瓩垢襪劼閥猜。 ArduinoもAVRベ`ス ?? Intel 8051 ´ 來嬬が護と互めだが晩云Zでの秤鵑呂△泙蠅覆気修 41
  • 44. PIC ?? a 44