Skip to content

Universal Serial Bus (USB)

USB는 컴퓨터의 각종 주변 기기들을 쉽게 연결하기 위한 인터페이스 규약으로 2023년 현재 다른 규격들을 제치고 진정한 Universal (범용) 규약으로 자리 잡음.

당초에는 노트북 의 확장성을 위해 개발되었으나, 오늘날 휴대폰 및 휴대용 선풍기, 스피커 등등의 거의 모든 컴퓨터나 휴대폰 관련 주변기기의 인터페이스로 자리잡았다. 또한 데이터 통신이 주 목적이었지만, 어느새 주변기기의 전원 공급 및 휴대기기의 충전 단자의 표준이 된 상태이다. 더욱이 원래 USB 내에서도 여러 connector 방식이 있었으나 최근엔 USB-C Type으로 통일되어가는 추세임.

규격이 계속해서 발전하고 있기 때문에, 최신 내용을 점검해 보는 게 좋음.
아래 내용은 USB2.0 정도 수준에 조사된 내용이 주인지라 수치등의 부분은 달라져 있을 수 있음.


특징.

  • 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에 비해 01 전환이 빠르다는 장점을 가짐 (데이터 전송에 국한된 내용이다. 최근엔 급속충전용으로 사용되면서 최대전압이 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가 단순하여 많은 주변기기에 저가로 구현할 수 있다는 장점이 된 상태 (IEEE1394가 고가로 유명한 SCSI방식의 후계자였는데 그 역시 고가로 인해 저가인 USB에 밀리게 된 것이 참 재밌는 사실 중 하나임)
  • 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들에 명령을 내리거나 상태 제어를 하는데 사용됨.

참고하면 좋은 사이트