I/O Device and Bus

aisle333·2024년 6월 1일

컴퓨터 공학

목록 보기
16/19

I/O Device

Keyboard

컴퓨터에 연결되어 텍스트 입력 등을 통해 컴퓨터에게 명령을 내리거나, 데이터를 입력하는 peripherals (주변기기).

  • Teleprinter (전신타자기, teletypewriter) 스타일의 키보드 가 input device로 1960년대부터 등장하여 1970년대에 컴퓨터(3세대)에 접속한 거의 모든 terminal에서 입력을 담당했고 이를 통해 기존의 batch job형태가 아닌 컴퓨터와의 interaction 이 가능해지기 시작함.
    이는 1970년대 초반 time-sharing computer (시분할 시스템)의 등장 과도 연관됨 (모니터는 대중화가 키보드에 비해선 좀 더 늦음).

  • 1960년 후반에 RV 자동차(Recreational Vehicle) 크기의 컴퓨터가 등장하면서 회사나 큰 부서에서 컴퓨터를 사용하기 시작함. 이는 컴퓨터에 대한 사용빈도의 증가로 이어졌으며 점점 interactive한 컴퓨터의 사용의 필요성 커졌고, 이를 가능하게하는 input/output device의 개발로 이어지게 됨.

  • 1963년도(2세대말)의 Teletype ASR-33 의 경우, 출력은 모니터가 아닌 종이에 인쇄되는 프린터 가 담당함.

Monitor

  • radar나 TV 등에서 이미 screen은 사용 (1920 년 후반에 텔레비전이 처음 등장했고, 1958년에는 미국 가정에서 텔레비전 시청이 이루어짐)되었지만, 컴퓨터에 적용되기에는 좀더 시간이 걸렸다.

  • tty에서 hard-copy tty에서 screen (or video display unit)이 적용되기 시작한 것은 1960년 후반으로 당시 time-sharing computer의 등장과 밀접한 관련 있음.

  • 초기의 모니터(or screen)을 이용한 tty들은 초기 LSI chip에 의존하는 방식으로 cpu없이 매우 저렴한 가격으로 만들어졌고 이는 보다 비싸고 느리며 시끄러운 hard-copy terminal들을 대체하기 시작하며, 1976년 PC가 등장(4세대) 하면서 키보드와 함께 대표적인 input/output device로 자리잡게됨.

  • 1980년대 초반 IBM이 컴퓨터 장비를 위한 CRT 모니터를 내놓고, 1984년에는 16칼라 모니터를 개발함.

Mouse

  • mouse 는 1980년대 널리 퍼지게 된 입력장치 (당시에는 "볼마우스" 로 오늘날 "광마우스" 와 차이점이 있음).

  • 1980년대 이후 사실상 입력장치는 키보드와 마우스 콤비 로 이루어짐.

  • Quadrature encoder 2개를 이용한 것으로 Stanford Research - Institute의 Douglas C. Engelbart (1925~2013) 가 1968년 발명.

  • 하지만, touch screen의 등장으로 가장 사용빈도가 줄어들고 있음.

Bus

컴퓨터 내에서 CPU(중앙 처리 장치)가
Primary memory (주기억장치) 및 I/O device (입출력 장치)들과
정보를 전송하는데 사용하는 전기적 공통 선로
컴퓨터 내에서 데이터(address포함) 전송 은 bus를 통해 이루어짐.

구조에 따른 분류 (현대 컴퓨터는 둘이 합쳐진 구조)

System Bus : CPU와 Memory 연결 (Data line, Address line, Control line)
I/O Bus : Memory와 다른 I/O device(or Peripherals) 연결

신호의 기능 에 따른 분류

Data Bus : CPU가 메모리나 I/O 기기에 데이터 송출 또는 읽어들일때 데이터를 전송.
Address Bus : CPU가 메모리나 I/O 기기의 주소 지정.
Control Bus : CPU가 데이터 전송 시 제어 관련 신호나 자신의 상태 정보를 알리는데 이용

Internal Bus(내부버스)

CPU 내에서 register들 연결하는 bus만을 가르키는 경우도 있으나.
최근엔 memory나 video card 등의 기본적으로 내장된 component간의 통신을 지원하는 bus를 가르키는 경우가 보다 많음.

