Universal Serial Bus (USB)¶
USB는 컴퓨터의 각종 주변 기기들을 쉽게 연결하기 위한 인터페이스 규약으로
2024년 현재 다른 규격들을 제치고 진정한 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에 비해
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가 단순하여 많은 주변기기에 저가로 구현할 수 있다는 장점이 된 상태임
- 참고로 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들에 명령을 내리거나 상태 제어를 하는데 사용됨.