콘텐츠로 이동

Universal Serial Bus (USB)

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

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

또한

  • 주변기기 연결(제어 및 데이터 통신)이 주 목적이었지만,
  • 어느새 주변기기의 전원 공급 및 휴대기기의 충전 단자의 표준까지 된 상태이다.
  • 더욱이 원래 USB 내에서도 여러 Connector 방식이 있었으나
  • 최근엔 USB-C Type으로 통일되어가는 추세임.

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



History

1994년 Intel, Microsoft, NEC, DEC, 컴팩, 노텔 등 7개 기업이 공동으로 개발을 시작:

  • 당시 직렬과 병렬 포트를 대체하는 새로운 주변기기 연결 표준을 목표로 함.
  • 연결성과 사용 편의성 개선을 주안점으로 둠.

USB 1.0 (1996)

  • 1.5 Mbps 와 12 Mbps 의 2가지 모드의 데이터 전송 속도 지원.
  • 초기의 경우, 호환성 및 안정성 문제로 그리 널리 사용되지 못함.

USB 1.1 (1998)

  • 1.0 당시의 문제점을 다수 개선.
  • 본격적으로 시장에서 채택되기 시작.

USB 2.0 (2000.4)

  • 최대 480 Mbps 데이터 전송 속도 제공
  • 외장 하드디스크 등의 대중화에 기여.

USB 3.0 (2008)

  • 5 Gbps 의 전송속도 지원.
  • SuperSpeed 모드 도입.
  • 높은 하위 호환성을 유지.

USB 3.1 (2013)

  • 최대 10 Gbps 전송속도 지원.
  • SuperSpeed+ 라는 별칭으로 불림: 고해상도 비디오 전송 가능.
  • USB-PD(USB Power Delivery) 가 본격적으로 구현
  • USB-PD 3.1은 28V, 36V, 48V fixed voltage를 추가하여 최대 240W까지 확장됨
  • USB-C 포트 등장: 양면 대칭 디자인!!

USB 3.2 (2017)

  • 최대 20 Gbps 전송속도 지원.

USB 4.0 (2019)

  • 최대 40 GbPs 전송속도 지원.
    • 20 Gbps에서 시작하여 옵션으로 40 Gbps을 지원.
    • 즉, 모든 USB 4.0 기기는 최대속도가 적어도 20 Gbps는 보장.
  • 썬더볼트 3 protocol과 호환.
    • 모든 썬더볼트 4 의 경우, USB 4.0을 완전히 지원.
    • 단, 모든 USB 4.0은 썬더볼트 4를 지원하는 건 아님.
  • 디스플레이 포트 및 PCI 익스프레스에 대해 Tunneling(터널링) 지원.
    • 하나의 케이블로 모니터와 외장하드 등을 동시에 연결.
  • 데이터 전송(Display Port, PCIe)과 전력공급 (USB Power Delivery, USB-PD) 를 동시에 처리할 수 있음: 최대 240W

Tunneling 이란?

다양한 Data Protocol을 하나의 물리적 연결 을 통해
동시에 전송 할 수 있도록 데이터를 Encapsulation 하여 전송.
예를 들어 하나의 연결선으로 비디오, 오디오, 기타 데이터 스트림을 동시에 처리할 수 있음.
즉, 하나의 USB-C 물리적 연결을 통해 USB data, DisplayPort video, PCI Express data 등을 동시에 전달

Thunderbolt (썬더볼트) 란?

Apple과 Intel이 공동개발한 고속 데이터 전송 및 멀티프로토콜 연결 기술 (2011년 1.0 발표).
2020년 발표된 4.0의 경우,
USB-C 포트를 통해 최대 40Gbps의 속도로 데이터를 전송하며,
하나의 케이블로 데이터, 비디오, 오디오, 전력공급을 동시에 처리. 4K/ 8K 디스플레이 연결과 외장 GPU, 하드 등의 다양한 주변기기의 연결을 하나의 케이블로 처리케 함.