External Bus

외부버스, CPU와 Peripherals간의 데이터 전송을 하는 bus를 가르킴.
Expansions (확장버스, 다른 기능을 지원하는 장치를 연결할 때 많이 사용됨.)
slot 형태 (or port)라 “확장슬롯“이라고도 불림.

  • External Bus의 종류.

    • ISA (Industry Standard Architecture)
      초기 확장 버스 방식. 매우 높은 호환성을 가지나 매우 느린 속도.
      현재 거의 사용되지 않음.
      1981 (PC/XT Bus, 8bit ISA), 1984 (PC/AT Bus, 16bit ISA)

    • EISA (Extended ISA)¶
      ISA보다 향상된 기능. 하지만 역시 현재 거의 사용되지 않음.

    • VESA (Video Electronics Standard Association)
      486컴퓨터에서 사용됨. 당시에는 데이터 전송 속도가 개선된 버스였으나 현재는 거의 사용되지 않음. PCI로 대체됨.

    • PCI (Peripheral Component Interconnect)
      현재 널리 쓰이는 PCI-E의 이전 (old) 버스. 하지만 PCI-E와 호환성이 없음.
      plug-and-play 기능을 지원하고 bridge회로를 통해 높은 호환성을 보임.

    • AGP (Advanced Graphics Port)
      GPU카드 전용버스 (2000년대에 일반적으로 그래픽카드가 부착되던 port. 현재는 PCI-E가 그 자리를 물려받음).
      그래픽카드만 장착가능 (속도도 PCI-E보다 느림).
      Intel이 제안했고 그래픽카드를 위한 높은 속도와 대용량 데이터 전송 능력을 보였으며 4가지의 속도 모드로 8x (AGP 3.0) 가 가장 빠른 형태임.
      AGP 1x (1997) : 66MHz Clock, 32bit/clk = 266MB/s 를 기준으로 몇 배의 속도인지를 나타냄.

    • PCI-E (PCI Express)
      2023 년 현재 그래픽카드 등의 고속의 데이터 전송이 요구되는 외부장치를 장착하는 port. 16x (8GB/sec)까지의 양방향 고속 데이터 전송이 가능함.
      -1 lane (x1) 이 기본 단위.
      x는 lane을 가르키며,
      x 뒤에 숫자를 표기하여 몇 개의 lane이 할당되었는지를 의미함.
      PCI 의 한계를 극복하고자 개발이 되었으나, 개발 당시 가장 높은 전송대역폭을 자랑하면서 그래픽카드를 위한 포트로 많이 사용되게 됨.
      PCIe 버전 1레인(x1) 2레인(x2) 4레인(x4) 8레인(x8) 16레인(x16)
      1.0 250 MB/s 500 MB/s 1 GB/s 2 GB/s 4 GB/s
      2.0 500 MB/s 1 GB/s 2 GB/s 4 GB/s 8 GB/s
      3.0 984.6 MB/s 1.97 GB/s 3.94 GB/s 7.88 GB/s 15.75 GB/s
      4.0 1.969 GB/s 3.94 GB/s 7.88 GB/s 15.75 GB/s 31.51 GB/s
      5.0 3.938 GB/s 7.88 GB/s 15.75 GB/s 31.51 GB/s 63.20 GB/s
      PCI-E 는 full duplex 이므로 실제 데이터 대역폭은 위의 숫자에서 2를 곱하면 됨.

Universal Serial Bus (USB)

  • USB는 컴퓨터의 각종 주변 기기들을 쉽게 연결하기 위한 인터페이스(범용) 규약 으로 자리 잡음.

  • 당초에는 노트북 의 확장성을 위해 개발 되었으나, 오늘날 휴대폰 및 휴대용 선풍기, 스피커 등등의 거의 모든 컴퓨터나 휴대폰 관련 주변기기의 인터페이스로 자리잡았다.

  • 데이터 통신이 주 목적이었지만, 현재 주변기기의 전원 공급 및 휴대기기의 충전 단자의 표준이 된 상태

  • USB 내에서도 여러 connector 방식이 있었으나 최근엔 USB-C Type으로 통일되어가는 추세

