I/Oポート
CPUは外部デバイスとのデータ送受信にI/Oポートを使用します。
Iが「Input」、Oが「Output」で「入出力ポート」とも呼ばれますが、
CPUは外部デバイスに直接アクセスしデータ交換することはありません。
中間デバイスであるチップセットを通してデータ交換を行います。
マザーボードのチップセット上にI/Oポートは固有のI/Oポートアドレスを持ち、
識別され、CPUと外部デバイスとのデータ送受信にはI/Oポートアドレスを使用します。
I/Oポートアドレスは16ビット分のアドレスが利用され、
通常16進数(0x0000~0xffff)で表記されます。
I/Oポートアドレスは自動的に割り当てられます。
コンピュータに周辺機器を接続するとOSが自動的に機器の組込と設定を行います。
I/Oポートアドレスが何らかの原因により重複してしまうと、
I/Oポートが正常に動作しません。
I/Oポートアドレスはコマンド’cat /proc/ioports’で確認することが可能です。
[コマンド]
# cat /proc/ioports
[実行結果]
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
~以下略~
DMA
DMA(Direct Memory Access)は、メモリや各デバイスがCPUを介さずに
データ転送を行う機能のことです。
CPUを介さないデータ転送のため、「速度が早い」「CPUのリソースを使わない」
といったメリットがあります。
DMAの割り当て情報はコマンド’cat /proc/dma’で確認することが可能です。
[コマンド]
# cat /proc/dma
[実行例]
4: cascade
cascadeと表示されますが、これはDMAコントローラ同士が接続されていることを意味します。
SCSI(Small Computer System Interface)
SCSI(Small Computer System Interface)とはパソコンとハードディスクドライブ、
CD-ROM等の接続インターフェイスでで終端にはターミネータを付ける必要があります。
SCSIには、データ転送速度や最大接続デバイス数によって複数の規格が存在し、
大きく分けるとデータ幅が8bitと16bitで分けられます。
バス幅8bitのSCSIでは8台の、16bitのSCSIでは16台のデバイスを扱うことが出来ますが、
そのうちの1台はSCSIコントローラになります。したがって、接続できるデバイスの数は
それぞれ7台と15台です。
接続されている各デバイスには、それぞれを個別に認識するために、
バス上でユニークなアドレス(SCSI ID)が割り当てられています。
8ビット幅のSCSIの場合は0~7、 16ビット幅のSCSIの場合は0~15の
SCSIIDを持つことができます。
SCSIデバイス情報を調べるには、コマンド’cat /proc/scsi/scsi’を参照します。
[コマンド]
# cat /proc/scsi/scsi
[実行例]
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: QEMU Model: QEMU DVD-ROM Rev: 0.12
Type: CD-ROM ANSI SCSI revision: 05
また、カーネル2.6以降のシステムではコマンド’lsscsi’で接続デバイスを
確認することができます。
[コマンド]
# lsscsi
[実行例]
[1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 0.12 /dev/sr0
SATA(Serrial ATA)
SerialATAはハードディスクドライブや、DVDドライブなどのような
リムーバルメディアドライブの接続に使用されていたIDEなどの
パラレルATAの後継規格です。
パラレルATAと比較したSerial ATAの特徴としては、デバイスごとの
ジャンパピン設定が不要となっていることや、ケーブルが細くなって
いることなどがあげられます。
パラレルATAでのデータ転送速度はUltraATA/133の133MB/sでしたが、
最初の規格であったSerialATA1では150MB/s(1.5Gb/s)、
次のSerialATA2では300Mb/s(3Gb/s)を実現し、2009年に発表された
SerialATA3では600Mb/s(6Gb/s)を実現しています。