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) 가 본격적으로 구현 (최대 100W, 20V, 5A).
- 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 하여 전송.
예를 들어 하나의 연결선으로 비디오, 오디오, 기타 데이터 스트림을 동시에 처리할 수 있음.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 Plugging
과Plug and Play
를 지원하여 컴퓨터 전원을 끌 필요 없이 주변기기 추가가 가능함.Hot Plugging
: 전원이 켜있는 상태에서 Device를 탈부착하는 것을 의미.Plug and Play
: 연결(plug)하면 자동적으로 인식하며, 드라이버가 없는 경우는 드라이버 설치 작업이 시작(이 경우, 사용자와 interaction은 필요)되고, 이미 드라이버가 있는 경우는 그대로 해당 주변기기를 사용(play)할 수 있는 기능.
- 고속의 데이터 통신 지원 (USB 3.2 : 20Gbps, USB 4 : 40Gbps).
- 5V (0.5A)를 기본 전압 으로 사용하여 RS-232에 비해
0
과1
전환이 빠르다는 장점을 가짐- 데이터 전송에 국한된 내용임.
- 최근엔 급속충전용으로 사용되면서 최대전압이 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 데이터 전송 등에 사용된다.
- 가장 높은 우선순위의 Frame으로 8 Mbps의 전송속도를 보장.
- 데이터 방향을 알려주는
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들에 명령을 내리거나 상태 제어를 하는데 사용됨.