�ǥХ����ɥ饤�ФȤϡ�
����ƥ�x86��CPU��I/O���ɥ쥹���֤���ꥢ�ɥ쥹���֤��̤˻��äƤ��ޤ�����
I/O ���ɥ쥹���֤���� CPU �Ͼ����ɤǤ�����ȥ�����68K��CPU��
I/O���ɥ쥹���֤Ȥ������̤ʥ��ɥ쥹���֤���äƤ��ޤ���
I/O�Υϡ��ɥ������������Ʊ���褦�ˡ������������ơ�ư���褦��
�߷פ���Ƥ���Τǡ����̵꤬������Ǥ������ꥢ�ɥ쥹���֤�I/O ���ɥ�
�����֤��̤˻���ɬ�פϤ���ޤ���������x86��Ĺ����ˤ�����Ť�����Ȥ�
�ߴ������ݤäƤ������ᡢ������֥�̿���IN/OUT̿���Ѿ�����
I/O���ɥ쥹���֤�ɬ�פȤ��ޤ�����
���۵�������Ѥ���OS���¥���Τޤ����Ѥ���OS���ˤ�ä�
�ǥХ����ؤΥ�������ˡ���Ѥ�äƤ��ޤ���
- OS�Υ����ͥ��桼���ץ��������¥������
(�ʤ�����ʪ���������)���ư��뤫��
����ȤⲾ�ۥ�����־��ư��뤫���Ȥ�������
- I/O�Υϡ��ɥ����������Υ����ͥ��桼���ץ���������
�ɤΤ褦�˸����뤫���Ȥ�������
�����λ�������ǥХ�����I/O�ΰ㤤�Ƹ��ޤ��礦��
�ޣ��ϥ��ɥ쥹���֤ˤĤ��ơ����ۥ��ɥ쥹��ʪ�����ɥ쥹���Х����ɥ쥹��
�ط����Ƥ��ޤ���
��1:���ۥ��ɥ쥹��ʪ�����ɥ쥹���Х����ɥ쥹�δط�
ʪ�����ɥ쥹�Τޤޥ����ͥ��ץ������Υ��ɥ쥹��
���Ѥ���OS��¥��ɥ쥹OS�ȸƤӤޤ��礦���ޤ�ľ��ʪ�����ɥ쥹����Ѥ��ʤ���
��������˲��ۥ��ɥ쥹��Ȥ�OS���ۥ��ɥ쥹OS�ȸƤӤޤ��礦��
���̤ˤ�ʪ�����ɥ쥹���֤ϼ¥����I/O�ǥХ��������ĥ쥸��������꤫��
������֤��鹽������Ƥ��ޤ�����Ԥζ��֤ϡ�PCI�Ȥ�VMEbus�Ȥ����ޤ��ޤ�
�Х����֤�����ޤ����Ǥ�����ʪ�����ɥ쥹����ޤ���б�����
�ǥХ����Υ쥸��������꤬��ޤ�ޤ���I/O�Х��������ʤˤ�ŤʤäƤ���
���Ϥ����ʣ�����б��ˤʤ�ޤ����������Ǥϰ��Ū�˷�ޤ��ΤȤ���
�ä�ʤ�ޤ���
�¥��ɥ쥹OS�ξ��ϥץ������Υ��ɥ쥹�����Τޤ�ʪ�����ɥ쥹�ʤΤ�
�б�����Х����ɥ쥹����ޤ�ޤ��������⡢����ʪ�����ɥ쥹�ȥХ����ɥ쥹��
Ʊ���ͤ��б�������ȥХ����ɥ쥹�ؤΥ��������Ϥ��ΥХ����֤���ˤ���
�ǥХ����Υ��ɥ쥹�Τޤ�Ϳ��������ǡ����ΥǥХ����ؤΥ���������
��ǽ�ˤʤ�ޤ������Τ褦�˥ϡ��ɥ������������Ƥ���OS�ȷ������ȹ礻��
�ɤ��������ޤ����㤨�С��ǥХ����Υ���ȥ����륹�ơ������쥸����(CSR)�ؤ�
���������Ϥ���CSR�ΥХ����ɥ쥹���狼��С���ñ�˥����������Ǥ��ޤ���
�¥��ɥ쥹OS��I/O��Ԥʤ���Ǥ����������Ǵ�ñ��OS�ȸ����ޤ�����������
�¥��ɥ쥹OS�����Ѵ�����¦�̤���äƤ��ޤ�������ϥ桼���Τ���äȤ���
�ְ㤤�������ƥ����ߤ��˲��˷Ҥ��äƤ��ޤ��ȸ������Ǥ����������
��ˡ�Σ��Ĥ����ۥ��ɥ쥹OS�κ��ѤǤ����桼���ץ������Υߥ���ľ��
�����ƥ����ߡ��˲��˷Ҥ���ʤ��褦�ˡ�OS��ǽ��¸�����ץ�������
�ǡ������ͥ���֤Ȥ��ƥ桼���ץ������β��۶��֤����ڤ�Υ���ޤ���
�Ǥ�����ǥХ��������뵡ǽ���ͥ���֤��֤��ơ��桼���ˤ�
ľ�ܤ���������ޤ������ǡ��桼���ץ������ϡ��ǥХ����ɥ饤�Ф�
��Ȥ���ꤷ���ǥХ����ɥ饤�Ф��ºݤ˥ǥХ����˥���������Ԥʤ��ޤ���
����ǥХ����˴ؤ������Ƥκ�ȤϤ������ѤΥǥХ����ɥ饤�Ф��̤���
�Ԥʤ����Ȥˤʤ�ޤ���
�ޣ��褦��
��2:�����ȥХ�(1)
CPU�ϥᥤ������I/O���郎��³�����Х��Υ����ץ��ȥ����ƥ�Х���
�𤷤ƷҤ��äƤ��ޤ���I/O�Х��ȥ����ƥ�Х����ڤ�Υ����ͳ�ϥ��ԡ��ɤ�
�㤤������Ƥ��ޤ���I/O��Ʊ�������ƥ�Х��ˤ���ȡ�
CPU����ǽ�����夷��CPU�ȥ���֤Υ��ԡ��ɤ����夷�Ƥ�
�٤�I/O�����äƥܥȥ�ͥå��ˤʤ�ޤ������ԡ��ɤˤ�볬�ع�¤��Ȥ뤳�Ȥ�
�����Υ����ƥ���ǽ����夵���ޤ���������������ϥǥХ����Υ���������ˡ��
�����ʣ���ˤ����ޤ����ᥤ�����Τ褦��ľ�ܥ桼���ץ�����फ�鸫����ΤǤ�
�ʤ����Х������ץ��Ȥ��������̤��Ƹ����뤳�Ȥˤʤ�ޤ���
���äơ�I/O�Х���ˤ���
�ǥ�������VME/CAMAC�ʤɥǥХ�������³����ˡ�ǰۤʤä��������ޤ���
�礭��ʬ����ȡ�
- VME�Х��Τ褦�˥ǡ������礭�ʥХ����־�Υ���Τ褦�˸����롣
- SCSI�Х��Τ褦�˥���ȥ����륹�ơ������쥸������
�ǡ����쥸�����ʤɤΥ쥸������𤷤ƥǡ������ɤ߽Ǥ��롣ľ��
�桼���ץ������Υ��ɥ쥹���鸫���ʤ���
�����ΥǥХ����ؤΥ����ե������μ���ˡ�����Ѥ���Ū�ˤ��
��ޤä���ޤ���
�ޣ��Ͽޣ��Ȱ�äƺǶ�η����ΥХ�����ˡ���Ƥ��ޤ���
��3:�����ȥХ�(2)
CPU�ȥ���ϥ֥�å��ˤ�äƷ�Ф졢�����ƥ�Х��Τ褦��
�Х�����Ѥ��ޤ�����Ϥޤ��ޤ����夹��CPU�ȥ���֤Υ��ԡ��ɤ�
����˸��夵������ˡ�Ǥ����ܡ��ɾ�˥Х���������ȥ饤���Ĺ����
���ղ�ϩ����ΥΥ������ǥ��ԡ��ɤθ��夬˾��ޤ������ǡ��Х���
���ꥳ����å�˻��ä���ơ��֥�å��Ȥ��ƣ��ĤΥ��åפ˺ܤ���ΤǤ���
�Х�����³������ˡ�Ϥ����������ꡢ�������С������å��ʤɤ�
��®�ʥХ�����ˡ�Σ��ĤǤ������Υ������С������å��ĤΥ��å��
�ܤ��Ƥ��ޤ��Ф����ΤǤ����ޣ���CompactPCI����ˤ��ޤ�����
�ޣ�������ʣ���˸����ޤ��������RISC/UNIX�����ƥफ��VME�Х���
��4:�����ȥХ�(3)
�𤷤�CAMAC����³������Ǥ��������ƥ�Х����VME�Х������ץ���
����ޤ�����������VME���졼�Ȥ˸����ä����̤�I/O�Х��������졢
VME�Х��Υޥ�������ȥ�����Ȥʤ륫���ɤ˷Ҥ���ޤ���
�����ˤ�VME�Х������ꡢ���Ĥ�VME�⥸�塼��Ȥ���CAMAC��
����ȥ����餬����ޤ������Υ⥸�塼�뤫��CAMAC�Υ��졼�Ȥ˸����ä�
��������̤ʥ����֥뤬�Ф��졢CAMAC���졼�ȥ���ȥ������
��³����ޤ�������ϣ��Ĥ���Ǥ�������³����ˡ�Ϥ��ޤ��ޤǤ���
�桼���ץ������Ϥ����������Υϡ��ɥ����������˽��ä�
�Ƥ����ΤǤϡ����������ʤ��ϡ��ɥ�������������٤�
��ľ����ʤ��Ƥ�����ޤ���ʬ��������
�ǥХ��������ˡ�˽��椷�ƥץ�����ߥ����������եȥ�������
��֤����Х��ι���ˡ�ˤϰ�¸���������ʤ����ʤɡ���ä�
����Ū�˥��եȥ���������������ˡ�Ϥʤ�����
�ϡ��ɥ�������OS�ʤɤ˰�¸���ʤ����եȥ���������������ˡ�Ȥ���
�����˻פ��⤫�٤뤳�Ȥϴ���Ū�ʥǥХ��������ʤ��ؿ���
��������ϡ��ɥ�������OS�ʤɤ���桼���ץ��������ڤ�Υ�����ȤǤ��롣
�ޤ����ǥХ�������OS�Υ����ͥ�˥ǥХ����ɥ饤�ФȤ����Ȥ߹��ߡ�
�桼���ץ�������OS�����륷���ƥॳ��������Ѥ��뤳�Ȥ�
����������ݤ��뤳�ȤǤ��롣
�ޣ��ϥǥХ���������ݲ�������ˡ���Ĥ������Ƥ��ޤ���
C���������ˤ��Ƥ��ޤ���
��5:�ǥХ������ˡ
�桼���ؿ���I/O��OS�ˤ��㤤���ä�����ˡ(��)�ˤĤ��ƤϤ����
�������ޤ��������KEKɸ���CAMAC�ؿ��Σ��ĤǤ���CAM_Open��
CAMAC�ν������Ԥʤ��桼���Ѥδؿ��Ǥ�����ö�����Ƥ٤С�
CAMAC�ؿ��Ǥ��ޤ��ޤ�CAMAC����ǽ�ˤʤ�ޤ���CAMAC�ؿ���
N, A, F��CAMAC���������CAMAC�⥸�塼������뤳�Ȥǥǡ�����
�ɤ߽Ǥ��ޤ����ɤΤ褦��OS���ɤΤ褦�ʥϡ��ɥ�������
���ä���Ƥ⤳���δؿ��ˤ�äƤ����ΰ㤤���äǤ��ޤ���
��������Ѥ������Ǥ����Ʊ���ˡ��㤤��ۼ����뤿���;�פ�
�ץ�����ॳ���ɤ��ɲä��뤳�Ȥǥ����С��إåɤ����䤷�¹�
��ǽ�Ȥ������Ǥ������ˤʤ�ޤ���
���ϥ桼���ؿ���I/O��OS�ˤ��㤤���ä�����ˡ(��)�Ƥ���������
���δؿ���KEKɸ���VME�ؿ��Σ��ĤǤ������δؿ�����ٸƤ֤�
VME�Х��������⥸�塼���ľ�ܡ�I/O����ǽ�ˤʤ�ޤ���
�����ޤ������Υ����ͥ��𤵤ʤ���ˡ�Ƥ���������
vme_mapopen�ؿ���Ƥ֤Ȥ��륢�ɥ쥹���֤ä���ޤ���
VME���ɥ쥹���б����������Υ��ɥ쥹�Ǥ������ۥ��ɥ쥹OS�Ǥ�
�桼���ץ������β��ۥ��ɥ쥹���֤ä���ޤ����ޤ������Ǥ�
VME���ɥ쥹���桼���ץ������Υ��ɥ쥹���֤���ľ�ܸ�����
�¥��ɥ쥹OS�ǤϤ��Υ��ɥ쥹�ΤޤȤ����Ȥ��Ǥ��ޤ���
�ɤ߹��ߤ���ߤϿޤΤ褦�˴�ñ�ˤǤ��ޤ������ۥ��ɥ쥹OS�Ǥ�
���Τ褦�ʥǥХ�����������ˡ�ϴ�ñ���ưפˤǤ���������
OS�ؤ����������������ɻߤǤ��Ƥ���Τǡ��褯�Ѥ����ޤ���
�������������ߤ�DMA(�����쥯�ȥ��ꥢ������)�Τ褦�ʾ���
�����ͥ�ؿ��˰�¸������ʬ�������Ƥ��ޤ��Τǡ��嵭�Τ褦�ˤ�
�����ޤ������ǥ����ͥ��𤷤ƥǥХ����˥�������������ˡ��
��Ƥ���ޤ����ޤκǸ��open�ؿ�������ޤ�������ϥ����ƥॳ�����
���ĤǤ����ǥХ����ե�������ץ�Ȥ������ǡ�
�ǥХ�������������ɬ�פʥե�����ǥ�����ץ����������
�����Ȥäơ��ǥХ������ɤ߽��ޤ���read/write�����ƥॳ�����
���Τ���Τ�ΤǤ����ǡ������Ǽ����Хåե����ɤ߽������ǡ�����
��������Х���ñ�̤ǻ��ꤹ�뤳�ȤǴ�ñ�ˤǤ��ޤ���
UNIX�����ͥ�ϥ桼���ץ������������䤽�μ¹ԥ������塼���
�����ƥॳ����ʥ����ƥ�ؿ��ˤΥ����ӥ����ϡ��ɥ����������ߤʤɤν������
��˰����ơ��桼�����餳�������ʽ�����������Ƥ���ޤ����桼���ץ�������
����������ѤΥ����ƥॳ�����VME��CAMAC�������Ϥ�Ԥʤ��Τ�����Ū��������
��ˡ�Ǥ���â���������Ϥ���ˡ�Ϥ���ʳ��ˤ⤢�ꡢ�ä�ľ�����������֤ˤ���
�����쥸������桼����٥���������Ȥ���ˤ�
����Ū����������ˡ�ǤϤʤ��ޥå���������������ˡ���Ѥ��ޤ���
VME��CAMAC���Ф��Ʋ��餫������Ԥʤ��ˤϡ��ޤ�������ݲ����줿�ǥХ�����
open�����ƥ�ؿ����Ѥ��ƥ����ץ롣��ݲ����줿�ǥХ����ϡ�
�㤨�С�/dev/cc�Ȥ����褦�ʥǥХ����ե�����Ȥ���ɽ������ޤ���
����Ϥ�������UNIX���̾�Υե������Ʊ���褦�˰����Ƥ��ޤ���
���Υե�����ˤ�Major�ֹ椬ɬ���դ��ޤ��������ֹ椬�����ͥ�����
�ǥХ����ɥ饤�Ф��б���������פ��ֹ�ˤʤ�ޤ���
�ºݤ����������ˤϥǡ������ɤ߹��ि���read�ؿ���ǡ�����
���ि���write�ؿ������̤ʥǡ����������Ϥ�Ȥ�ʤ��
�����˻��Ѥ���ioctl�ؿ����Ѥ��ޤ�������������close�ؿ���ƤӤޤ���
�����δؿ��ϥ����ͥ�ΰ����˥ǥХ����ɥ饤�ФΥ����ɤΰ����Ȥ���
��������Ƥ��ޤ��������δؿ����ƤӽФ����Ƚ����ϥ����ͥ�����ꤽ�����
�ǥХ����ɥ饤�Ф��ƤӽФ���ޤ���
�ǥХ����ɥ饤�ФϤ����δؿ����б����륨��ȥ��
���äƤ��ޤ����㤨��CAMAC�ǥХ����ɥ饤�Фξ�硢open�����ƥ�ؿ����ƤФ��
�ȡ����Υ���ȥ�Ǥ���ccopen���ƤФ�ޤ���
�桼���ץ�����ब�ɥ饤�Ф��Ϥ�����
�ѥ�����ǡ�����CAMAC�⥸�塼�뤫���ɤߤ������ǡ����䥹�ơ����������
�桼���ץ��������֤���ˡ�Ϥ����Ĥ��Ѱդ���Ƥ��ޤ���
�Ǥ��ñ����ˡ��ioctl�ؿ���
�Ȥ���ˡ�Ǥ���ioctl�ؿ��Υѥ�����ؤ������ݥ������Τޤޥɥ饤�Х����
�ccioctl���Ϥ����Τǡ����Υݥ��˸����äƥѥ�����ǡ����������Ϥ��
�ʤ��Ф褤�ΤǤ���
read�ؿ���write�ؿ������̤Υǡ����������Ϥ���Τ˸����Ƥ��ޤ����ޤ�DMA��
���Ԥʤ��Τ�ɬ�פʤ����Ĥ��Υǡ�����¤�Υݥ����Ѱդ��Ƥ����Τǡ�
DMA����Ԥʤ�����ˤ������ǡ�ɬ�פ���ˡ�Ǥ���
�ǥХ����ɥ饤�Ф����������ˤ������Ѥ��뤳�Ȥ��Ǥ��ʤ���
������˥桼���ץ�������ˤ���ǡ������ͥ뤫�饳�ԡ�����ؿ�������Τ�
�����ͥ��ΰ�ȥ桼���ץ������Υǡ����ΰ�֤Υǡ�����ư�˻Ȥ��ޤ���
DMA����ȼ���ǡ�����ư����ˡ�Ϥ����Ȥ������ۤʤä���ˡ�ǹԤʤ�ޤ���
�ܤ������̤ʾϤǰ����ޤ���
�ޥå���������������ˡ�����Ҥ�������ˡ�Ȱۤʤä�read�ؿ���write�ؿ���ioctl�ؿ�
���Ѥ��ޤ������äơ�mmap�ؿ���桼���ץ�����फ��ƤӽФ��ޤ���
���δؿ��ϥǥХ������ץƤ��ΥǥХ������Ф���mmap�ؿ���ȯ�Ԥ���ȡ�
���ΥǥХ�������
���ɬ�פʥ��ɥ쥹���֤äƤ��ޤ����桼���ץ�������٥�Ǥ��Υ��ɥ쥹��C�����
�ݥ��Ȥ����Ѥ���ľ�ܥǥХ����Υ���ȥ����륹�ơ������쥸�����ʤ�
���������뤳�Ȥ���ǽ�Ȥʤ�ޤ�����������������ˡ�Ǥ�DMA����Ԥʤ����ȤϤ�
���ޤ���
C������Ѥ����ޥå����������������ˡ�ˤĤ��ƴ�ñ�˿���ޤ���
��������PCI, VMEbus�ʤɤΥХ�����硢�ǡ������ɤߤ������ߤ�
�����ƥǡ���������������褯����ʤ���礬����ޤ��������
CPU�ΥХ��ȥ������ȥХ��ΥХ��ȥ������ΰ㤤�ˤ���Τǡ�
���줬����ǥ���������Ǥ�������ƥ�x86CPU�ϥ�ȥ륨��ǥ�����Ϥ�
��ȥ�����68kCPU�ϥӥå�����ǥ�����ϤǤ���
�㤨�С�16bit �ʾ�������ͤ� 8bit ñ�̤ǤɤΤ褦��
����˳�Ǽ����뤫�Ȥ������Ȥ�ͤ��ޤ���x86 �Ϥ� CPU �Ǥϡ��Dz��̤��顢
��Ǽ���졢68kCPU�Ǥϡ��Ǿ�̤����Ǽ����ޤ���
�ǡ�����0x123456AB��x86�ϤǤϡ�"AB 56 34 12" �ν�ˡ� 68k��
�Ǥ�"12 34 56 AB" �ν�˳�Ǽ����ޤ���
���줾��ˡ����������äơ�x86 �ϤǤϡ��ӥåȿ��γ�ĥ��
�����Ƥ��ơ�68k �Ǥϡ����������٤�Ǥ��ޤ���
�ӥåȿ��γ�ĥ�Ȥϡ����� 16bit �Υǡ������Ǽ����Ȥ�������ۤ��ơ�64bit ��
�ΰ���Ѱդ���xx yy 00 00 ... �Τ褦�ˡ�̤�����ΰ�� 0 �ˤ��Ƥ����ȡ�
32bit �Ǥ⡢64bit �Ǥ⡢Ʊ����Ƭ���ɥ쥹�ǥ��������Ǥ��ޤ���
�ޤ���Ʊ�������Ȥ��ơ��Ǿ�̥ӥåȤΰ��֤����꤬����ޤ���x86 �ϤǤϡ�
32bit �ξ�硢 bit31 ���Ǿ�̥ӥåȤǤ��������� CPU �Ǥ� bit0 ��
�Ǿ�̥ӥåȤˤʤäƤ��ޤ���