특징

  • Host Controller가 end point들 device들을 제어하는 방식 으로,
    이 Host Controller 에만 IRQ (Interrupt ReQuest)가 할당되기만 하면
    여러 개의 USB 주변기기 (이론상 127개)를 연결할 수 있다 는 높은 확장성을 가짐.
  • Hot plugging과 Plug and Play 를 지원하여 컴퓨터 전원을 끌 필요없이 주변기기 추가가 가능함.
    • Hot plugging : 전원이 켜있는 상태에서 device를 탈부착하는 것을 의미.
    • Plug and Play : 연결(plug)하면 자동적으로 인식하며, 드라이버가 없는 경우는 드라이버 설치 작업이 시작(이 경우, 사용자와 interaction은 필요)되고, 이미 드라이버가 있는 경우는 그대로 해당 주변기기를 사용(play)할 수 있는 기능.
  • 고속의 데이터 통신 지원 (USB 3.2 : 20Gbps, USB4 : 40Gbps).
  • 5V (0.5A)를 기본 전압 으로 사용하여 RS-232에 비해 0과 1 전환이 빠르다
    • 데이터 전송에 국한된 내용임.
    • 최근엔 급속충전용으로 사용되면서 최대전압이 20V, 48V가 되는 USB Power Delivery 방식이 제정되었음.
    • 이들은 별개의 규약이지만 데이터 전송의 경우와 마찬가지로 Type-C 케이블로 동작 하므로 사용자 입장에선 차이를 못 느낀다.
    • 충전 중 데이터 전송도 가능.
    • 2022년에 노트북 중에서 외부 단자가 오직 USB-C type만 있는 경우도 등장
  • USB2.0까지는 4개의 선 (5V, GND, differential signaling x2 )으로 구성 (하지만 USB-C에선 24개의 선으로 늘어남)
  • Controller 구성이 단순해서 CPU 의존이 높은 편임.
    • 초기엔 IEEE1394 (Firewire)에 비해 CPU점유울도 높고 느렸지만,
    • CPU의 어마어마한 발전으로 인해 단점이라고 하기 어렵게 되었고
    • 오히려 controller가 단순하여 많은 주변기기에 저가로 구현할 수 있다는 장점이 된 상태임
  • Header와 payload로 구성된 Packet으로 데이터를 전송 함.
    USB의 경우

전송방법

  • Host와 장치 간의 데이터 전송만 가능 하며
    각 장치간의 직접적인 데이터 교환은 안됨.
    (즉, 장치간의 전송에도 Host가 개입해야한다.)

Isochronous Transfer (등시성 전송)

항상 같은 속도로 데이터 전송을 보장 하는 전송모드.

  • 데이터 전송 중 오류가 발생하더라도 재전송을 요구하지 않음.
  • 이어폰 등에 audio 데이터 전송 등에 사용된다.
  • 가장 높은 우선순위의 frame으로 8Mbps의 전송속도를 보장.
  • 데이터 방향을 알려주는 token packet (out token으로 host가 디바이스에게 데이터를 보낸다는 의미)과 전송 데이터인 data packet으로 구성됨.

Interrupt transfer (인터럽트 전송)

  • HID (Human Interface Device)와 데이터 전송에 사용됨(저속 전송 모드임).
  • 1.5Mbps 의 속도를 보임.
  • 작은 크기의 데이터가 비주기적으로 보내짐.
  • device가 인터럽트 요청을 queue에 차례대로 쌓아두고 host가 polling(device에게 보내줄 데이터가 있는지 확인하고 가져가는 것을 의미)을 하면 해당 요청들이 host로 보내짐.

Bulk transfer (벌크전송)

  • 앞서 두 전송모드를 수행하다가 여유가 있을 때 실행됨.
  • 프린터 등과의 통신처럼 많은 데이터가 신뢰성 있게 전송되어야 하나 실시간 처리는 필요없는 경우에 사용 됨.
  • 외장 HDD와의 데이터 전송도 이 방식을 이용.

Control Transfer (제어전송)

  • Device들에 명령을 내리거나 상태 제어를 하는데 사용됨.

0개의 댓글