특징.

  • Host Controller가 End Point들 Device들을 제어하는 방식
    • 이 Host Controller (Mather Board Chipset에 통합되는 추세) 에만 IRQ (Interrupt ReQuest)가 할당되기만 하면
    • 여러 개의 USB 주변기기 (이론상 127개)를 연결할 수 있다 는 높은 확장성을 가짐.
    • 덕분에 주변기기의 Controller (End Point) 구성이 단순하고,
    • CPU(Host Controller 제어) 의존도가 높은 편임.
      • 초기엔 IEEE1394 (Firewire)에 비해 CPU 점유울도 높고 느렸지만,
      • CPU의 어마어마한 발전으로 인해 단점이라고 하기 어렵게 되었고
      • 오히려 controller가 단순하여 많은 주변기기에 저가로 구현할 수 있다는 장점이 된 상태임
      • 참고로 IEEE1394은 "고가로 유명한 SCSI방식"의 후계자였는데 그 역시 고가로 인해 저가인 USB에 밀리게 된 것이 참 재밌는 사실 중 하나임.
  • Hot PluggingPlug and Play 를 지원하여 컴퓨터 전원을 끌 필요 없이 주변기기 추가가 가능함.
    • Hot Plugging : 전원이 켜있는 상태에서 Device를 탈부착하는 것을 의미.
    • Plug and Play : 연결(plug)하면 자동적으로 인식하며, 드라이버가 없는 경우는 드라이버 설치 작업이 시작(이 경우, 사용자와 interaction은 필요)되고, 이미 드라이버가 있는 경우는 그대로 해당 주변기기를 사용(play)할 수 있는 기능.
  • 고속의 데이터 통신 지원 (USB 3.2 : 20Gbps, USB 4 : 40Gbps).
  • 5V (0.5A)를 기본 전압 으로 사용하여 RS-232에 비해 01 전환이 빠르다는 장점을 가짐
    • 데이터 전송에 국한된 내용임.
    • 최근엔 급속충전용으로 사용되면서 최대전압이 20V (USB 3.1), 48V (USB 4)가 되는 USB-PD (USB Power Delivery) 방식이 제정되었음.
      • 이들은 별개의 규약이지만 데이터 전송의 경우와 마찬가지로 Type-C 케이블로 동작 하므로 사용자 입장에선 차이를 못 느낀다.
      • 충전 중 데이터 전송도 가능.
      • 2021년 USB-PD 3.1 이 발표 되면서 최대 240W 의 전력 공급이 가능해짐.
    • 2022년에 노트북 중에서 외부 단자가 오직 USB-C 포트만 있는 경우도 등장함.
  • USB 2.0 까지는 4개의 선 (5V, GND, Differential Signaling x2 )으로 구성 (하지만 오늘날 USB-C에선 24개의 선으로 늘어남)
  • Header와 payload로 구성된 Packet으로 데이터를 전송 함.

USB의 경우,

  • 확장성이 커지면서
  • 여러 분야의 요구가 충돌하는 문제가 발생하고 있으며
  • 점점 복잡해지고 있음.

전송방법

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

다음의 전송모드로 구성됨.

Isochronous Transfer (등시성 전송)

  • Audio/Video 데이터 전송 등에 사용된다.
  • 일정한 bandwidth와 timing을 보장하는 대신, 오류가 발생해도 일반적으로 재전송을 요구하지 않음.
  • 따라서 data의 완전성보다 시간 지연을 줄이는 것이 더 중요한 경우에 사용됨.
  • 데이터 방향을 알려주는 Token Packet (이는 Out Token = Host가 Device 에게 데이터를 보냄을 알림)과 전송 데이터인 Data Packet으로 구성됨.
-chronous
시간을 의미하는 접미사.

Interrupt Transfer (인터럽트 전송)

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

Bulk Transfer (벌크전송)

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

Control Transfer (제어전송)

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

참고하면 좋은 사이트