제가되기때문에보다효과적이고공격적인전력공급정책이필요하게된다. 서스팬드 (Suspend) 상태의버스전력공급상태를원래의상태로복원하는작업을리쥼 (Resume) 이라 고부른다. USB 에서정의하는서스팬드는크게 2 가지로나뉜다. 하나는전역 (Global) 서스팬드이고다른하나는선택

Similar documents
를수있다. * 링크명령어 링크는양쪽파트너사이에지정된링크명령어 ( 프로토콜계층에서정의하지않은 ) 을별도로준비해 서사용한다. 링크명령어는링크상태의전환및흐름제어 (Flow Control) 등에사용된다. * 링크전원관리 USB 3 SS 에서는링크의버스전원사용상태가어떤상태인지를

1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는 USB 와관련된개념을가볍게살펴보는시간을가진다. 구체적인내용은이어지는뒷장에서자세하게다룰것이다. [ 글을읽기전에잠시확인하자!] 저자의한마디 * USB 2.0 USB 릴리즈버젼의종류

일반적인 네트워크의 구성은 다음과 같다

슬라이드 1

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

CAN-fly Quick Manual

그룹웨어와 XXXXX 제목 예제

시스템, 네트워크모니터링을통한보안강화 네트워크의미래를제시하는세미나 세미나 NetFocus 2003 : IT 관리자를위한네트워크보안방법론 피지피넷 /

BY-FDP-4-70.hwp

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft Word - PEB08_USER_GUIDE.doc

개요

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

슬라이드 제목 없음

드포인트가지원하는 MaxPacketSize가 8, 16, 32, 64 중에하나이기때문에, 호스트는 FS 디바이스가지원하는컨트롤엔드포인트의 MaxPacketSize 값을정확하게알아야한다. 이런정보는디바이스디스크립터 (Device Descriptor) 에포함되어있으며, 이

Microsoft Word - release note-VRRP_Korean.doc

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

untitled

2009년 상반기 사업계획

Microsoft PowerPoint - chap01-C언어개요.pptx

ISP and CodeVisionAVR C Compiler.hwp

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

BC6HP Korean.ai

1_12-53(김동희)_.hwp

Chapter ...

Microsoft Word - logic2005.doc

PowerPoint 프레젠테이션

로거 자료실

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation


PowerPoint Template

PowerPoint 프레젠테이션

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Nordic Chipset BLE Test Application Note

온라인등록용 메뉴얼

Ultimate High Performance Audio tx-usb Operating Instructions Rev : 1.0

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Switching

슬라이드 제목 없음

Cisco FirePOWER 호환성 가이드

Microsoft PowerPoint - 30.ppt [호환 모드]

설계란 무엇인가?

Microsoft PowerPoint - tem_5

Microsoft Word - PLC제어응용-2차시.doc

BS-K1217-M□□-3012_ProductGuide_KR_PDF

(MHT-SB112\273\347\276\347\274\255.hwp)

Microsoft PowerPoint - chap06-2pointer.ppt

그룹웨어와 XXXXX 제목 예제

BC6DX Korean.ai

PowerPoint Presentation

1아이리포 기술사회 모의고사 참조답안

USB Driver Interface(USBDI) 라고부른다. * 호스트컨트롤러드라이버 (xhcd) 호스트컨트롤러하드웨어와 USBD 사이에존재하는소프트 웨어영역을제공한다. * 호스트컨트롤러 (xhc) 보통 Low Speed, Full Speed, High Speed,

歯설명서_020925_.PDF

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

시험인증기술동향 다만 USB 2.0 full-speed 기기에대한수요는 USB 2.0 high-speed 와 USB 3.0 기기들의등장으로인해상당부분감소될것으로예상된다. 3. USB 3.0 특징 VBUS D+ D- SSTX+ SSTX- SSRX+ SSRX- VBUS D

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

BC6DX-II Korean.ai

RS- 232, RS485 FND Display Module NET-SFND-4-23A RS-232, RS485 FND Display Module NET-SFND-4-23A MANUAL (Rev 1.0) Net-Control http

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

슬라이드 1

Mango-E-Toi Board Developer Manual

<4D F736F F F696E74202D FB5A5C0CCC5CDB8B5C5A9BFCD20BFC0B7F9C1A6BEEE20B1E2B9FD205BC8A3C8AF20B8F0B5E55D>

게시판 스팸 실시간 차단 시스템

chap 5: Trees

PowerPoint Presentation

ePapyrus PDF Document

Microsoft Word - NAT_1_.doc

원문 : USB in a NutShell, Beyond Logic. 번역자 : lifeisforu( ) 주의 : 허락받고번역한것이아니므로문제가되면삭제될수있습니다. 주의 : 번역

C# Programming Guide - Types

<4D F736F F D C7C1B7CEC5E4C4C3C0BB20C0CCBFEBC7D B0E8BBEA20BAB8B0EDBCAD205FC3D6C1BE5F>

PowerPoint Presentation

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

Microsoft Word - FunctionCall

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

놀이동산미아찾기시스템

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

Microsoft PowerPoint - 4. 스캐닝-2.ppt [호환 모드]

리눅스 프로세스 관리

2주차: 입출력 제어 복습

ePapyrus PDF Document

PowerPoint Presentation

CPX-E-SYS_BES_C_ _ k1

API 매뉴얼

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

입출력된다. 이러한무선 USB 시스템에서데이터의송신은 MMC(Micro-scheduled Management Command) 내에 USB 토큰 (Token) 을전달 (broadcast) 하며, 데이터와핸드쉐이크단계에서데이터송수신 (data communication) 의

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

MD-C-035-1(N-71-18)

Microsoft Word - ASG AT90CAN128 모듈.doc

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

SRC PLUS 제어기 MANUAL

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

rptProductDatasheet

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Transcription:

6 장 USB 전원관리 필자는이번장에서전원관리, 전력관리, 전원절약등의단어를혼용해서사용한다. 참고해서읽어 주기를바란다 노트북 PC에 USB 이동식디스크를꽂은상태로장시간동안 USB 이동식디스크를사용하지않고다른작업을하고있었다고가정해보자. 그동안 USB 버스로불필요한전력이낭비되어사용된결과가되었다. 그렇지않아도배터리가부족한상황이라면, 노트북 PC 사용자에게이런낭비문제는심각한문제가아닐수없다. USB 버스는이와같은전력공급에있어서보다공격적으로사용되는전력을절약할수있는방법을연구하고제시하고있다. 이번장에서는 USB 2 와 USB 3 각각에서버스전력사용을최소화하는요소들과관련된내용을배워 보도록하겠다. 그리고최근이슈되고있는 USB Type-C 와전원관리에대해서배워보도록하겠다. 6.1 버스리쥼 (Resume) 과서브팬드 (Suspend) USB 버스의전력사용을가장최소화하는방법은당연히사용중인 USB 디바이스를제거하는것 이다. 다시금디바이스를사용해야한다고판단될때, 다시 USB 디바이스를호스트 ( 허브 ) 에연결 한다. 이것만큼가장확실하게버스의전력사용량을줄이는방법은없다. 물론물리적으로디바이스를제거하지않는다하더라도 USB 호스트컨트롤로에게제공되는전력을끊어버리면이역시같은결과를가져오게될것이다. 물리적으로디바이스를제거하지않는상황에서이와같이 USB 호스트컨트롤로에게제공되는전력을끊어버리는상황은컴퓨터를최대절전모드로전환하는작업을예상할수있다. 이번장에서이와같은내용을설명하려는것이아니다. 버스에물리적으로연결되는상황에서또한호스트컨트롤로에게제공하던전력을그대로유지하는상황에서필요에따라보다적극적인방법을사용해서디바이스에게공급하던전력을가장경제적인공급이될수있도록하는것이목적이다. 당연히정상동작을하고있는디바이스에게악영향을끼쳐서도않된다. 호스트입장에서 USB 디바이스의전력공급을당분간줄여도무방할것이라는정확한판단이필요하다. USB 디바이스의전력공급을최대한줄이는상황을서스팬드 (Suspend) 상태라고부른다. USB 디바이스에게공급되던전력을많이줄이면줄일수록좋겠지만, 반면에다시원래대로환원 하는데걸리는시간이전력을줄이는양만큼오래걸린다. 결국많이줄이면복원하는데걸리는시간또한오래걸린다는뜻이된다. 이것이가장중요한문

제가되기때문에보다효과적이고공격적인전력공급정책이필요하게된다. 서스팬드 (Suspend) 상태의버스전력공급상태를원래의상태로복원하는작업을리쥼 (Resume) 이라 고부른다. USB 에서정의하는서스팬드는크게 2 가지로나뉜다. 하나는전역 (Global) 서스팬드이고다른하나는선택적 (Selective) 서스팬드이다. 호스트컨트롤로에게공급되는전력을줄이지않고, 또한사용중인 USB 디바이스를호스트에서제거하지않은상태로서스팬드시키는방법은 USB 2, USB 3 각각에서약간씩의차이는있지만공통적인의미를가지는방법이사용된다. 그것은버스상에그어떤의미있는패킷이송수신되지않을때, 이시간이지정된시간보다오랫동안지속되면호스트와디바이스는현재버스의전력공급상태를서스팬드시킬수있다. 예를들어, USB 2에서는 3ms 시간동안호스트와디바이스간에송, 수신되는패킷이없다면버스상태를서스팬드로전환한다. 보통서스팬드된버스는디바이스에게거의최소화된전력만사사용하는것허용한다. 왜냐하면, 마우스, 키보드등과같은입력장치들은오랜시간동안사용되지않고있다가도사용자가디바이스를움직이는행동을함으로써, 곧바로해당하는디바이스를다시사용할수있는상황 (Remote Wakeup) 으로전환해야하기때문이다. 이와같은상황을호스트가인식할수있도록디바이스는최소한의전력만버스를통해서공급받아사용하게될것이다. 전역서스팬드와선택적서스팬드는디바이스입장에서는크게다르지않다. 전역서스팬드는호스트컨트롤로가자신에게붙어있던모든루트허브측으로주기적으로전송하던 모든패킷 (SOF 포함 ) 을일정시간동안보내지않는상황을통해서진입된다. 일정시간동안호스트가그어떤패킷도연결된버스로보내지않기때문에호스트에연결된모든 허브, 모든디바이스는전부서스팬드상태로전환하게된다. 이와같은방식은사용하기에현실적 이지못하다는지적이있다. 대부분의운영체제도이방식을지원하지않는다. 이보다는대부분의운영체제는선택적서스팬드를지원한다. 선택적서스팬드는특정디바이스에게전달되던패킷을일정시간막는행위로인해해당하는디 바이스가연결된버스상태만서스팬드상태로전환하는것을의미한다. 이런방법을지원하려면 당연히허브가이와같은서스팬드를지원해야한다. 호스트컨트롤러는허브에게명령어를전송

하여이와같이허브의특정포트가서스팬드상태로전환할수있도록요청한다. 선택적서스팬드와관련해서, 디바이스가서스팬드상태를원하지않는다면, 다시리쥼절차를통해서디바이스는버스의상태가서스팬드상태로전환되지않도록막기도한다. 시중에있는디바이스들중에는이와같이버스가서스팬드상태로전환되지않도록조치하는디바이스가있다. 이와같은디바이스의이런행동은 USB 버스가요구하는기본적인전원관리방법을무시하는행동이기때문에운영체제가요구하는 USB 인증프로그램혹은 USB ORG 협회에서제공하는인증프로그램은이런행동을금지하고있다.( 인증을받지못한다는의미이다 ) 그림 6-1 서스팬드 (Suspend) 와리쥼 (Resume) [ 그림 6-1] 을보면, 서스팬드상태의버스를정상상태로전환하는리쥼시그널이호스트혹은디바이스에게요구되는것을알수있다. 이때, 디바이스가이와같은리쥼시그널을요구하는상황을원격깨우기기능이라고부른다. 원격깨우기기능 (Remote Wakeup) 을가지지않은디바이스는호스트에의해서만리쥼시그널이발생될수있다.

6.2 USB 2 전원관리 USB 2 는서스팬드상태의버스가원래대로전력사용량을복원하는데걸리는시간을효율적으로 관리하기위해서버스의전력사용상태를몇가지단계로나누어서설명한다. 6.2.1 LPM(Link Power Management) USB 2 는다음과같은 4 가지의전원관리 ( 전력공급 ) 상태를규정하고있다. 표 6-1 USB Link Power Management 상태 LPM 상태 L0(On) L1(Sleep) L2(Suspend) L3(Off) 설명버스의전력이정상적으로공급되는상태 L0상태보다적은양의전력만사용하는상태. 디바이스가 VBUS 시그널로부터공급되는전력을어느정도까지만끌어사용해야하는지에대한정의가되어있지않다. 리셋신호, 호스트리쥼신호, 디바이스 Remote Wakeup등에의해서깨어날수있다 L1상태보다적은양의전력만사용하는상태. 디바이스가 VBUS 시그널로부터공급되는전력을끌어사용할수있는제한이스팩내부에명시되어있다. 리셋신호, 호스트리쥼신호, 디바이스 Remote Wakeup등에의해서깨어날수있다버스에전원공급이전혀없는상태. 디바이스가호스트에서제거된상태. 사용금지된상태. 리셋신호에의해서만 L0 상태로복원될수있다. L1 상태와 L2 상태는전력소비량만상대적으로다른상태이다. L1 상태에서 L0 상태로복원하는데 걸리는시간은 L2 상태에서 L0 상태로복원하는데걸리는시간보다짧다. L3 상태에서 L0 상태로복원하는과정은리셋신호에의해서만이루어진다. [ 그림 6-2] 는 LPM 에서규정한 4 가지상태간의전환과사건을명시하고있다.

그림 6-2 LPM 상태전환다이아그램 [ 그림 6-2] 를보면, 각각의상태가어떻게진입되는지와빠져나오게되는지를알수있다. L0 를제외한나머지모든상태는복원상태로전환하는데있어, L0 상태로만복원할수있다. (L1->L0, L2->L0, L3->L0) 표 6-2 L1 상태와 L2 상태의비교 L1(Sleep) L2(Suspend) 진입하기 LPM 확장트랜잭션을사용 3ms 동안패킷전송이없다 빠져나가기 호스트리쥼과 원격디바이스깨 호스트리쥼과 원격디바이스깨 우기기능 (LPM 트랜잭션을통해서활성화 / 비활성화됨 ) 우기기능 ( 소프트웨어를통해서활성화 / 비활성화됨 ) 사용되는신호 LS, FS Idle 시그널을유지한다 LS, FS Idle 시그널을유지한다 진입과빠져나가는지연시간 진입 : 최대 10us 빠져나오기 : 최대 70us에서 1ms 진입 : 최대 3ms 빠져나오기 : 최소 30ms 이상 링크전력소비량 최대 0.6mW 최대 0.6mW 디바이스전력소비량 스팩에서미정의됨 500uA 또는 2.5mA 이하 디바이스강제제거인식 인식할수있다 인식할수있다 HS 디바이스가서스팬드되면항상 FS 상태로우선전환된뒤에서스팬드된다. (3 장참고 )

6.2.1.1 프로토콜 LPM 확장트랜잭션은호환성을위해기존에사용되던 USB 2 트랜잭션의모습을그대로유지하 면서확장된프로토콜을사용한다. 표 6-3 PID 유형 PID 유형 PID 이름 PID 값 (4비트) 설명 토큰 (Token) OUT IN SOF SETUP 0001B 1001B 0101B 1101B 호스트에서디바이스로데이터를전송디바이스에서호스트로데이터를전송 Start Of Frame 신호로사용컨트롤파이프의 Setup명령을디바이스로전송 데이터 (Data) DATA0 DATA1 DATA2 MDATA 0011B 1011B 0111B 1111B 짝수 Data 패킷홀수 Data 패킷고대역폭등시성전송에서사용됨 Split과고대역폭등시성전송에서사용됨 Handshake ACK NAK STALL NYET 0010B 0101B 1110B 0110B 데이터를정상으로수신했다데이터를받거나보낼수없다엔드포인트가정지 (Halt) 되었다데이터를수신했지만, 아직처리중이다. 특별한목적 PRE ERR SPLIT PING EXT 1100B 1100B 1000B 0100B 0000B 토큰으로사용됨. Low Speed 에사용됨. Handshake에사용됨. Split 전송에러. 토큰으로사용됨. Split전송에사용 High Speed 컨트롤, 벌크엔드포인트흐름제어목적으로사용됨. 예약됨. LPM에서사용하고있음. [ 표 3-6] 를보면, USB 2 에서사용되는모든패킷 ID(PID) 를보여주고있다. 가장마지막항목인 EXT PID 값은 0000B 로서, 그값에서알수있듯이원래는사용되지않는값이다. 하지만, LPM 은 이값을선택해서자신의프로토콜에사용하기로결정했다.

그림 6-3 EXT PID 를사용한트랜잭션 [ 그림 6-3] 을보면, EXT PID를시작으로사용하는토큰패킷과이어지는확장된토큰패킷, 그리고파라미터를알수있다. 이와같은방법을사용하기때문에, 기존에 USB 2 를지원하는디바이스가맨앞에전달되는 PID를확인하여 EXT PID를발견하고또한디바이스자신이 LPM을지원한다면이와같은트랜잭션을올바르게처리하게된다. 현재사용하는 SubPID 값은이진수 0011B 값만정의되어사용되고있다. 표 6-4 [ 그림 6-3] 의 SubPID 를위한 Variable 필드의정의 비트 필드 설명 10:9 사용안됨 8 bremotewake 원격깨우기기능활성화여부 1 : 활성화 0 : 금지 7:4 HIRD 호스트가 L1 상태에서 L0 상태로리쥼시그널을유지하는시간 (Host Initiated Resume Duration)

값 유지시간 0000B 50us 0001B 125us 0010B 200us 0011B 275us.. 1111B 1.2ms 3:0 blinkstate 해당하는트랜잭션에대해서디바이스가 ACK 패킷으로응답하는경우에디바이스는다음의상태로전환되어져야한다 값 설명 0001B L1(Sleep) [ 표 6-4] 에서 HIRD값 4비트가사용되고있다. L1상태에있는버스상태를 L0상태로전환하는작업 을호스트가요구하는경우, 호스트는리쥼시그널을일정시간동안유지하게된다. 이때사용되는 유지시간정보를 HIRD라고부른다. 디바이스는이값을사전에확인하여이값을사용하기에무리 가있다면절대로 LPM EXT PID 트랜잭션에대해서 ACK패킷을응답하면안된다. [ 표 6-4] 를보면, LPM 이규정하고있는 blinkstate 는 L1 상태만임을알수있다. L1 상태는 LPM EXT PID 를통해서진입할수있기때문이다. 그림 6-4 EXT PID 를사용한트랜잭션에대한디바이스의응답

[ 그림 6-4] 는 EXT PID 에대한디바이스의가능한응답패킷을보여주고있다. ACK 패킷으로응답하는경우는해당하는트랜잭션을받아들인다는의미가된다. 이경우, 디바이스는곧바로 L1상태로전환하지말아야한다. 스팩에서정의한기준시간만큼은기다려야한다. 왜냐하면, HS 속도를사용하는경우에는곧바로 L1 상태가되는것이아니라, FS 속도로먼저버스상태가전환된뒤에 L1상태가되기때문이다. [ 표 6-2] 에서보았던대로, L1 상태에서는 FS Idle상태를유지한다. NYET 패킷으로응답하는경우는아직이런트랜잭션을받아들이기어렵다는의미가된다. 다른 데이터패킷트랜잭션이아직진행중인경우가된다. STALL 패킷으로응답하는경우는해당하는트랜잭션을지원하지않는다는뜻이다. 6.2.1.2 LPM 를정의하는 USB 디바이스프레임워크 USB 2 에서정의하고있는디스크립터 (Descriptor) 중에는 USB 2.0 확장디스크립터 (Extension Descriptor) 가있다. LPM 은이것을사용해서디바이스의 LPM 지원여부를호스트에알리고있다. 표 6-5 USB 2.0 확장디스크립터 (Extension Descriptor) 오프셋 필드 크기 ( 바이트 ) 값 설명 0 blength 1 수 디스크립터크기 ( 바이트 ) 1 bdescriptortype 1 상수 DEVICE CAPABILITY Type(0) 2 bdevcapabilitytype 1 상수 USB 2.0 EXTENSION Type(2) 3 bmattributes 4 비트맵 파라미터 비트 설명 1 LPM. LPM지원여부 나머지사용안함 (0) USB 2.0 은 Binary Device Object Store(BOS) 디스크립터를정의하고있다. LPM은 BOS 디스크립터내의 USB 2.0 확장디스크립터를사용한다. BOS 디스크립터자체는컨트롤명령 (GET_DESCRIPTOR) 을통해서얻을수있지만, 이와같은 BOS 디스크립터내부의다른디스크립터는직접얻는명령어가없다. 사용자는 BOS 디스크립터를모두읽어서해석 (Parsing) 하는과정을통해 USB 2.0 확장디스크립터의존재를확인할수있다.(8장에서참고 )

[ 표 6-5] 처럼디바이스는 USB 2.0 확장디스크립터를사용해서 LPM 기능을지원하는지여부를호 스트에게알려야한다. BOS 디스크립터를지원하는디바이스는반드시디바이스디스크립터 (Device Descriptor) 의 bcdusb 필드의값이 0x0201 이상의값을사용해야한다. 6.2.1.3 허브와 LPM 호스트컨트롤러가특정디바이스의버스공급상태를 L1 상태로전환하거나 L0 상태로복원하는 작업은허브가가진기능을이용해서이루어진다. 이때문에허브는 LPM 기능을지원해야하는허브여야하며, LPM 과관련되어호스트가전달하는 명령어 ( 허브전용명령어 ) 를해석할수있어야한다. 6.2.1.3.1 L0 -> L1 그림 6-5 호스트가컨트롤전송명령을통해 EXT PID 트랜잭션을하는모습

[ 그림 6-5] 를보면, 호스트컨트롤로에서허브로컨트롤전송명령 (SetandTestPortFeature) 을전송하고있다. 이명령어는관련된파라미터를담고있다. 허브는디바이스가연결된포트를 Idle 상태로전환한다음, LPM 트랜잭션을시작한다. 디바이스가응답패킷을응답하면, 허브는 LPM Completion Code 를사용해서호스트에게결과를알려주고있는모습이다. 그림 6-6 LPM 트랜잭션을사용하여 L0 상태에서 L1 상태로전환하는모습 [ 그림 6-6] 을보면, LPM 트랜잭션을통해서 L0 상태에서 L1 상태로전환하는모습과그에따른지 연시간정보를보여주고있다. TL1TokenRetry 값은디바이스가응답패킷을호스트 ( 허브 ) 로올려주는한계시간을정의한다. 이시 간은최소 8us 에서최대 10us 이내로정의된다. TL1Residency 값은최소한디바이스가유지해야하는 L1 시간을정의한다. 이시간은최소 50us 이상으로정의된다.

6.2.1.3.1 L1 -> L0 그림 6-7 디바이스측에서원격깨우기기능 (Remote Wakeup) 을사용해서 L1 상태에서 L0 상태로전 환하는모습 [ 그림 6-7] 을보면, L1 상태의디바이스측에서 Remote Wakeup 기능을사용해서버스상태를 L0 상태로전환하는모습을보여주고있다. 이런요청에대해실제빠르게전환되는모습과느리게전화되는모습을모두보여주고있다. 스팩에서는이와같은상태전환에따른시간상수를다음과같이정의한다. TL1HubDrvResume1 값은최소 50us 에서최대 1200us 이내로정의된다. TL1DevDrvResume 값은최소 50us 만정의된다. TL1ExitDevRecovery 값은최소 10us 만정의된다. TL1ExitLatency1 값은최소 60us 에서최대 1210us 이내로정의된다.

TL1ExitLatency2 값은최소 70us 에서최대 1000us 이내로정의된다. TL1HubDrvResume2 값은최소 60us 에서최대 990us 이내로정의된다. TL1HubReflect 값은최대 48us 만정의된다. 6.2.1.3.2 허브가지원하는전용명령 LPM 기능을지원하는허브는다음과같은허브전용명령어를지원할수있어야한다. * CLEAR_PORT_FEATURE/ SET_PORT_FEATURE Feature Selector 를사용해서기능을활성화하거나해제하는명령어를지원한다. 표 6-6 허브가지원하는 Feature Selector Feature Selector 대상 (Recipient) 값 (Value) C_HUB_LOCAL_POWER 허브 0 C_HUB_OVER_CURRENT 허브 1 PORT_CONNECTION 포트 0 PORT_ENABLE 포트 1 PORT_SUSPEND(L2) 포트 2 PORT_OVER_CURRENT 포트 3 PORT_RESET 포트 4 PORT_POWER 포트 8 PORT_LOW_SPEED 포트 9 PORT_L1 포트 10 C_PORT_CONNECTION 포트 16 C_PORT_ENABLE 포트 17 C_PORT_SUSPEND 포트 18 C_PORT_OVER_CURRENT 포트 19 C_PORT_RESET 포트 20 PORT_TEST 포트 21 PORT_INDICATOR 포트 22 C_PORT_L1 포트 23

대부분 Feature Selector 는 USB 2 허브에서정의하고있는값이다. 이중에 LPM 은 PORT_L1 과 C_PORT_L1 을추가로정의해서사용한다. PORT_L1 은 L1 상태로전환시키는호스트의명령어에 사용된다. C_PORT_L1 은 PORT_L1 상태가변했는지여부를기록하는 Selector 이다. * GET_PORT_STATUS 포트의상태를확인하는명령어를지원한다. 표 6-7 허브가지원하는 Port Status 비트설명 0 Current Connect Status. 포트에디바이스가연결되어있는지여부 0 = 현재포트에는디바이스가연결되지않았다 1 = 현재포트에는디바이스가연결되었다 1 Port Enabled/Disabled. 소프트웨어에의해서포트가사용가능 / 사용불가능여부 0 = 현재포트가사용불가능상태 1 = 현재포트가사용가능상태 2 Suspend. 0 = 현재포트가서스팬드되지않았다 1 = 현재포트가서스팬드되었다 3 Over current. 0 = 현재포트의과잉전류신호가발견되지않았다 1 = 현재포트의과잉전류신호가발견되었다 4 Reset. 0 = 현재포트의리셋신호가발견되지않았다 1 = 현재포트의리셋신호가발견되었다 5 L1. 0 = 현재디바이스와연결된버스상태가 L1 상태가아니다 1 = 현재디바이스와연결된버스상태가 L1 상태이다 6-7 사용안함 8 Port Power. 0 = 현재포트가 Power Off 상태이다 1 = 현재포트가 Power Off 상태가아니다. 9 Low Speed Device Attached

0 = Full Speed/High Speed 디바이스가연결되었다 1 = Low Speed 디바이스가연결되었다 10 High Speed Device Attached 0 = Full Speed 디바이스가연결되었다 1 = High Speed 디바이스가연결되었다 11 Port Test Mode. SetPortFeature/ClearPortFeature 명령어에의해포트테스트모드에진입한여부를확인. 0 = 포트테스트모드상태가아님 1 = 포트테스트모드상태 12 Port Indicator Control. 포트의상태를표시하는불빛표시기능을컨트롤. 0 = 디폴트색상을사용함 1 = 소프트웨어가컨트롤하는색상을사용함 13-15 사용안함 [ 표 6-7] 은 USB 2 허브가지원하는포트상태값이다. 이중에 LPM 은비트 5 를추가정의해서사용 하고있다. 표 6-8 허브가지원하는 Port Change Status 비트설명 0 Connect Status Change. 0 = Current Connect Status 가변하지않았다 1 = Current Connect Status 가변했다 1 Port Enabled/Disable Change. 포트가 Port_Error 조건에의해서사용불가능할때만셋된다 2 Suspend Change. 0 = Suspend 상태가변하지않았다 1 = Suspend 상태가변했다 3 Over Current Indicator Change. 0 = 현재포트의 Over Current 상태가변하지않았다 1 = 현재포트의 Over Current 상태가변했다 4 Reset Change. 포트의리셋과정이모두끝났는지여부 0 = 현재포트의리셋신호가발견되지않았다 1 = 현재포트의리셋신호가발견되었다. 이후과정이모두끝났다. 5 L1 Change. L1상태였던현재의포트가지금은어떤상태인지를알린다 0 = 여전히변하지않았다

6-15 사용안함 1 = L1 상태를빠져나갔다 (L0 상태가되었다 ) [ 표 6-8] 은 USB 2 허브가지원하는포트상태가변할때값이다. 이중에 LPM 은비트 5 를추가정 의해서사용하고있다. [ 표 6-7] 의필드의내용이변했는지를확인하는용도로사용되고있다. * SET_AND_TEST 표 6-9 SET_AND_TEST 명령어포멧 bmrequesttype brequet wvalue windex wlength Data 10100011B SET_AND_TEST PORT_L 1 Feature Selector 비트 3..0 Port 7..4 HIRD 14..8 Device Address 15 Remote Wakeup Enable 1 00H ACK 10H NYET 11H 타임아웃 호스트컨트롤로는허브에게 [ 표 6-9] 와같은컨트롤명령을전송하여 LPM L1 상태로버스의상태 를전환시킨다.

6.3 USB 3 전원관리 6.3.1 USB 3 전원관리의개요 USB 3 은 USB 2 보다다음과같은특징을통해서보다효과적인전원관리가이루어지도록수정 되었다. * 반복적인폴링 (Polling) 작업을줄였다 반복적인폴링작업은디바이스가준비된상태인지를확인하는대표적인 USB 버스의특징이다. USB 3 은폴링작업을하지않아도되도록프로토콜을수정하였다. 폴링작업은불필요한전력낭비 를가져온다. * 허브를통해서브로드캐스팅되는패킷수를줄였다 ITP 패킷 (U0 상태의링크에게만전송됨 ) 을제외하면더이상호스트는브로드캐스팅형태의패킷전 달방법을사용하지않는다. 이제 Route Address 정보를사용하여호스트가통신을원하는디바이 스에게만정확하게패킷을전송할수있게되었다. * 버스가사용되고있지않을때, 보다디바이스와호스트는보다저극적으로전력사용량을줄일 수있게되었다. * 호스트와디바이스는양쪽이모두전력사용량을줄이는요청을할수있게되었다. USB 2 에서 는이와같은요청은호스트의전유물이었다. * 디바이스수준과펑션수준각각에서서스팬드요청을할수있도록보다정교한전원관리가가능 해졌다.

6.3.1.1 링크전원관리 (Link Power Management) USB 3 은링크수준에서전원을관리하는프로토콜을정의하고있다. 링크상태는 Upstream Port 와 Downstream Port 각각의상태가함께정의되어진다. U0 부터 U3 까지모두 4 가지상태를정의하고 있다. 표 6-10 링크상태 링크상태 요약 설명 U0 링크활성화 동작이가능한평상시상태 U1 링크 Idle( 빠른나가기 ) Rx, Tx 회로가거부됨 U2 링크 Idle( 느린나가기 ) 클럭발생회로가거부됨 U3 링크서스팬드 인터페이스전력제거됨 그림 6-8 U0, U1, U2, U3

[ 그림 6-8] 에서, U0 상태는링크가정상적으로 Rx, Tx 를수행할수있는상태를의미한다. 모든 USB 3 SS 패킷이송, 수신될수있다. U1, U2 상태는링크 Idle 상태이다. U1 상태가 U2 상태보다는전력사용이높다. U1 상태는 U2 상태로전환될수있다. 이런작업은미리링크파트너양쪽에서정의하고있는타임아웃값에따라서자동으로전환된다. 이런경우를제외한모든상황에서 U1, U2, U3 상태는 Recovery 상태를거쳐서 U0 상태로만전환될수있다. 물론 U0 상태는 U1, U2, U3 상태로곧바로전환될수도있다. Recovery 상태는 Retraining 과정을통해서링크의상태를 U0 상태로전환할수있는지를확인한다. 이곳에서는설명을위해서 Recovery 상태를생략하도록하겠다. 독자들은특별한설명을하지않 더라도 U1, U2, U3 상태가 U0 상태로전환하기위해서는 LFPS 시그널을거친뒤에반드시 Recovery 상태로먼저전환된후에 U0 상태가된다는사실을기억해길바란다. 6.3.1.1.1 U0 링크활성화상태 완전한동작이가능한링크상태이다. 모든 USB 패킷이송, 수신될수있다. 6.3.1.1.2 U1 링크 Idle( 빠른나가기 ) 상태 링크파트너는각각 U0 에서 U1 상태로의전환을거절하거나수용할수있다. 전환명령은 LGO_U1 링크명령어에의해서요청된다. 거절할때는 LXU, 수용할때는 LAU 링크명령어에의해서대응된 다. U2 상태보다는 U0 상태로빠져나가는시간이빠르다. 다음과같은파라미터가중요하게다루어진다. * U1DevExitLat : 디바이스가 U1 상태에서 U0 상태로전환하는데걸리는시간정보를의미한다. 디바 이스가호스트에게보고한다. * PORT_U1_TIMEOUT : 링크의 Downstream Port 가사용하는타임아웃값으로써, PORT_U1_TIMEOUT 기능을사용하는경우, U0상태의링크는내부적으로타이머를구동한다. 타이머값은 U0상태의링크에서어떤패킷이라도송, 수신이발생하면다시리셋된다. 타이머값이 PORT_U1_TIMEOUT값이되면 Downstream Port 는링크파트너 (Upstream Port) 에게 U1상태로의

전환을명령한다. * U1_Enable : 링크의 Upstream Port 가호스트측으로 U0 상태에서 U1 상태로전환하는요청을발 생시키는기능여부를나타낸다. 표 6-11 U1 상태로진입을요청하는파라미터값 PORT_U1_TIMEOUT U1_Enable 전환요청하는포트 01H FEH 금지됨 Downstream Port FFH 허용됨 Upstream Port 01H FEH 허용됨 DP 또는 UP 0H 또는 FFH 금지됨 사용할수없다 [ 표 6-11] 을보면, PORT_U1_TIMEOUT 값이사용되면서 U1_Enable 기능이허용되면, 링크양쪽파트너는어느쪽이던지 U0상태의링크를 U1상태로전환하는요청을먼저할수있다는것을알수있다. PORT_U1_TIMEOUT 값이사용되면서 U1_Enable 기능이금지되면, U0상태의링크를 U1 상태로전환하는요청은호스트 ( 허브, DP) 에서만하게된다. U1 상태는 U0 상태로전화하거나 U2 상태로전환될수있다. U1 상태는 LFPS(Low Frequency Periodic Signal) 에의해서 U0 상태로전환된다.(4 장참고 ) 예를들어, 링크상태가 U1 상태에있을때, 디바이스가호스트로엔드포인트의준비상태를알리 기위해서 ERDY 패킷을보내고자한다면, 먼저링크의상태가 U0 상태로전환되어져야한다. 이런 경우 LFPS 시그널을사용해서 U0 상태로의전환을요청하게된다. U1 상태는특별한조건에의해서 U2 상태로전환될수있다. 더깊은잠들기상태로전환되는것 을의미한다. 이런조건은 PORT_U2_TIMEOUT 값을링크파트너양쪽이서로기억하고있어야한다. U1상태에진입한상태부터링크파트너양쪽은특별한타이머를사용해야한다. 이타이머는 U1 상태에얼마나체류하고있는지를나타낸다. 이값이 PORT_U2_TIMEOUT 값이되면링크파트너양쪽은별도의패킷교환작업이없이 U2상태로전환한다. 왜냐하면, 이미 U1상태에서는별도의패킷을송, 수신할방법이없기때문이다.

6.3.1.1.3 U2 링크 Idle( 느린나가기 ) 상태 링크파트너는각각 U0 에서 U2 상태로의전환을거절하거나수용할수있다. 전환명령은 LGO_U2 링크명령어에의해서요청된다. 거절할때는 LXU, 수용할때는 LAU 링크명령어에의해서대응된 다. U1 상태보다는 U0 상태로빠져나가는시간이느리다. 다음과같은파라미터가중요하게다루어진다. * U2DevExitLat : 디바이스가 U2 상태에서 U0 상태로전환하는데걸리는시간정보를의미한다. 디바 이스가호스트에게보고한다. * PORT_U2_TIMEOUT : 링크의 Downstream Port 가사용하는타임아웃값으로써, PORT_U2_TIMEOUT 기능을사용하는경우, U0상태의링크는내부적으로타이머를구동한다. 타이머값은 U0상태의링크에서어떤패킷이라도송, 수신이발생하면다시리셋된다. PORT_U1_TIMEOUT 타이머값이사용되지않고, PORT_U2_TIMEOUT 타이머값을사용하는경우, 내부타이머값이 PORT_U2_TIMEOUT 가되면 Downstream Port 는링크파트너 (Upstream Port) 에게 U2상태로의전환을명령한다. 또한, U1상태에서 U2상태로전환하는경우에는링크파트너각각의내부타이머의의해조건이만족되면자동으로 U2상태로전환된다. * U2_Enable : 링크의 Upstream Port 가호스트측으로 U0 상태에서 U2 상태로전환하는요청을발 생시키는기능여부를나타낸다. 표 6-12 U2 상태로진입을요청하는파라미터값 PORT_U2_TIMEOUT U2_Enable 전환요청하는포트 01H FEH 금지됨 Downstream Port FFH 허용됨 Upstream Port 01H FEH 허용됨 DP 또는 UP 0H 또는 FFH 금지됨 사용할수없다 [ 표 6-12] 을보면, PORT_U2_TIMEOUT 값이사용되면서 U2_Enable 기능이허용되면, 링크양쪽파 트너는어느쪽이던지 U0 상태의링크를 U2 상태로전환하는요청을먼저할수있다는것을알 수있다. PORT_U2_TIMEOUT 값이사용되면서 U2_Enable 기능이금지되면, U0 상태의링크를 U2

상태로전환하는요청은호스트 ( 허브, DP) 에서만하게된다. U1 상태는 U2 상태로자동으로전환될수있다. 링크의상태가 U1 상태로진입하면, 링크파트너내부의 U2 타이머가동작을시작한다. 이타이머의 값이 PORT_U2_TIMEOUT 값과같아지면, 링크는자동으로조용히 U1 상태에서 U2 상태로전환된다. U2 상태는 LFPS(Low Frequency Periodic Signal) 에의해서 U0 상태로전환된다.(4 장참고 ) 6.3.1.1.4 U3 링크서스팬드상태 U3 상태는서스팬드 (Suspend) 상태로부른다. 가장깊은전력소비량이적은상태이다. 이상태에 들어간링크는다음과같은일을위해서만전력을사용할수있다. * Upstream Port 는 Warm 리셋시그널이언제든지들어오면감지할수있어야한다. * Upstream Port 는호스트에서요청하는 Wakeup 시그널 (LFPS) 을감지할수있어야한다. * Upstream Port 는원할때 Remote Wakeup 시그널을발생시킬수있어야한다.( 기능을가진경 우 ) * Downstream Port 는필요할때 Warm 리셋시그널을만들수있어야한다. * Downstream Port 는디바이스가제거되는시그널을감지할수있어야한다. * Downstream Port 는디바이스에서요청하는 Remote Wakeup 시그널을감지할수있어야한다. * Downstream Port 는필요할때디바이스로 Wakeup 시그널 (LFPS) 을전송할수있어야한다. U3 상태라하더라도 VBUS 는활성화상태로유지되어져야한다. 다만, 전력소비량을최소화해야 한다. U0 상태에서 U3 상태로전환하는작업은호스트측의소프트웨어에의해서만가능하다. 호스트 소프트웨어는허브에게전용명령어를전송한다. 허브는링크파트너에게 LGO_U3 링크명령어를발 생시킨다. 디바이스측의 Upstream Port 는이와같은 LGO_U3 명령어를거절할수없다.

U3 상태에서 U0 상태로전환하는작업은크게두가지의경우로나뉜다. * 호스트는 U3 상태의링크를 U0 상태로전환하기위해서, 소프트웨어를사용해서허브에게전용 명령어 (SetPortFeature) 를전송한다. 허브는이명령어를받으면, 링크파트너측으로 LFPS 시그널을 사용해서 U0 상태로전환한다. * 디바이스는 U3 상태의링크를 U0 상태로전환하기위해서 LFPS 시그널을전송한뒤, Function Wake Device Notification 패킷 (USB 3 의 Remote Wakeup 기능으로사용됨 ) 을호스트로전송한다. 6.3.1.1.5 링크파워관리에있어서허브의역할 허브는링크파워관리와관련해서다음과같은 3 가지주요한역할을수행해야한다. * 허브는포트의링크파트너 (Upstream Port) 의상태를감시하고있어야한다. 허브는디바이스로부터 U1, U2, U3 상태를 U0 상태로전환하고자한다는요청 (Upstream Port 로부터 ) 이들어오면, 이를받으면자동으로처리하면서동시에허브의 Downstream Port 역시 U0 상태로 전환해야한다 그리고, U0 상태가아닌링크측으로전송해야하는패킷이호스트로부터도착하면패킷이향해야 하는 Downstream Port 를선택하고링크의상태를 U0 상태로전환하도록디바이스측으로요청 한다. * 허브는 U0 상태가아닌링크측으로패킷을전송해야하는경우, 지연관리 (Deferring) 매카니즘을 사용해야한다. 허브는 U0 상태가아닌링크로전달해야하는패킷을호스트로부터받으면, 이런흐름을막지않 고자연스럽게링크의상태를 U0 상태로전환함과동시에호스트가다음작업을진행할수있도 록유도하는지연관리매카니즘을사용한다. 자세한내용은 7 장에서배우도록하자. * 허브는 Downstream Port 의 Inactivity Timer(U1, U2) 를관리해야한다. 호스트의소프트웨어는다음 5 가지인터페이스를사용하여허브의전원관리기능을조절한다.

1) PORT_LINK_STATE Feature 대표적으로 Ux 상태간의전환을요청하는기능이다. 보통 U0->U3, U3->U0 로직접전환하는데 사용된다. U1, U2 에대한전환은타임아웃에의해서수행된다. 2) PORT_REMOTE_WAKE_MASK Feature 링크에연결된파트너측으로부터요청되는 Remote Wakeup 기능을금지하는기능을가지고있다. 3) C_PORT_LINK_STATE Port Change 링크의상태가 U3 상태에서 U0 상태로전환되었는지를확인하는용도로사용되는기능을제공한다. 그림 6-9 허브입장에서 PORT_U1_TIMEOUT vs PORT_U2_TIMEOUT 과상태전환

4) 허브입장에서 PORT_U1_TIMEOUT Feature 링크의상태를 U1 상태로전환하는요청을허브가링크파트너에게할것인지아닌지를결정한다. 이런상태전환이가능한경우에는내부타이머에의해서전환작업이진행된다. 이런상태전환이금지된경우에는조건에따라링크파트너에의해서만전환요청이발생될수있 거나전혀상태전환이불가능한경우가있다.

표 6-13 PORT_U1_TIMEOUT 기능과 U1 상태전환특성 PORT_U1_TIMEOUT U1 전환특성 전환요청 00H 요청, 수용모두금지됨 상관없다 01H FEH 허용됨 지정된타임아웃을사용해서 FFH 수용만허용됨 상관없다 PORT_U1_TIMEOUT 값이 00H 인경우, 해당하는링크는 U1 상태로전환될수없다. PORT_U1_TIMEOUT 값이 FFH 인경우, 해당하는링크는링크파트너가요구하는경우에만 U1 상태 로전환될수있다. 나머지의경우는타임아웃이발생하면 U1 상태로전환요청을할수있다. 5) 허브입장에서 PORT_U2_TIMEOUT Feature 링크의상태를 U2 상태로전환하는요청을허브가링크파트너에게할것인지아닌지를결정한다. 이런상태전환이가능한경우에는내부타이머에의해서전환작업이진행된다. 이런상태전환이금지된경우에는조건에따라링크파트너에의해서만전환요청이발생될수있 거나전혀상태전환이불가능한경우가있다. 표 6-14 PORT_U2_TIMEOUT 기능과 U2 상태전환특성 PORT_U2_TIMEOUT U2 전환특성 전환요청 00H 요청, 수용모두금지됨 상관없다 01H FEH 허용됨 지정된타임아웃을사용해서 FFH 수용만허용됨 상관없다 PORT_U2_TIMEOUT 값이 00H 인경우, 해당하는링크는 U2 상태로전환될수없다. PORT_U2_TIMEOUT 값이 FFH 인경우, 해당하는링크는링크파트너가요구하는경우에만 U0 상태 에서 U2 상태로전환될수있다. 이때, U1 상태에서 U2 상태로전환하는작업은불가능하다.

나머지의경우는타임아웃이발생하면 U2 상태로전환요청을할수있다. 6.3.1.2 디바이스전원관리 (Device Power Management) USB 3 에서전원관리는링크전원관리와디바이스전원관리로구분되지만, 디바이스전원관리 는링크전원관리의 U0 상태와 U3( 서스팬드 ) 상태에서논의되는모든기술적인내용을공유한다. 디바이스전원관리디바이스전원관리는이를지원할수있는하드웨어매카니즘과소프트웨어 의적당한제어아래에서관리된다. 6.3.1.2.1 Function Suspend 하나의디바이스에복수개의펑션 (Function) 을가지고있는복합장치 (Composite Device) 의경우, 각각의펑션이서스팬드상태에들어가는상황을소개하고있다. USB 3 에서는펑션수준의서스팬드를지원한다. 복합장치내의복수개의펑션중에어느한가지만 서스팬드상태로진입한다면, 당연히디바이스의 Upstream Port 는여전히 U0 상태를유지해야한다. 다른펑션들이아직도활성화중인상태이기때문이다. 하지만, 매카니즘적으로볼때, 특정펑션이서스팬드상태에진입한것은인정하기때문에이와같 이서스팬드상태에들어가있는펑션이리쥼요청 (Function Remote Wakeup) 을보낼수있는 TP(Function Wake Device Notification) 를정의하고있다. 펑션이서스팬드에진입하기위해서 FUNCTION_SUSPEND Feature 를사용한다. 이것은또한펑 션 Remote Wakeup 기능을활성화하는용도로도사용된다. 6.3.1.2.2 Device Suspend 디바이스서스팬드는링크상태가 U3 상태로전환되는것을의미한다. 개별적인펑션들의서스팬드 상태의상관없이디바이스는원할때디바이스서스팬드상태로전환될수있다. 6.3.1.2.3 호스트에서요청하는 Suspend 호스트는디바이스를다음과같은순서로서스팬드상태로전환시킬수있다.

* 필요하다면디바이스가원격깨우기기능을사용할수있도록활성화시킨다 * 호스트로부터허브전용명령 (SetPortFeature, PORT_LINK_STATE, U3) 명령어가허브의 Downstream Port 로전달된다. * 허브의 Downstream Port 는 LGO_U3 링크명령어를링크파트너에게전송한다. * 링크파트너 ( 디바이스 ) 는 U3 상태로전환을허용한다는의미로, LAU 링크명령어를허브에게응 답으로전송한다. * 허브의 Downstream Port 는디바이스로 U3 상태로전환한다는신호로서, LPMA 링크명령어를 보낸다. * 링크파트너양쪽은그들의 Transceiver 와 Receiver 를전기적으로 Idle 상태로전환시키고, U3 상 태로전환한다. 하나의허브가가진모든 Downstream Port 의링크 ( 연결된모든디바이스의상태가서스팬드됨 ) 가 서스팬드된다면, 허브의 Upstream Port 는자신의링크를서스팬드상태로전환시킨다. 6.3.1.2.4 호스트에서요청하는 Wakeup 신호 호스트가서스팬드된링크의상태를 U0상태로전환하려면허브전용명령어를사용해서서스팬드된포트측으로 PORT_LINK_STATE(U0) 명령을전송한다. 허브의포트는자신의상태를 U0상태로전환한뒤, 허브에게 C_PORT_LINK_STATE Port Status Change 사실을인터럽트파이프를통해서알린다. 허브가가지고있는다른서스팬드된모든포트의상태를 U0상태로전환하는경우가아니라면, 호스트가요청하던 Wakeup 작업을마친다. 6.3.1.2.5 디바이스에서요청하는 Wakeup 신호 서스팬드 (U3) 된디바이스가요청하는 Wakeup 신호를 Remote Wakeup 신호라고부른다.(U1, U2 상 태에서는 Remote Wakeup 신호를사용하지않는다 ). 이신호는다음과같은순서대로처리된다. * 디바이스는링크파트너에게 LFPS Wakeup 시그널을발생시킨다. * Remote Wakeup 신호는루트허브에게까지전달되어져야하기때문에, 링크파트너 ( 허브 ) 는자 신이받은 LFPS Wakeup 시그널을재귀적인방법으로루트허브에게까지전달한다. 루트허브는 디바이스로부터받은 LPFS 신호를그대로다시처음디바이스로부터 LFPS 신호를받았던외장허

브의 Downstream Port 에게내려보낸다. 호스트에서디바이스까지의모든링크상태가 U0 상태로 전환된다. * 링크상태가 U0 상태로전환되면, 디바이스내의펑션은 Function Wake Device Notification TP 패 킷을호스트로전송요청한다. 6.3.1.3 플랫폼전원관리 LTM(Latency Tolerance Message) 기능은플랫폼이별도의추가비용없이, 전력소비량과성능요구량 간의적절한저울질을할수있도록허용하는기능이다. 통상전력소비량을올리면당연히성능이가장좋아지는것이일반적이다. 하지만, 어느정도성능을포기한다면상당한양의전력소비량을줄일수있는상황이발생될수 있다. 이와같은상황을효과적으로관리할수있도록지원하는방법이 LTM 기능이다. LTM 메시지는 TP 프로토콜형식을사용해서디바이스가호스트로전송한다. Latency Tolerance 라는단어를우리식으로풀면어떤단어로사용하는것이좋을까? 지연을참는정도?, 지연을얼마나참을수있을까? 이런식으로풀어야하는데, 필자는용어에 대한이해만된다면, 영문그대로사용하려고한다. 이때, LTM 메시지속에포함하는파라미터값을 BELT(Best Effort Latency Tolerance) 라고부른다. BELT 는말그대로, 가장효과가좋은 Latency Tolerance 을의미한다. 효과가좋다는것은디바이스입장에서가장효과가좋은값으로이값 (BELT) 을선택했다는뜻이 다. BELT 값은상황에따라서자주바뀐다. 그렇기때문에호스트는디바이스로부터전달되는 BELT 값 을항상감시하고있어야한다. BELT 값의디폴트는 1ms 시간을사용한다. 그림 6-10 BELT 와디바이스

[ 그림 6-10] 을보면 LTM 기능을지원하는디바이스내의 7 개의엔드포인트들이각각의자신의형편 에맞는 LT(Latency Tolerance) 값을제공하고있다. 디바이스는이중에서가장작은값 (125us) 을선 택했다. 이값은호스트에 LTM(BELT) 패킷의형태로전달되고있다. 가장작은값이 BELT 가되는이유는간단하다. LT 값이란디바이스가호스트로특정응답을바라는패킷을송신하는경우, 이에관한응답패킷이 호스트로부터지정된 LT 시간안에만디바이스로전달되면동작에는큰문제가없다. LT 는디바이스 가인정하는호스트의최대지연시간이된다. 그렇다면, [ 그림 6-10] 에서가장큰값 (2ms LT) 을사용하는엔드포인트입장에서는호스트가반응을 최대한 2ms 이내에만해주면동작에는문제가없다는뜻을알린셈이된다. 반면가장작은값 (125us) 을사용하는엔드포인트입장에서는호스트가반응을최대한 125us 이내 에만해주면동작에는문제가없다는뜻을알린셈이되므로, 이중에서작은값이채택되어야두 가지엔드포인트모두에있어서문제가되지않는다. 호스트는 BELT 값을사용해서, 현재디바이스가얼마큼의시간동안별다른반응이없어도무관한 지를확인하여, 필요하다면현재의링크상태를 U1 또는 U2 상태로전환해둘수있다. 이것은보다

적극적인링크에대한전원관리방법이라고볼수있다. 6.3.1.3.1 System Exit Latency 와 BELT 디바이스가 BELT 값을통해서적극적인전원관리를돕는다. 호스트는 System Exit Latency 값을디 바이스로전송하여적당한 BELT 값이계산될수있도록돕는다. System Exit Latency 란? U1SEL 과 U2SEL 을의미한다. 이값은컨트롤전송명령 (SET_SEL) 을통해서 호스트에서디바이스로전달된다. 표 6-15 SET_SEL 명령어와 U1SEL, U2SEL, U1PEL, U2PEL bmrequesttype brequest wvalue windex wlength Data 00000000B SET_SEL 0 0 6 아래를참조 오프셋 이름 의미 0 U1SEL U1 System Exit Latency Time(us) 1 U1PEL U1 Device to Host Exit Latency Time(us) 2 U2SEL U2 System Exit Latency Time(us) 4 U2PEL U2 Device to Host Exit Latency Time(us) [ 표 6-15] 를보자. U1PEL 과 U2PEL 값은각각 U1, U2 상태의디바이스가 U0 상태로전환하고자하는요청을하는 경우, U0 상태로링크가전환되는데소요되는시간을의미한다. 사실링크의상태가 U0 상태로전환되는것도중요하지만, U0상태로전환된뒤에디바이스와호스트가통신을재개할수있어야하는것도중요하다. 이처럼링크의상태가 U0상태가된뒤, 디바이스와호스트가정상적인통신을재개할수있는데까지소요되는시간을 U1SEL, U2SEL 값이라고부른다. 그림 6-11 링크가 U0 상태로전환되고, 디바이스가호스트로부터응답패킷을받는그림

[ 그림 6-11] 을보자. U1PEL 과 U2PEL 이다루는시간은 t1 시간을의미한다. U1SEL 과 U2SEL 이다루는시간은 t1 + t2 + t4 시간을의미한다. 이와같은상황은링크의상태가 U1, U2 상태에있는상황에서디바이스가호스트와통신을재개 할필요가있을때고려해야하는시간정보를보여주고있다. 호스트는 SET_SEL 컨트롤전송명령을사용해서, 이와같은시간정보를디바이스에게전달하고, 디바이스는이값을사용해서적당한 BELT 값을만드는데사용해야한다. BELT = 엔드포인트가실제로기다릴수있는 LT U1SEL(U2SEL) 이라는간단한공식을사용할수있다 ( 사실은더복잡해야하지만여기서는간단하게사용한다 ).

이공식의의미대로라면, 디바이스가최적의호스트반응지연시간 (BELT) 값을계산할때, 반드시이값은디바이스 ( 엔드포인트 ) 가실제로기다릴수있는 LT 값에서 U1SEL혹은 U2SEL 값을빼야한다는것이다. 그렇지않으면호스트가가진지연시간이충분하게고려되지못하여, 실제로디바이스가요구하는 BELT값보다더긴시간의지연상황이발생할수있으며이런경우디바이스는오동작을일으키는상황이될수있다. 호스트가예상하는 BELT값의의미는이와같이엔드포인트가실제로기다릴수있는 LT값을의미하는것이아니라, 이값에서시스템이링크상태 U1, U2에서 U0로전환하는데소요하는지연시간 (System Exit Latency) 를뺀값을기대한다는것을꼭유념해야한다. 6.3.1.3.2 Maximum Exit Latency 와 PING 등시성전송을사용하는경우, 정확한시간에맞추어서전송을해야하기때문에특히버스의전 원공급상태는더중요하게다루어져야한다. 그렇다고항상링크상태를 U0 상태로유지하는것은 전력낭비가크다. 따라서, 적당한시간동안 U1, U2 상태로링크상태를전환하는것이필요하다. 등시성전송을사용하는링크의상태가 U1, U2 상태로들어가지않고일정시간동안 U0 상태를유지 할수있도록사용하는프로토콜이 PING, PING_RESPONSE 프로토콜이다. 호스트가 PING 패킷을디바이스로전송하면, 디바이스는지정된시간안에 PING_RESPONSE 패킷 을호스트로응답해야한다. 이후, 지정된시간혹은호스트가최초로전송하는패킷이발생될때까 지링크상태는 U0 상태를유지하게된다. 호스트가 PING 패킷을디바이스로전송한뒤, 디바이스로부터 PING_RESPONSE 패킷이호스트로 전송되는데까지걸리는지연시간을 Maximum Exit Latency 라고부른다. 호스트가 PING 패킷을디바이스로전송할당시, 링크의상태가 U1, U2 상태였다면링크의상태가 우선 U0 상태로전환된다. 이후에디바이스가 PING 패킷을해석하게된다. 따라서, Maximum Exit Latency 값은이와같이링크의상태가 U1, U2 상태에있는저전력링크상태 를사용하는디바이스측으로 PING 패킷을보낸뒤, 디바이스로부터응답패킷 PING_RESPONSE 을 받을때까지소요될것으로예상되는최대지연시간이된다. Maximum Exit Latency 값은설명을위해서크게 4 가지상태값으로나누어서설명한다. 그림 6-12 PING 과 PING_RESPONSE 사이의시간지연

* Maximum Exit Latency t1(tmel1) tmel1 은 U1, U2 상태의링크를 U0 상태로전환하는데걸리는시간을의미한다. * Maximum Exit Latency t2(tmel2) tmel2 는호스트와디바이스간의연결된외장허브의모든경로를포함해서 PING 패킷이디바이스 로전송되는데걸리는소요시간을의미한다. * Maximum Exit Latency t3(tmel3) tmel3 은 PING 패킷을수신한디바이스가이것을처리해서 PING_RESPONSE 응답패킷을만들어 내는데걸리는시간을의미한다.

* Maximum Exit Latency t4(tmel4) tmel4 는디바이스가호스트로 PING_RESPONSE 패킷을올려보내는데소요되는시간을의미한다. 이시간은 tmel2와비슷한경로를사용하지만, 통상조금더걸릴수있는상황이예상될수있다. 디바이스에서호스트로전송하는모든패킷들은허브의 Upstream Port를공유하기때문에상황에따라서혼잡한트래픽이발생될수있다. 이때문에올라가는패킷들은나름대로우선순위를부여하고있다. DP 와 TP 가함께발생되는경우에는항상 DP 가먼저올라간다. 이런상황으로인해 TP 형태로사용되는 PING_RESPONSE 패킷은잠시전송이지연될수있다. 6.3.2 U1, U2 Exit Latency 시간계산 U1, U2 상태의링크를 U0 상태로전환하는데걸리는시간을계산하는데있어서디바이스 ( 허브 ) 의반응시간정보를사용할수있다. 실제 U1상태의링크를 U0상태로전환한뒤, 링크상의유효한패킷을송, 수신할수있어야하지만 (System Exit Latency), 여기서는이부분을생각하지않고순수하게호스트지연시간을제외하고디바이스와관려된상태전환하는시간을추정해보도록하자. 호스트시스템설계자는이와같은계산방법을통해서대강어느정도시간이소요되어야링크 U1, U2 상태가 U0 상태로전환될수있는지를계산해야한다. 허브와디바이스는각각 U1DEL, U2DEL 값을제공한다. 이값은 Binary Device Object Store(BOS) 디스크립터내의 SuperSpeed Device Capability 디스크립터를통해서호스트에제공한다. 표 6-16 SuperSpeed Device Capability Descriptor 오프셋 필드 크기바이트 값 설명 0 blength 1 숫자 디스크립터크기 1 bdescriptortype 1 상수 DEVICE_CAPABILITY 2 bdevcapabilitytype 1 상수 SUPERSPEED_USB 3 bmattributes 1 비트맵 비트 설명 1 LTM 기능을사용함 나머지사용안함 4 wspeedssupported 2 비트맵 비트 0 LowSpeed 속도 1 FullSpeed 속도 2 HighSpeed 속도

3 SuperSpeed(Gen1) 나머지사용안함 6 bfunctionalitysupport 1 숫자 사용자에게모든기능이허용되는 가장 낮은 속도를 지정함. 보통 wspeedssupported 값을그대로사용함 7 bu1devexitlat 1 숫자 U1 Device Exit Latency. 디바이스가링크 U1 상태를 U0상태로전환하는데소요될것으로추정되는가장긴시간 값 의미 00H 0 01H 1us 이하 02H 2us 이하 03H 3us 이하 04H 4us 이하. 0AH 10us 이하 0BH-FFH 사용안함 8 bu2devexitlat 2 숫자 U2 Device Exit Latency. 디바이스가링크 U2 상태를 U0상태로전환하는데소요될것으로추정되는가장긴시간 값 의미 0000H 0 0001H 1us 이하 0002H 2us 이하 0003H 3us 이하 0004H 4us 이하. 07FFH 2047us 이하 0800H-FFFFH 사용안함 [ 표 6-16] 을보면, bu1devexitlat 값과 bu2devexitlat 값을제공하고있다. 이값이 U1DEL, U2DEL 로사용된다.

그림 6-13 U1, U2 Exit Latency 시간을계산하기위한예시그림 [ 그림 6-13] 을잠시설명하도록한다. 호스트는 2 개의허브포트 (RP1, RP2) 를가지고있다. 이중에 RP2 포트는 Hub1 과연결되어링크 2(Link2) 를구성하고있다. Hub1 은 2 개의허브포트 (DP1, DP2) 를가지고있다. Hub1 의 DP2 포트는 Dev2 와링크 3(Link3) 을구성하고있다. 결국 Dev2 와호스트사이에 Hub1 이존재하는상황이다. 현재 Link2, Link3 는모두 U1( 또는 U2) 상태에있다고가정한다. 6.3.2.1 호스트가 Link2, Link3 를 U0 로전환을요청하는시간계산 호스트가 Dev2 에게패킷을전송하기위해서는 Link2 와 Link3 를모두 U0 상태로전환해야한다. 다음과같은세부시간으로나눈다. * Link2 를 U1->U0 로전환하는데소요되는시간 : MAX( RP2 s U1DEL, Hub1 s U1DEL) * HSD, Host Scheduling Delay. 호스트가패킷을준비해서전송요청하는데소요되는시간

* HHDL, Hub Hdr Decode Latency, 호스트로부터전달받은패킷의 Route String 을해석하여 DP2 포트로패킷을보내도록준비하는지연시간 * Link3 를 U1->U0 로전환하는데소요되는시간 : MAX(Hub1 s U1DEL, Dev2 s U1DEL) 결국전체지연시간은다음과같다. MAX( RP2 s U1DEL, Hub1 s U1DEL) + HSD + HHDL + MAX(Hub1 s U1DEL, Dev2 s U1DEL) MAX(A, B) 는둘중에가장큰값을취한다는뜻이다. 여기서는두개의 U1DEL 값중에서큰값을선 택하는용도로사용되고있다. 가장큰지연시간이선택되는것이당연하다. 6.3.2.2 디바이스 (Dev2) 가 Link3, Link2 를 U0 로전환을요청하는시간계산 디바이스가호스트에게패킷을전송하기위해서는 Link3 와 Link2 를모두 U0 상태로전환해야 한다. 이시간계산은조금주의를필요로하는데, 그것은동시에복수개의작업이진행될수있기 때문이다. 그림 6-14 디바이스 (Dev2) 가 Link3, Link2 를 U0 로전환하는시간

[ 그림 6-14] 를보면, 동시에두가지이상의작업이가능하다는것을알수있다. Hub1은 Dev2로부터 U0상태로의전환명령 (LFPS) 을받으면이때, 이것을 Hub1의 UP로전송한다. 이때지연시간은 HubPort2PortU1EL 로표기한다. HubPort2PortU1EL 시간이지나면, 곧바로 Hub1 의 UP와 RP2와의 Link3의상태가 U0상태로전환하는요청을시작한다. 디바이스에서호스트로전달하는패킷은 Route String을사용하지않기때문에주소해석과관련된별도의추가시간은필요하지않다. Link3 의상태가 U0 상태로전환되기이전에먼저 Link2 의상태가 U0 상태로전환될것이다. 결국최종적으로 Link3, Link2 의상태가 U0 상태로전환되는시간은다음과같이계산된다. MAX( thubport2portu1el, MAX( RP2 s U1DEL, Hub1 s U1DEL), MAX(Hub1 s U1DEL, Dev2 s U1DEL) ) 3 가지의시간중에서가장긴시간이최종적인지연시간으로계산된다. 6.3.3 디바이스가요청하는적극적인전원관리정책 전원관리정책이잘적용되는노트북의경우그렇지않은노트북의경우와비교해서평균 15% 이 상배터리의수명이길다. 따라서보다적극적인전원관리정책이필요하다. 링크의 Downstream Port 와 Upstream Port 는각각 U0 상태에서 U1, U2 상태로전환요청을할수 있다. * Downstream Port 는 Inactivity Timer 를사용해서 U1, U2 상태로전환요청을할수있다. 타임아 웃값은소프트웨어에의해서지정된다. * Upstream Port 는 U2 상태로의전환을위해서 Inactivity Timer 를사용한다. 또한, 추가적인정보 를사용해서보다적극적으로상태전환을요청할수있다. 이번절에서는디바이스가 U0 상태의링크를 U1, U2 상태로전환요청하는정책을배운다. 6.3.3.1 디바이스가 U0 상태의링크를 U1, U2 상태로전환하는데사용되는배경정보 허브의 Downstream Port 가 Inactivity Timer 에의해서전환요청하는작업만기다린다는것은디바 이스가소극적인전원관리정책을펼치는대표적인상황이다.

등시성전송을지원하는디바이스의경우, 서비스인터벌시간내에전송에사용하지않는시간동안 링크상태를 U1 상태로전환하는것은대표적인적극적인전원관리정책을보여준다. 디바이스는다음과같은정보들을사용해서적극적인전원관리정책을세울수있다. * 벌크엔드포인트에사용되는 Packet Pending 플래그 * 인터럽트엔드포인트에사용되는 End Of Burst(EOB) 플래그 * 등시성엔드포인트에사용되는 Last Packet 플래그 (LPF) * 데이터준비가될때까지기다리는데사용하는 NRDY 응답패킷 * U1, U2 의링크상태를 U0 상태로전환하는 U1PEL, U2PEL 시간 (SET_SEL 컨트롤전송명령 ) 6.3.3.2 링크상태를 U0 상태에서 U1, U2 상태로전환하는조건 디바이스는자신이가진모든엔드포인트의상태가 Idle 상태가되면, 링크상태를 U1 또는 U2 상 태로전환요청할수있다. 만일디바이스가보다오랫동안데이터통신을하지않는경우로예측된다면, 디바이스는링크상 태를 U1 상태보다는 U2 상태로전환할수도있다. 디바이스가 U1 상태혹은 U2 상태중에어느상태로전환요청할것인지는당시에호스트가전달해준 U1PEL, U2PEL 값을참고할수있다. 물론, 디바이스는 U1_Enable, U2_Enable (Feature Selector) 기 능이활성화되어있어야전환요청이가능하다. 6.3.3.2.1 컨트롤엔드포인트 디바이스는컨트롤엔드포인트에대해다음과같은조건이만족되면 Idle 상태로간주한다. * 디바이스가셋업 (Configured) 되어있다 * 디바이스가컨트롤전송의데이터 Stage 단계에있지않다 * NRDY 패킷이전송되었거나, 호스트로부터받은마지막 ACK 패킷의 Packet Pending 플래그가 0 인상태에있다 * 디바이스가 ERDY 패킷을호스트로전송할계획이없다

6.3.3.2.2 벌크엔드포인트 디바이스는벌크엔드포인트에대해다음과같은조건이만족되면 Idle 상태로간주한다. * NRDY 패킷이전송되었거나, 호스트로부터받은마지막 ACK 패킷의 Packet Pending 플래그가 0 인상태에있다 * 디바이스가 ERDY 패킷을호스트로전송할계획이없다 6.3.3.2.3 인터럽트엔드포인트 디바이스는인터럽트엔드포인트에대해다음과같은조건이만족되면 Idle 상태로간주한다. * NRDY 패킷이전송되었거나, 호스트로부터받은마지막 ACK 패킷의 Packet Pending 플래그가 0 인상태에있다 * 디바이스가 ERDY 패킷을호스트로전송할계획이없다 6.3.3.2.4 등시성엔드포인트 Last Packet 플래그가사용되고서비스인터벌시간에전송할데이터를모두전송하면다음전송 이발생될때까지링크상태를 U1 상태로전환할수있다. 너무잦은 U1 상태와 U0 상태의전환은등시성엔드포인트의실시간전송율을낮추는요인으로작 용될수있다. 따라서디바이스는 PING 패킷을사용해서필요한경우, 링크의상태를 U0 상태로 유지할필요가있다. 6.3.3.2.5 타임스탬프 (ITP) 패킷사용 디바이스가 ITP 패킷을사용하려는경우, 링크의상태가 U0 상태가되어야 ITP 패킷이전송되기때 문에디바이스는링크의상태를 U1, U2 상태에서 U0 상태로전환하는작업이필요하다. 이때, 버스인터벌 (125us) 시간을고려해서, 다음버스인터벌시간이전에 U0 상태로전환해야다음 버스인터벌경계에서 ITP 패킷을받을수있다.

6.3.4 Latency Tolerance Message(LTM) 의실제구현예시 우리는보통컴퓨터가 Idle 상태에서대기중이라하더라도디바이스는언제든지서비스를수행할 준비가되어있기를원한다. 이와같은상황은전원을불필요하게낭비하는요인이될수도있다. LTM 은 USB 디바이스가서비스를수행하는준비상태을조금더가지더라도전원낭비를줄이는 메카니즘을제공한다. 성능과전원사용량은비례하지만, 전원을줄이는양에비해성능이조금만떨어진다면 LTM 은효 과적인전원관리방법을제공하고있다고할수있겠다. LTM 은별도의하드웨어를구성할필요가없이, USB 가사용하는프로토콜을그대로활용하면서 이기능을사용할수있다. LTM 을활용하는방법은스팩에준하지않은여러가지모델로나타날수있다. 이번절에서는 LTM 을활용하는특별한예재모델을소개함으로서, 현실적으로 LTM 이어떤식으 로모델링되어응용될수있는지를소개하려고한다. 독자들은이방식을참고로하여, 자신만의특별한 LTM 모델을구상해보는것도재미있는일이될 것이다. 이번에제시하는모델은두개의 LTM 상태 (LTM-state) 를소개한다. 이상태는각각자신들에맞는 BELT(Best Effort Latency Tolerance) 값을사용한다. 이들은 LTM-active 와 LTM-idle 상태이다. 두가지상태모두전원을완전하게사용하는상태는아 니다.

( 호스트의반응지연혹은반응지연시간이라는단어를사용하는것이어쩐지조금어색하다. 따라서, 영문그대로 Latency Tolerance 또는 LT 라고사용하겠다 ) 6.3.4.1 Device 상태머쉰구현예재 두가지 LTM 상태를정의한다. LT-idle 상태 : 디바이스가 idle 상태이고비교적긴 LT 을사용할수있다. LT-active 상태 : 디바이스가호스트와데이타통신을해야할필요가있다고결정한상태이고비 교적짧은 LT 를사용한다. 그림 6-15 LT 상태다이아그램

LT-idle 상태에서 LTM BELT 값의최소값은 1 ms 로정한다. LT-active 상태에서 LTM BELT 값의최소값은 125us 로정한다. 6.3.4.1.1 LT 상태변화 디바이스는 LT 상태가바뀌는상황이되면, 가능한빠른시간안에수정된 BELT 값을담은 LTM TP 를만들어서호스트로전송해야한다. 6.3.4.1.1.1 LT-idle 상태에서 LT-active 상태로변화 디바이스가벌크혹은인터럽트전송등을해야할필요가있을때, LT-idle 상태는 LT-active 상태로 변한다.LT-active 상태로전환 다음상황에서이와같은상황이발생될수있다. * USB 이동식디스크를장시간사용하고있지않을때, 호스트가벌크 OUT 트랜잭션 (Packet Pending 비트가 TRUE) 을시작한다. 이런경우, 디바이스는 LT-idle 상태를 LT-active 상태로전환하 고, 곧바로적당한 BELT 값을호스트로전송한다. * 네트워크카드가장시간사용되지않고있다가, 특정데이타가외부로부터카드로들어왔다. 카드는호스트와통신을할필요가있기때문에, 디바이스의현재상태 LT-idle 를 LT-active 상태 로전환한다음, 호스트로 ERDY 패킷과함께 BELT 값을호스트로보낸다. * 멀티터치 Digitizer 가장시간사용되지않고있다가, 사용자가터치를건드렸다. 터치는데이타가 발생했기때문에, 디바이스의현재상태 LT-idle 을 LT-active 로바꾼뒤, ERDY 패킷과함께 BELT 값 을호스트로보낸다. 디바이스가 LT-idle 상태에서 LT-active 상태로전환할때, 디바이스는호스트로적당한 BELT 값을 담은 LTM TP 를보낸다.

6.3.4.1.1.2 LT-active 상태에서 LT-idle 상태로변화 디바이스는장시간사용되지않거나, 이를예상할때, 디바이스의현재상태 LT-active 를 LT-idle 상 태로전환한다. 상태를전환한뒤, 이에맞는적당한 BELT 값을 TP 에담아서호스트로전송한다. 필요에따라서링 크의상태를 U1 또는 U2 상태로전환할수도있다. 링크의상태가이미 U1 상태에있는경우, U2 상태로전환하려는상황이발생할때는다음과같은 순서를따른다. 1) 링크의상태를 U1 상태에서 U0 상태로전환한다 (TP 를보내기위해서 ) 2) U0 상태에서, 적당한 BELT 값을준비해서호스트로전달한다 3) 링크의상태를 U0 상태에서 U2 상태로전환한다 6.4 USB Type-C 와전원공급 USB 3.1 표준에서사용되는표준연결커넥터 (Connector) 보다작고얇고강인한커넥터와케이블 을제공하는 USB Type-C 스팩을소개하려고한다. 커넥터는리셉터클 (Receptacle) 과플러그 (Plug) 를포함하는용어로사용된다. USB Type-C 환경아래에서많이사용되는전원공급프로토콜은 USB Power Delivery Specification 2.0( 줄여서 USB PD 2.0) 이다. USB PD 아래에서최대전압 50V, 최대전류 5A 까지공급하는 USB 환경이가능하다. 6.4.1 소개 USB Type-C 는 3 가지의구성요소를정의한다. * USB 2.0, USB 3.1 을지원하는 USB Type-C 리셉터클 * USB Full Feature Type-C 플러그 * USB 2.0 Type-C 플러그 본절에서는 USB 2.0 Type-C 플러그와관련된내용은설명을생략하도록하겠다.

그림 6-16 USB Type-C 리셉터클인터페이스 ( 전면부에서바라볼때 ) [ 그림 6-16] 을보면, Type-C 리셉터클의핀 (Pin) 용도를알수있다. 사용자가케이블의플러그를리셉터클에연결할때, 180 도회전이가능하다. 이와같은이유는리 셉터클의핀의의미가정의되어있는모습이서로대칭적이기때문에가능하다. 주의할점은동시에이런대칭적인핀이함께사용되는경우는없다는점이다. TX1+, TX1- 가사용되면항상 TX2+, TX2-, RX2+, RX2- 가사용되지않는다. RX1+, RX1- 가사용되면항상 RX2+, RX2-,TX2+, TX2- 가사용되지않는다. 결국총 24 개의핀이존재하지만해당하는핀이동시에모두사용될수없다는점이다. 어떤핀이사용될것인지는연결하는케이블과케이블끝에붙어있는플러그와플러그에연결되는 상대방파트너리셉터클의연결상태에따라서결정된다. SBU1, SBU2 핀은 Side Band 로불리우며, 보조로사용될수있다.

그림 6-17 USB Full Feature Type-C 플러그인터페이스 ( 전면부에서바라볼때 ) [ 그림 6-17] 을보면, 리셉터클에연결하는플러그의핀용도를알수있다. 리셉터클은회전이불가능하지만, 플러그는회전이가능하다는점에서플러그에만있는몇가지 특징이존재한다. * B6, B7 핀은사용되지않는다. 반면에여기에대칭되는 A6, A7 핀만사용된다. * B5 핀은 VConn (VConnector) 의의미를가진다. 이곳에대칭되는 A5 핀은 CC 의의미로사용된 다. 원래이곳은 [ 그림 6-16] 을보면, CC1, CC2 로사용되는리셉터클이대응되는핀이다. 이렇게두가지의특징을조금정확하게이해할필요가있다. CC 핀은 Configuration Channel 의약어로사용된다. 리셉터클은두개의 CC 핀을준비하고있지만, 케이블의끝에달려있는플러그는하나의 CC 핀만사용한다. 반면사용되지않는플러그의나머지 핀은 VConn 의용도로사용된다.

이와같은특징은회전이가능하다는케이블의특성으로인해, 원래방향인지아니면회전한것인 지를구분하기위한방법이필요하기때문에특정핀 (CC) 을사용해서이와같은상황을판단하기 위해서이다. 플러그의 A5(CC) 핀이연결되는리셉터클의해당하는핀이 A5(CC1) 인경우, 리셉터클의 B5 핀 (CC2) 은의미가달라진다. 이곳에연결되는플러그의 B5 핀의의미가 VConn 이기때문이다. 결국리셉 터클의 B5 핀은 VConn 의역할로사용되도록조정된다. 반면에플러그의 A5(CC) 핀이연결되는리셉터클의해당하는핀이 B5(CC2) 인경우, 리셉터클의 A5 핀 (CC1) 은의미가달라진다. 이곳에연결되는플러그의 B5 핀의의미가 VConn 이기때문이다. 결 국리셉터클의 A5 핀은 VConn 의역할로사용되도록조정된다. 6.4.2 Configuration 과정 USB Type-C 에서사용되는 CC(Configuration Channel) 핀은크게 5 가지목적에서사용된다. * DFP(Downstream Facing Port) 와 UFP(Upstream Facing Port) 간의연결과제거검출과정 * 플러그의방향이바뀌거나케이블이꼬인상태로리셉터클에연결되는상태를검출하는과정 * 호스트와디바이스의역할결정과전원공급자를검출하는과정 호스트와디바이스의역할을결정하는데는다음과같은 3 가지모드가존재할수있다. 1) 호스트전용모드 플러그가연결되는양쪽포트중어느하나의포트가호스트 (DFP) 로사용 되도록정해지는모드이다 2) 디바이스전용모드 플러그가연결되는양쪽포트중어느하나의포트가디바이스 (UFP) 로 사용되도록정해지는모드이다. 3) 양쪽모드 (Dual Role) 플러그가연결되는양쪽포트중어느하나의포트가양쪽모드로사용 될수있는모드이다. 처음플러그가리셉터클에연결될때, 사용되는 CC 핀의생산자 (Source) 역할을담당하는곳이호 스트 (DFP) 가된다. 소비자 (Sink) 역할을담당하는리셉터클이디바이스 (UFP) 가된다.

호스트전용모드, 디바이스전용모드에서는해당하는포트의 CC 핀의상태가생산자인지소비 자인지가이미결정된상태를나타낸다. 그림 6-18 DRP(Dual Role Port) 포트가모드에따라서 CC1, CC2 를사용하는모습 [ 그림 6-18] 처럼, 이중역할을수행하는포트는 Rp(PullUp 저항 ) 에 CC 를연결하면데이터호스트, Rd(PullDown 저항 ) 에 CC 를연결하면데이터디바이스로동작하게된다. * USB Type-C VBus 전류검출과정 * USB PD(Power Delivery) 프로토콜의적용과정 가장많은전력을호스트가디바이스에게제공할수있는프로토콜로서, CC 핀혹은 VBus(USB 2.0) 핀을사용해서전력을제공하는호스트와소비하는디바이스를결정하는과정이다.

USB PD 프로토콜을사용하면, 다음과같은역할을결정한다. 1) 누가데이터호스트 (DFP) 인가? 누가데이터디바이스 (UFP) 인가? 누가 USB 호스트의역할을수행하는가를결정한다. 이와같은역할은동적으로서로바뀔수있다. 이것을데이터역할스왑 (Data Role Swap) 이라고부른다. 2) 누가전원 ( 전원공급 ) 호스트 (Power Source) 인가? 누가전원소비자 (Power Sink) 인가? VBus 를제공하는측을결정한다. USB Type-C 에서는데이터호스트와전원호스트가동일할필요 는없다. 이와같은역할은동적으로서로바뀔수있다. 이것을전원역할스왑 (Power Role Swap) 이라고부른다. 3) 누가 VConn 전원 ( 전원공급 ) 호스트 (Power Source) 인가? 누가 VConn 전원소비자 (Power Sink) 인가? VConn 을제공하는측을결정한다. USB Type-C 에서는플러그 (Plug) 가소비하는전원을 VConn 이라고부른다. 이것은 VBus와다른개념의전원공급을제공한다. USB Type-C 를지원하는케이블의플러그 (Plug) 는내부에컨트롤러를내장하고있는데, 이와같은컨트롤러가동작할수있도록지원하는전력공급원을 VConn 이라고부른다. 이와같이컨트롤러가내장된케이블을 Electronically Marked Cable 이라고부른다. 표 6-17 전원공급상태의옵션 동작모드 명목상의전원 최대전류 USB 2.0 5V 500mA USB 3.0 5V 900mA USB BC(Battery Charging) 1.2 5V 최대 1.5A USB Type-C Current@1.5A 5V 1.5A USB Type-C Current@3.0A 5V 3A USB PD 20V 까지프로그래밍가능 5A 까지프로그래밍가능 [ 표 6-17] 에따르면, USB 3.0 표준에있어서전원 (5V) 와최대전류 (900mA) 를곱하면, 전력량 4.5W 가된다. 이것이표면상최대공급전력량이된다. 그외나머지동작모드는이보다더많은전력량전제공하는것을허용하고있다. USB PD모드에서제공하는최대전원 (20V), 최대전류 (5A) 는최대공급전력량 100W 가된다. 보통 LCD 모니터 (30W), 타블렛 PC(1W) 의전력을소비하는것을

보면대단한용량임에는틀림없다. 하나의 PC 가 USB PD 를사용해서, 직렬로두대의모니터 (30W * 2 = 60W) 를충분히구동시킬수 있다는결론을가진다. 6.4.3 USB PD(Power Delivery) 좁은의미로 USB PD를설명하면, USB Type-C 의 CC(Configuration Channel) 핀또는 VBus핀을데이터핀처럼사용해서커넥터양쪽끝에연결된포트중누가전원을공급할것인가를결정하는프로토콜이다. 넓은의미로는기존에사용되는모든 USB 인프라 (Infra) 의수정을최소화하면서가장적절한전원공급방법을호스트와디바이스가협상할수있도록허용하는프로토콜을의미한다. USB 에서전원공급이가능한디바이스는 USB 호스트, USB 디바이스, USB 허브그리고 USB 충전 기가있다. 그림 6-19 USB 에서전원공급이가능한디바이스

6.4.3.1 플러그 (Plug) 프로토콜개요 원어그대로 Electronically Marked Cable 라는용어가사용된다. 이것은 USB Type-C 케이블의특 성을 잘보여주는것으로서, 케이블양쪽에플러그내부에전원공급에의해서동작하는 IC(Integrated Circuit) 가내장된경우를의미한다. 이와같이플러그내부에 IC 를내장하고있기때 문에 USB Type-C 에서는이와같은 IC 를위해서별도의전원을공급해주어야한다. 이기능이 VConn 핀에의해서수행된다. 플러그프로토콜을 SOP*(Start Of Packet) 라고부른다. SOP* 는대상의종류에따라서 SOP, SOP, SOP 로구분된다. SOP 는 DFP(Downstream Facing Port) 와 UFP(Upstream Facing Port) 간의프로토콜을규정한다. SOP 는 DFP 또는 VConn 을공급하는공급자 (Source) 와리셉터클에연결된플러그와의프로토콜을 규정한다. SOP 는 DFP 또는 VConn 을공급하는공급자와케이블의가장끝단의플러그와의프로토콜을규정 한다. 그림 6-20 USB 에서전원공급이가능한디바이스

[ 그림 6-20] 을보면 SOP, SOP, SOP ( 합쳐서 SOP*) 의대상을잘보여주고있다. 이들프로토콜은 CC 핀또는 VBus(USB 2.0) 을데이터경로로사용하는프로토콜을규정한다. SOP* 프로토콜에서사용되는패킷은물리층 (Physical Layer) 과프로토콜층 (Protocol Layer) 에서다 루는각각의데이터를규정하고있다. 이중에서물리층에서수행하는수신작업을위한 Training 작업에사용되는데이터 (Preemable) 를 제외한나머지모든데이터가 4b5b 알고리즘에의해서인코딩된다. 그림 6-21 USB Power Delivery Packet 포멧

표 6-18 4b5b 심볼인코딩테이블 심볼이름 4b 5b 설명 0 0000 11110 16진수 0 1 0001 01001 16진수 1 2 0010 10100 16진수 2 3 0011 10101 16진수 3 4 0100 01010 16진수 4 5 0101 01011 16진수 5 6 0110 01110 16진수 6 7 0111 01111 16진수 7 8 1000 10010 16진수 8 9 1001 10011 16진수 9 A 1010 10110 16진수 A B 1011 10111 16진수 B C 1100 11010 16진수 C

D 1101 11011 16진수 D E 1110 11100 16진수 E F 1111 11101 16진수 F Sync-1 K-code 11000 시작동기 #1 Sync-2 K-code 10001 시작동기 #2 RST-1 K-code 00111 Hard 리셋 #1 RST-2 K-code 11001 Hard 리셋 #2 EOP K-code 01101 End Of Packet Sync-3 K-code 00110 시작동기 #3 [ 표 6-18] 은어떻게 4b 의문자를 5b 의데이터로변환하는지를보여주고있다. 이중에서 SOP* 에사용되는시작동기문자는 Sync-1, Sync-2, Sync-3 이다. 이들은다음과같은형 태로조합되어 4 개의문자로함께사용된다. 표 6-19 SOP 순서열문자 K-code 순서테이블속에 K-code 문자 1 Sync-1 2 Sync-1 3 Sync-1 4 Sync-2 SOP 신호는 4 개의문자 (Sync-1, Sync-1, Sync-1, Sync-2) 가순서대로이어지는형태의데이터를사 용한다. 표 6-20 SOP 순서열문자 K-code 순서테이블속에 K-code 문자 1 Sync-1 2 Sync-1 3 Sync-3 4 Sync-3

SOP 신호는 4 개의문자 (Sync-1, Sync-1, Sync-3, Sync-3) 가순서대로이어지는형태의데이터를사 용한다. 표 6-21 SOP 순서열문자 K-code 순서테이블속에 K-code 문자 1 Sync-1 2 Sync-3 3 Sync-1 4 Sync-3 SOP 신호는 4 개의문자 (Sync-1, Sync-3, Sync-1, Sync-3) 가순서대로이어지는형태의데이터를 사용한다. 그외에 Hard 리셋 (RST-1, RST-1, RST-1, RST-2), 케이블리셋 (RST-1, Sync-1, RST-1, Sync-3) 등의명 령어도사용된다. 이들은 CRC 와 EOP 가사용되지않는다. 사용되는모든데이터시그널은 CC 핀또는 VBus 핀을데이터처럼사용하게되는데, 이들은각 각 Binary Frequency Shift Keyed(BFSK), BMC(Biphase Mark Coding) 알고리즘을사용해서인코딩된 다. 관련된설명은생략하도록하겠다. 6.4.3.2 디바이스정책 (Device Policy) 과정책엔진 (Policy Engine)

그림 6-22 USB Power Delivery 프로토콜스택 [ 그림 6-22] 를보자. 디바이스정책관리자 (Device Policy Manager) 는포트를위한정책엔진과의인터페이스를제공한다. 포트에대한로칼정책을관리하고, 포트에케이블이연결되는상황을감시한다. 전원공급에있어 서공급자포트와소비자포트를제어한다. 디바이스정책관리자가공급자포트를관리하는경우, 공급자포트를위한전원공급을관리한다. 디바이스정책관리자가소비자포트를관리하는경우, 소비자포트를위한전원소비정보를제공한 다. 정책엔진 (Policy Engine) 은각각의포트에대한로칼정책을구현한다. 이과정은프로토콜층이가 진메시지교환기능을사용한다. 프로토콜 (Protocol) 층은 DFP 와 UFP 간의메시지교환을책임진다.

물리 (Physical) 층은데이터시그널에대한인코딩과전송을책임진다. 6.4.3.2.1 정책엔진과메시지시퀀스 (Message Sequence) 그림 6-23 기본적인메시지교환방식 [ 그림 6-23] 을보자. 메시지요청측의정책엔진 (Policy Engine) 은프로토콜 (Protocol) 층으로 Send Message 명령을사용해서메시지전송을요청한다. 이요청은수신측의프로토콜층으로전송된다. 이렇게전송된메시지는메시지수신측의정책엔진에게전달된다. 이어서, 메시지를잘받았다는 GoodCRC 응답패킷이전송된다. 이것은메시지를잘받았다는의미이지, 요청한메시지를처리했다는뜻이아니다. 이와같은메시지전달과정중에메시지송신프로토콜층은 CRCReceiveTimer 타이머를설치하여, 응답시간까지기다리는작업을수행한다. 또한, 메시지전달이성공하면내부적으로유지하는 MessageIDCounter 값을증가시킨다. 메시지수신프로토콜층은전달받은메시지내부의

MessageID 값을보관한다. 이하의설명에서는전원을공급하는공급자를소스 (Source) 라고부르고, 소비하는소비자를싱크 (Sink) 라고부르도록하겠다. 앞으로보여주는과정들은간단하게메시지가전달되는모습만보여주는방법으로설명하도록하 겠다. 6.4.3.2.2 전원공급협상 (Power Negotiation) 그림 6-24 전원공급협상과정 [ 그림 6-24] 를보자. Source 와 Sink 간의전원공급을위한협상과정은다음으로구분된다. 1) Source 는자신의전원특성정보 (Source_Capabilities) 를위한 Capabilities 메시지를 Sink 로전송 한다.

2) Sink 는특성정보를확인하고, 자신이사용하려는전원공급수준을선택하여 Request 메시지를 Source 로전송한다. 3) Source 는수신한 Request 메시지의내용을확인하고, 수용하겠다는뜻의 Accept 메시지를 Sink 측으로전송한다. 4) Source 는 Sink 가요구했던전원공급수준으로현재상태를전환하고 Sink 로 PS_RDY 메시지를 전송한다. 5) Sink 는새로운전원공급수준을사용하기시작한다. 6.4.3.2.3 Soft 리셋 (Soft Reset) 그림 6-25 Soft 리셋과정 [ 그림 6-25] 를보자. Reset 요청자와수신자간의 Soft 리셋과정은다음으로구분된다.

1) 요청자정책엔진은프로토콜층으로 Soft_Reset 메시지를전송하도록요청한다. 2) 프로토콜은내부에서관리하는 MessageIDCounter 변수와 RetryCounter 변수값을초기화한다. 3) 프로토콜은상대방측으로 Soft_Reset 메시지를전송한다. 4) 수신자는 GoodSRC 응답메시지를송신자측으로전송한다. 5) Reset 수신자는송신자가요청했던메시지를수락한다는의미로 Accept 메시지를 Reset 송신자 로전송한다. 6) 송신자는 Accept 메시지를잘받았다는의미로 GoodCRC 응답메시지를 Reset 수신자에게전 송한다. 6.4.3.2.4 Hard 리셋 (Hard Reset) Hard 리셋명령은 USB Power Delivery 의동작상태를처음상태로되돌린다. 이와같은상태는 Dual Role의경우, 디폴트 Role로전환하는결과를가져오고, 디폴트전원, 전류등의공급및소비상태로전환한다. 이와같은리셋은 Source측에서요청하는경우와 Sink측에서요청하는경우로나뉜다.

그림 6-26 Hard 리셋과정 (Source 가요청하는경우 ) [ 그림 6-26] 를보자. Reset 요청자 (Source) 와수신자 (Sink) 간의리셋과정은다음으로구분된다. 1) 요청자정책엔진은프로토콜층으로 Hard_Reset 메시지를전송하도록요청한다. 또한, 내부적으로 NoResponseTimer 타이머루틴을설정한다. 그리고정책관리자에게현재전원공급상태를 USB Default 동작을위한상태로초기화하도록요청한다. 또한, 사용되는커넥터가 USB Type-C 이고 VConn 이사용되는상태였다면, VConn 의전원공급을끄도록요청한다. 2) 프로토콜은내부에서관리하는 MessageIDCounter 변수와 RetryCounter 변수값을초기화한다. 3) 프로토콜은물리측으로 Hard_Reset 메시지를전송한다. 4) 요청자측의물리층은 Hard_Reset 메시지를상대방물리층으로전송한다. 이어서채널사용을금 지 (Disable) 시킨다. 이것은이후 Hard_Reset_Complete 메시지가사용될때까지유지된다. 5) 이와같은작업은수신자측에서도마찬가지로이루어진다.

6) 수신자정책엔진은송신자정책엔진과마찬가지로초기화작업을수행한뒤, Power_Sink_Reset 요청을프로토콜층으로보낸다. 이명령은수신자측의물리층까지만전송하는명령으로 Hard_Reset_Complete 메시지가사용된다. 물리층은금지된채널사용을다시허용시킨다. 7) 송신자는적당한시간이지난뒤, 전원공급기 (Power Supply) 의상태가초기화되면, 송신자의물리층까지전송할 Power_Supply_Reset 명령을발생시킨다. 이명령은 Hard_Reset_Complete 메시지형태로물리층까지만전송된다. 이메시지에의해서물리층은금지된채널사용을다시허용한다. Hard 리셋과정이후에는전원공급협상과정이이어질수있다. 그림 6-27 Hard 리셋과정 (Sink 가요청하는경우 ) [ 그림 6-27] 를보자. Reset 요청자 (Sink) 와수신자 (Source) 간의리셋과정은 [ 그림 6-26] 의과정과방 향만반대인동일한과정으로진행된다.

6.4.3.2.5 Type-A/B 관련메시지처리순서 USB Power Delivery 는 USB Type-C 뿐만아니라이전스팩을사용하는 USB 2.0 도지원된다. 정책엔진은 USB 2.0 을사용하는경우를따로정의하고있다. USB 2.0 에서 Power Delivery 데이터 는 VBus 핀을사용한다. 6.4.3.2.5.1 Type-A/B 전원공급역할교환 (Power Role Swap) 전원공급자 (Power Source) 를결정하는프로토콜을보여주고있다. 이프로토콜은 USB 버스의 VBus 전원을제공하는공급자를결정한다. 또한, 전원공급자의역할을교환하기도한다. 전원공급 자는전원소비자 (Power Sink), 전원소비자는전원공급자가된다. 6.4.3.2.5.1.1 이어지는전원협상이없는 Type-A/B 전원공급역할교환 (Source 가요청하는 ) 전원공급역할을교환한뒤, 별다른전원협상을하지않는프로토콜을보여주고있다.

그림 6-28 전원공급역할교환과정 (Source 가요청하는경우, 이어지는전원협상이없다 ) [ 그림 6-28] 를보자. 요청자가현재전원공급자이다. 요청자는전원공급자역할을교환하기를요청 하는그림이다. 1) 요청자 (Source) 는 PR_Swap (Power Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자 (Sink) 는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미 이다. 3) 수신자는 Accept 메시지를송신자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 요청자는 PD_RDY 메시지를수신자에게전송한다. 요청자는 VBus 의전원은최소화시킨다. 요청자가전원소비자가되었다. 6) 수신자는 GoodCRC 응답메시지를요청자에게전송한다.

7) 수신자는 PD_RDY 메시지를요청자에게전송한다. 수신자는 VBus 의전원을최대화시킨다. 수신자가전원공급자가되었다. 8) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 6.4.3.2.5.1.2 이어지는전원협상이없는 Type-A/B 전원공급역할교환 (Sink 가요청하는 ) 전원공급역할을교환한뒤, 별다른전원협상을하지않는프로토콜을보여주고있다. 그림 6-29 전원공급역할교환과정 (Sink) 가요청하는경우, 이어지는전원협상이없다 ) [ 그림 6-29] 를보자. 요청자가현재전원소비자이다. 요청자는전원공급자역할을교환하기를요청 하는그림이다.

1) 요청자 (Sink) 는 PR_Swap (Power Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자 (Source) 는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의 미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 수신자는 PD_RDY 메시지를요청자에게전송한다. 수신자는 VBus 의전원을최소화시킨다. 수신자가전원소비자가되었다. 6) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 7) 요청자는 PD_RDY 메시지를수신자에게전송한다. 요청자는 VBus 의전원을최대화시킨다. 요청자가전원공급자가되었다. 8) 수신자는 GoodCRC 응답메시지를수신자에게전송한다. 6.4.3.2.5.1.3 Source 가요청하는 Hard 리셋과 Type-A/B 전원공급역할교환 Hard 리셋메시지를수행할때, 전원공급자역할이이전에이미스왑 (Swap) 된상태였다면, 원래의 디폴트상태로전환된다.

그림 6-30 Source 가요청하는 Hard 리셋과함께수행되는전원공급역할교환과정 1) 요청자 (Source) 는 Hard_Reset 메시지를수신자에게전송한다. 2) Hard_Reset 메시지가전달되는과정중에요청자와수신자측의물리층의동작이금지된다. 3) 요청자와수신자 (Sink) 는각각전원공급역할을스왑 (Swap) 한다. 디폴트전원공급역할자가결정 된다. 4) 수신자는전원공급자의역할을, 요청자는전원소비자의역할을수행한다. 5) 요청자와수신자는각각 Hard_Reset_Complete 메시지를통해서모든준비를마쳤음을각각의 물리층에게알린다. 6) 각각의물리층의동작이재개된다.

그림 6-31 Source 가요청하는 Hard 리셋과함께수행되는전원공급역할교환과정 Hard 리셋메시지를수행할때, 전원공급자역할이이전에이미스왑 (Swap) 된상태였다면, 원래의 디폴트상태로전환된다. 1) 요청자 (Sink) 는 Hard_Reset 메시지를수신자에게전송한다. 2) Hard_Reset 메시지가전달되는과정중에요청자와수신자측의물리층의동작이금지된다. 3) 요청자와수신자 (Source) 는각각전원공급역할을스왑 (Swap) 한다. 디폴트전원공급역할자가결 정된다. 4) 요청자는전원공급자의역할을, 수신자는전원소비자의역할을수행한다. 5) 요청자와수신자는각각 Hard_Reset_Complete 메시지를통해서모든준비를마쳤음을각각의 물리층에게알린다. 6) 각각의물리층의동작이재개된다.

6.4.3.2.6 Type-C 관련메시지처리순서 USB Type-C 에서 USB Power Delivery 데이터는 CC(Configuration Channel) 핀을사용한다. 정상동작중에각각의포트측의리셉터클 CC 핀에연결되는저항은전원공급자의경우, 풀업저항 (Rp), 전원소비자의경우, 풀다운저항 (Rd) 을사용한다. 이런연결상태를스왑 (Swap) 할수있는경 우전원공급자역할스왑기능을사용할수있다. Type-C 메시지교환은전원공급자의역할을교환하는메시지 (Power Role Swap), VConn 전원공급자 의역할을교환하는메시지 (VConn Role Swap) 그리고 Data 역할을교환하는메시지 (Data Role Swap) 등이존재한다. 6.4.3.2.6.1 Source 측에서요청하는 Type-C 전원공급역할교환 (Power Role Swap) 그림 6-32 Source 가요청하는전원공급역할교환과정

[ 그림 6-32] 를보자. 요청자가현재전원공급자이다. 요청자는전원공급자역할을교환하기를요청 하는그림이다. 1) 요청자 (Source) 는 PR_Swap (Power Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자 (Sink) 는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미 이다. 3) 수신자는 Accept 메시지를송신자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 요청자는 PD_RDY 메시지를수신자에게전송한다. 요청자는 VBus 의전원은최소화시킨다. 요청자가전원소비자가되었다. 리셉터클의 CC 핀은풀다운저항이연결된다. 6) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 7) 수신자는 PD_RDY 메시지를요청자에게전송한다. 수신자는 VBus 의전원을최대화시킨다. 수신자가전원공급자가되었다. 리셉터클의 CC 핀은풀업저항이연결된다. 8) 요청자는 GoodCRC 응답메시지를수신자에게전송한다.

6.4.3.2.6.2 Sink 측에서요청하는 Type-C 전원공급역할교환 (Power Role Swap) 그림 6-33 Sink 가요청하는전원공급역할교환과정 [ 그림 6-33] 를보자. 요청자가현재전원소비자이다. 요청자는전원공급자역할을교환하기를요청 하는그림이다. 1) 요청자 (Sink) 는 PR_Swap (Power Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자 (Source) 는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의 미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 수신자는 PD_RDY 메시지를요청자에게전송한다. 수신자는 VBus 의전원을최소화시킨다. 수신자가전원소비자가되었다. 리셉터클의 CC 핀은풀다운저항이연결된다.

6) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 7) 요청자는 PD_RDY 메시지를수신자에게전송한다. 요청자는 VBus 의전원을최대화시킨다. 요청자가전원공급자가되었다. 리셉터클의 CC 핀은풀업저항이연결된다. 8) 수신자는 GoodCRC 응답메시지를수신자에게전송한다. 6.4.3.2.6.3 전원소비자이면서 UFP 측에서요청하는 Type-C 데이터역할교환 (Data Role Swap) 전원을소비하는포트가 UFP 로사용되는경우, UFP 측에서데이터역할을교환하기를요청할수있 다. 전원공급자역할은그대로유지하면서데이터역할만교환한다. 데이터역할교환은 UFP 또는 DFP 측에서요청할수있다. 그림 6-34 전원소비자이면서 UFP 측에서요청하는 Type-C 데이터역할교환과정

[ 그림 6-34] 를보자. 요청자가현재전원소비자이다. 요청자는데이터역할을교환하기를요청하는 그림이다. 전원공급자역할은그대로유지한다. 1) 요청자는 DR_Swap (Data Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 전원공급관계는그대로유지된다. 수신자가 UFP 가되었다. 요청자가 DFP 가되었다. 6.4.3.2.6.4 전원공급자이면서 UFP 측에서요청하는 Type-C 데이터역할교환 (Data Role Swap) 전원을공급하는포트가 UFP 로사용되는경우, UFP 측에서데이터역할을교환하기를요청할수있 다. 전원공급자역할은그대로유지하면서데이터역할만교환한다. 데이터역할교환은 UFP 또는 DFP 측에서요청할수있다. 그림 6-35 전원공급자이면서 UFP 측에서요청하는 Type-C 데이터역할교환과정

[ 그림 6-35] 를보자. 요청자가현재전원공급자이다. 요청자는데이터역할을교환하기를요청하는 그림이다. 전원공급자역할은그대로유지한다. 1) 요청자는 DR_Swap (Data Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 전원공급관계는그대로유지된다. 수신자가 UFP 가되었다. 요청자가 DFP 가되었다. 6.4.3.2.6.5 전원제공자이면서 DFP 측에서요청하는 Type-C 데이터역할교환 (Data Role Swap) 전원을제공하는포트가 DFP 로사용되는경우, DFP 측에서데이터역할을교환하기를요청할수 있다. 전원공급자역할은그대로유지하면서데이터역할만교환한다.

데이터역할교환은 UFP 또는 DFP 측에서요청할수있다. 그림 6-36 전원제공자이면서 DFP 측에서요청하는 Type-C 데이터역할교환과정 [ 그림 6-36] 를보자. 요청자가현재전원제공자이다. 요청자는데이터역할을교환하기를요청하는 그림이다. 전원공급자역할은그대로유지한다. 1) 요청자는 DR_Swap (Data Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 전원공급관계는그대로유지된다. 수신자가 DFP 가되었다. 요청자가 UFP 가되었다.

6.4.3.2.6.6 전원소비자이면서 DFP 측에서요청하는 Type-C 데이터역할교환 (Data Role Swap) 전원을소비하는포트가 DFP 로사용되는경우, DFP 측에서데이터역할을교환하기를요청할수 있다. 전원공급자역할은그대로유지하면서데이터역할만교환한다. 데이터역할교환은 UFP 또는 DFP 측에서요청할수있다.

그림 6-37 전원소비자이면서 DFP 측에서요청하는 Type-C 데이터역할교환과정 [ 그림 6-37] 를보자. 요청자가현재전원소비자이다. 요청자는데이터역할을교환하기를요청하는 그림이다. 전원공급자역할은그대로유지한다. 1) 요청자는 DR_Swap (Data Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 전원공급관계는그대로유지된다. 수신자가 DFP 가되었다. 요청자가 UFP 가되었다. 6.4.3.2.6.7 VConn 전원제공자이면서 DFP 측에서요청하는 Type-C VConn 전원공급역할교환 (VConn Role Swap)

DFP 측에서 VConn 을제공하고있던상황에서, DFP 측이 VConn 전원공급역할을교환하기를요청 하는과정을보여준다. 데이터역할교환은 DFP 측에서만요청할수있다. 그림 6-38 VConn 전원제공자이면서 DFP 측에서요청하는 Type-C VConn 전원공급역할교환과정 [ 그림 6-38] 를보자. 요청자 (DFP) 가현재 VConn 전원공급자이다. 요청자가 VConn 전원공급자역 할교환을요청하는그림이다. 1) 요청자는 VConn_Swap (VConn Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 수신자는전력공급기를통해 VConn 공급을시작한다. 이어서 PS_RDY 메시지를요청자에게전

송한다. 6) 요청자는응답으로 GoodCRC 응답메시지를수신자에게전송한다. 이어서, 요청자는전력공급기 를통해 VConn 공급을끊어버린다. DFP 가 VConn 전력소비자가되었다. 6.4.3.2.6.8 VConn 전원소비자이면서 DFP 측에서요청하는 Type-C VConn 전원공급역할교환 (VConn Role Swap) DFP 측에서 VConn 을소비하고있던상황에서, DFP 측이 VConn 전원공급역할을교환하기를요청 하는과정을보여준다. 데이터역할교환은 DFP 측에서만요청할수있다. 그림 6-39 VConn 전원소비자이면서 DFP 측에서요청하는 Type-C VConn 전원공급역할교환과정

[ 그림 6-39] 를보자. 요청자 (DFP) 가현재 VConn 전원소비자이다. 요청자가 VConn 전원공급자역 할교환을요청하는그림이다. 1) 요청자는 VConn_Swap (VConn Role) 메시지를수신자에게전송한다. 역할교환을요청한다. 2) 수신자는 GoodCRC 응답메시지를요청자에게전송한다. 역할교환명령을수신했다는의미이다. 3) 수신자는 Accept 메시지를요청자에게전송한다. 역할교환을허락하겠다는의미이다. 4) 요청자는 GoodCRC 응답메시지를수신자에게전송한다. 5) 요청자는전력공급기를통해 VConn 공급을시작한다. 이어서 PS_RDY 메시지를수신자에게전 송한다. 6) 수신자는응답으로 GoodCRC 응답메시지를요청자에게전송한다. 이어서, 수신자는전력공급기 를통해 VConn 공급을끊어버린다. DFP 가 VConn 전력공급자가되었다. 6.4.3.3 PD 메시지 USB Power Delivery 에사용되는명령과파라미터는 CC 핀또는 VBus 핀을사용해서송, 수신된다. PD 메시지는컨트롤메시지 (Control Message) 와데이터메시지 (Data Message) 로구분된다. 컨트롤메시지는 16 비트, 데이터메시지는 48 비트에서 240 비트의크기를가진다. 6.4.3.3.1 메시지구성 그림 6-40 USB Power Delivery Packet 포멧

[ 그림 6-40] 은 USB PD 패킷의포멧을보여준다. 사용되는메시지헤더 (Message Header) 는 [ 표 6-22] 과같은같이사용된다. 표 6-22 메시지헤더구성 비트필드이름 15 사용안함 14..12 Data Objects의개수 (Message Header 를따르는데이터 ) 컨트롤메시지 : 값 = 0, 데이터메시지 : 값!= 0 11..9 Message ID 8 리셉터클 <-> 리셉터클 : Power Power Role 리셉터크 <-> 플러그, 원격플러그 : Cable Plug 7..6 스팩버젼 00b : 버전 1.0 01b : 버전 2.0 5 Port Data Role 0b : UFP 1b : DFP

4 사용안함 3..0 Message Type 6.4.3.3.2 컨트롤메시지종류 Message Type 에따라서메시지의의미가결정된다. 표 6-23 메시지유형 (Message Type), 컨트롤메시지 비트 3..0 메시지유형 0000 사용안함 0001 GoodCRC 0010 GotoMin 0011 Accept 0100 Reject 0101 Ping 0110 PS_RDY 0111 Get_Source_Cap 1000 Get_Sink_Cap 1001 DR_Swap 1010 PR_Swap 1011 VCONN_Swap 1100 Wait 1101 Soft_Reset 1110 1111 사용안함 6.4.3.3.2.1 GoodCRC 메시지 GoodCRC 메시지는이전에받은메시지에대한수신여부를송신자에게알려주는역할로사용된 다. 이전에받은메시지의 Message ID 가그대로사용된다. 6.4.3.3.2.2 GotoMin 메시지 GotoMin 메시지는전력을소비하는소비자에게전달되는메시지로서, 스팩에서정의하는최소한 의전력만소비하도록지시한다.

6.4.3.3.2.3 Accept 메시지 Accept 메시지는이전에받았던메시지요청 (PR_Swap, DR_Swap, VCONN_Swap, Soft_Reset) 에대해 서수용한다는의미로사용된다. 6.4.3.3.2.4 Reject 메시지 Accept 메시지는이전에받았던메시지요청 (PR_Swap, DR_Swap, VCONN_Swap, Get_Sink_Cap, Get_Source_Cap) 에대해서거절한다는의미로사용된다. 6.4.3.3.2.5 Ping 메시지 USB Type-A, B 에서만사용되는메시지이다. Source 에서 Sink 로주기적으로전송된다. Sink 가존재 하는지를확인하는목적으로사용된다. 6.4.3.3.2.6 PS_RDY 메시지 전원공급기의역할을수행하는포트측에서전원공급준비를마쳤다는의미로사용하는메시지이다. 6.4.3.3.2.7 Get_Source_Cap 메시지 현재연결된케이블의 Source 측의포트의특성정보를얻는데사용된다. Dual Role 의경우가아닌 Sink 측의포트는 Reject 메시지를응답한다. 자세한특성정보는 6.4.3.3.3 절을참고한다. 6.4.3.3.2.8 Get_Sink_Cap 메시지 현재연결된케이블의 Sink 측의포트의특성정보를얻는데사용된다. Dual Role 의경우가아닌 Source 측의포트는 Reject 메시지를응답한다. 자세한특성정보는 6.4.3.3.3 절을참고한다. 6.4.3.3.2.9 DR_Swap 메시지

DR_Swap 메시지는데이터역할 (Data Role) 을교환하는데사용된다. 해당하는메시지를수신하는 수신측에서다음과같은응답메시지가사용될수있다. Accept 메시지 : DR_Swap 요청을수용한다는의미이다. Reject 메시지 : DR_Swap 요청을거절한다는의미이다. Wait 메시지 : DR_Swap 요청을당장수용하지않지만, 가까운시간안에수용할때를알려주겠다는 의미이다. DR_Swap 메시지가수용되어도 VBus, VConn 공급자의역할은그대로유지된다. 6.4.3.3.2.10 PR_Swap 메시지 PR_Swap 메시지는전원공급역할 (Power Role) 을교환하는데사용된다. 해당하는메시지를수신하 는수신측에서다음과같은응답메시지가사용될수있다. Accept 메시지 : PR_Swap 요청을수용한다는의미이다. Reject 메시지 : PR_Swap 요청을거절한다는의미이다. Wait 메시지 : PR_Swap 요청을당장수용하지않지만, 가까운시간안에수용할때를알려주겠다는 의미이다. PR_Swap 메시지가수용되어도 Data Role, VConn 공급자의역할은그대로유지된다. 양쪽파트너의포트는각각자신의 MessageIDCounter, RetryCounter 값을초기화한다. 6.4.3.3.2.11 VCONN_Swap 메시지 VCONN_Swap 메시지는 VConn 전원공급역할 (VConn Role) 을교환하는데사용된다. 해당하는메시 지를수신하는수신측에서다음과같은응답메시지가사용될수있다. Accept 메시지 : VCONN_Swap 요청을수용한다는의미이다. Reject 메시지 : VCONN_Swap 요청을거절한다는의미이다. Wait 메시지 : VCONN_Swap 요청을당장수용하지않지만, 가까운시간안에수용할때를알려주 겠다는의미이다.

VCONN_Swap 메시지가수용되어도 Data Role, VBus 공급자의역할은그대로유지된다. 6.4.3.3.2.12 Wait 메시지 Wait 메시지는 Request, PR_Swap, DR_Swap, VCONN_Swap 메시지에대한응답으로사용될수있 다. 곧바로요청하는메시지에대한처리를할수없을때응답으로사용된다. 6.4.3.3.2.13 Soft_Reset 메시지 프로토콜영역의에러를회복하고, Message Counter 의상태를알려진초기상태로되돌린다. 전력 공급상태는그대로유지한다. Soft_Reset 메시지가성공적으로수행되면, 포트는선택적으로전력공급협상을다시진행할수있 다. Soft_Reset 메시지가실패하면, Hard_Reset 시그널링작업이진행된다. Hard_Reset 시그널링은 메시지형태를사용하지않는다. 순서열을사용한다. 표 6-24 Hard_Reset 순서열문자 K-code 순서테이블속에 K-code 문자 1 RST-1 2 RST-1 3 RST-1 4 RST-2 6.4.3.3.3 데이터메시지종류 Message Type 에따라서메시지의의미가결정된다. 표 6-25 [ 표 6-22] 의메시지유형 (Message Type), 데이터메시지 비트 3..0 메시지유형 0000 사용안함 0001 Source_Capabilities 0010 Request 0011 BIST

0100 Sink_Capabilities 0101 1111 사용안함 [ 표 6-25] 는데이터메시지로사용되는메시지유형값을보여주고있다. 그림 6-41 메시지 Payload 를포함하고있는 USB PD 패킷포멧 [ 그림 6-41] 을보면, Message Header(Control Message 또는 Data Message) 와뒤에이어지는최대 8 개의 Data Object 를보여주고있다. Data Object 는 Data Message 에경우사용되는필드이다. Data Object 의길이는 Message Header 의 Data Object 개수를나타내는필드에따라서가변적인 크기를가진다. 6.4.3.3.3.1 Capabilities 메시지 Source_Capabilities 와 Sink_Capabilities 가여기에해당한다.

포트의특성정보를제공하는데사용된다. 여기에사용되는 Data Object 를 Power Data Object(PDO) 라고부른다. Capabilities 메시지는최소한하나이상의 Data Object(5V 고정전원공급기 Object) 를가진다. 추가로가질수있는 Data Object 는다음의것이있다. * 5V 이외에다른고정전원공급기 (fixed Supply) Object 를표현한다. 낮은수준에서높은수준의 순서대로표현한다. * 배터리전원공급기 Object 를표현한다. 낮은수준에서높은수준의순서대로표현한다. * 고정혹은배터리가아닌다른방식의전원공급기 Object 를표현한다. 낮은수준에서높은수준 의순서대로표현한다. 표 6-26 일반적인 Power Data Object 의포멧 비트 설명 B31..30 값 파라미터 00b 고정전원공급기 01b 배터리전원공급기 10b 그외전원공급기 11b 사용안함 B29..0 PDO의종류에따라서가변 [ 표 6-26] 을보면, 3 가지형식의 PDO 가사용하는비트맵정보를설명하고있다. Capabilities 메시지가포함하는 Data Object 는가장앞부분에고정전원공급기 PDO 를시작으로 배터리, 그외전원공급기 PDO 정보가선택적으로따라온다. 6.4.3.3.3.1.1 고정전원공급기 PDO(Power Source 의경우 ) 고정전원공급기 PDO 는 [ 표 6-27] 과같은포멧을사용한다. 표 6-27 고정전원공급기 Power Data Object 의포멧 비트 설명

B31..30 고정전원공급기 B29 이중역할전력 (Dual Role Power) PW_Swap 메시지처리능력을가지고있는지여부를알려준다 B28 USB 서스팬드지원여부 USB에서정의하고있는서스팬드환경을그대로지원하는지여부를 알려준다 B27 외부전력공급됨여부 B26 USB 통신기능포함여부 B25 데이터역할교환가능여부 B24..22 사용안함 B21..20 최대전류 (Peak Current). 디폴트 0. 짧은시간동안과도한전류를제공할필요가있는경우에사용됨 B19..10 제공하는 50mV 단위의전압량 B9..0 제공하는 10mA단위의최대전류량 6.4.3.3.3.1.2 배터리전원공급기 PDO(Power Source 의경우 ) 배터리전원공급기 PDO 는 [ 표 6-28] 과같은포멧을사용한다. 표 6-28 배터리전원공급기 Power Data Object 의포멧 비트 B31..30 B29..20 B19..10 B9..0 설명배터리전원공급기제공하는 50mV단위의최대전압량제공하는 50mV단위의최소전압량허용하는 250mW단위의최대전력량 6.4.3.3.3.1.3 그외전원공급기 PDO(Power Source 의경우 ) 그외전원공급기 PDO 는 [ 표 6-29] 과같은포멧을사용한다. 표 6-29 그외전원공급기 Power Data Object 의포멧 비트 B31..30 B29..20 B19..10 B9..0 설명그외전원공급기제공하는 50mV단위의최대전압량제공하는 50mV단위의최소전압량제공하는 10mA단위의최대전류량

6.4.3.3.3.1.4 고정전원소비기 PDO(Power Sink 의경우 ) 고정전원소비기 PDO 는 [ 표 6-30] 과같은포멧을사용한다. 표 6-30 고정전원소비기 Power Data Object 의포멧 비트 B31..30 B29 B28 B27 B26 B25 B24..20 B19..10 B9..0 설명고정전원소비기이중역할전력 (Dual Role Power) PW_Swap 메시지처리능력을가지고있는지여부를알려준다 5V이상의전압을요구하는 Sink의특성을가지고있는지외부전력공급됨여부 USB 통신기능포함여부데이터역할교환가능여부사용안함소비하는 50mV 단위의전압량동작가능한 10mA단위의전류량 6.4.3.3.3.1.5 배터리전원소비기 PDO(Power Sink 의경우 ) 배터리전원소비기 PDO 는 [ 표 6-31] 과같은포멧을사용한다. 표 6-31 배터리전원소비기 Power Data Object 의포멧 비트 B31..30 B29..20 B19..10 B9..0 설명배터리전원소비기소비하는 50mV단위의최대전압량소비하는 50mV단위의최소전압량동작가능한 250mW단위의전력량 6.4.3.3.3.1.6 그외전원소비기 PDO(Power Sink 의경우 ) 그외전원소비기 PDO 는 [ 표 6-32] 과같은포멧을사용한다. 표 6-32 그외전원소비기 Power Data Object 의포멧 비트 설명

B31..30 B29..20 B19..10 B9..0 그외전원소비기소비하는 50mV단위의최대전압량소비하는 50mV단위의최소전압량동작가능한 10mA단위의전류량 6.4.3.3.3.2 Request 메시지 Source_Capabilities 메시지는 Power Source측에서 Sink측으로전송하는특성정보를알려주는용도로사용되는메시지이다. 반면 Request 메시지는 Power Sink측에서 Source측으로사용하려는전력제공을요청하는메시지이다. Request 메시지에서사용하는 Object Position값은가장최근에 Power Source가제공한 Source_Capabilities 메시지와함께전달된 PDO의인덱스를지칭하는데사용된다. 이값은최소값 1부터시작한다. 이값을지정하는데 Source_Capabilities 메시지가전달해준 PDO정보가완전하게부합할필요는없다. Sink가소비하는전력을충분하게표현하는 PDO가있으면해당하는항목을가리키는값으로사용된다. Request 메시지가사용하는 Data Object 의형태는크게 2 가지형태를사용한다. 하나는고정전원 Power Data Object 와가변전원 Power Data Object 가공유하는형태이고, 다른 하나는배터리전원 Power Data Object 를위한형태이다. 표 6-33 고정및가변전원 Power Data Object 의포멧 (GiveBack 플래그가 0 인경우 ) 비트 설명 B31 사용안함 B30..28 Object Position( 최소값 1) B27 GiveBack 플래그 (0) B26 Capability Mismatch B25 USB 통신기능포함여부 B24 USB Suspend 지원안함 B23..20 사용안함 B19..10 동작에필요한 10mA단위의필요전류량 B9..0 10mA단위의최대필요전류량 표 6-34 고정및가변전원 Power Data Object 의포멧 (GiveBack 플래그가 1 인경우 ) 비트 설명

B31 사용안함 B30..28 Object Position( 최소값 1) B27 GiveBack 플래그 (1) B26 Capability Mismatch B25 USB 통신기능포함여부 B24 USB Suspend 지원안함 B23..20 사용안함 B19..10 동작에필요한 10mA단위의필요전류량 B9..0 10mA단위의최대필요전류량 표 6-35 배터리전원 Power Data Object 의포멧 (GiveBack 플래그가 0 인경우 ) 비트 설명 B31 사용안함 B30..28 Object Position( 최소값 1) B27 GiveBack 플래그 (0) B26 Capability Mismatch B25 USB 통신기능포함여부 B24 USB Suspend 지원안함 B23..20 사용안함 B19..10 동작에필요한 250mW단위의필요전력량 B9..0 250mW단위의최대필요전력량 표 6-36 배터리전원 Power Data Object 의포멧 (GiveBack 플래그가 1 인경우 ) 비트 설명 B31 사용안함 B30..28 Object Position( 최소값 1) B27 GiveBack 플래그 (1) B26 Capability Mismatch B25 USB 통신기능포함여부 B24 USB Suspend 지원안함 B23..20 사용안함 B19..10 동작에필요한 250mW단위의필요전력량 B9..0 250mW단위의최대필요전력량

여기서는 [ 표 6-33] 에서 [ 표 6-36] 까지나타난필드중에몇가지를부연설명하도록한다. * GiveBack 플래그 : 해당하는기능이활성화되면, Power Source는 Sink측으로최소전력사용상태로전환하라는의미로 GotoMin 메시지를사용할수있다. 전력공급을받던 Sink는특별한사정으로인해 Source로부터전력공급량이최소화될수있다. 이와같은상황은 Source에게받던전력공급량을되돌려준다 (GiveBack) 는의미로해석하게된다. * Capabilities Mismatch : Power Source 가제공하는전원공급조건은그어떤것도 Sink 가사용하기 에적합하지않다는의미로셋 (1) 된다. 이런경우, Power Sink 는 Sink_Capabilities 메시지를통해서 요구하는전원소비조건을 Source 에게알려야한다. * USB 통신기능 : USB 스팩에서규정하는 Suspend, Resume 기능에동작을하는지여부를알려준 다. 6.4.3.3.3.3 BIST 메시지 포트가물리영역테스트모드로진입하는데에사용하는메시지이다. 이책에서는설명을생략하 도록하겠다. 6.4.3.4 실예를통해 USB PD 를이해하기 실전에서어떤식으로 PD 메시지가송, 수신되고이에따라서전력소비가어떻게결정되는지를살 펴보기위해서몇가지예를들어설명하려고한다. 6.4.3.4.1 데이터역할 (Data Role) 과전원공급역할 (Power Role) 이같은경우의예시 데이터역할 (Data Role) 과전원공급역할 (Power Role) 은통상적으로같은경우가일반적이다. USB Type-C 는이와같은상황을바꿀수있다. 먼저일반적인상황으로데이터역할과전원공급역할이동일한환경의예시를통해서 USB PD 가 어떤식으로메시지를교환하는지를알아보도록하자. [ 그림 6-42] 를보자. 노트북에모니터 1 를하나연결한다. 전원과데이터가케이블을통해서전달된다.

노트북은모니터 1 측으로 30W 전력을공급해야한다. 모니터 1 의내부에는허브가있다. 이허브의포트를통해서모니터 2 와또다시연결된다. 모니터 1 은모니터 2 측으로 30W 전력을공급해야한다. 결과적으로노트북은모니터 1 측으로 60W 의전력을공급해야한다. 그림 6-42 하나의노트북 + 두개의모니터 (Data Role = Power Role) 표 6-37 [ 그림 6-42] 환경에서전원공급과 PD 메시지가전달되는과정 단계 노트북 모니터1 모니터2 전력사용가능 (W) 모니터 1 1 AC전원공급 0 2 VBus 제공 연결됨. 0.75 5V@150mA 사용 3 Source Caps메시지전달 Source Cap메시지수신 0.75

5V@2A(10W) 12V@3A(36W) 20V@3A(60W) 4 Request메시지수신 Request메시지전달 0.75 20V@1.5A(30W) 5 Accept메시지전달 Accept메시지수신 0.75 6 PS_RDY메시지전달 PS_RDY메시지수신 20V@1.5A(30W) 사용 30 모니터 2 7 모니터2연결확인 연결됨. VBus 제공안됨 30 8 Request메시지수신 Request메시지전달 VBus 제공안됨 30 20V@1.73A(34.6W) 9 Accept메시지전달 Accept메시지수신 VBus 제공안됨 30 10 PS_RDY메시지전달 PS_RDY메시지수신 VBus 제공안됨 34.6 11 VBus 제공 5V@150mA 사용 34.6 12 Source Caps메시지전달 Source Cpas메시지수신 34.6 5V@0.9A(4.5W) 13 Request메시지수신 Request메시지전달 34.6 5V@0.15A(0.75W) + Capability Mismatch 14 Accept메시지전달 Accept메시지수신 34.6 15 PS_RDY메시지전달 PS_RDY메시지수신 34.6 16 Get Sink Caps Get Sink Caps 34.6 메시지전달 메시지수신 17 Sink Caps메시지수신 Sink Caps메시지전달 34.6 20V@1.5A 18 Request메시지수신 Request메시지전달 34.6 20V@3A(60W) 19 Accept메시지전달 Accept메시지수신 34.6 20 PS_RDY메시지전달 PS_RDY메시지수신 60 21 Source Caps메시지전달 Source Cpas메시지수신 60 5V@0.9A(4.5W) 20V@1.5A(30W) 22 Request메시지수신 Request메시지전달 60 20V@1.5A(30W) 23 Accept메시지전달 Accept메시지수신 60 24 PS_RDY메시지전달 PS_RDY메시지수신 60

20V@1.5A(30W) 사용 부가설명 4: 모니터 1 은노트북측으로 20V@1.5A(30W) 의전력을제공하기를요청한다. 8: 모니터 1 은노트북측으로 20V@1.73A(34.6W) 의전력을제공하기를요청한다. 이값은기존의 30W + 약 4.5W 를포함하는크기값으로써, USB Super Speed 포트하나가정상적으로동작하는데 필요한최대전력 (PD 를사용하지않는경우 ) 량이다. 13: 모니터 2 는모니터 1 측으로 5V@0.15A(0.75W) 의전력을제공하기를요청한다. 동시에 Capability Mismatch 파라미터를기록한다. 이크기는 USB Super Speed 포트에연결되는디바이 스가요구하는최소전력 (PD 를사용하지않는경우 ) 량이다. 17: 모니터 2 는모니터 1 측으로 Sink Caps 메시지 (20V@1.5A) 를전달한다. 30W 를사용한다는것을 알린다. 18: 모니터 1 은모니터 2 로부터요구되는전력량 30W 를고려해서, 노트북측으로 20V@3A(60W) 의 전력을제공하기를요청한다. 20: 노트북은이제 60W 의전력이사용되는것을허락한상태이다. 21: 노트북으로부터요구된 60W 의전력사용을허락받은뒤, 모니터 1 은모니터 2 측으로새로운전 력공급특성정보를제공한다. 22: 모니터 2 는모니터 1 측으로 20V@1.5A(30W) 의전력을제공하기를요청한다. 6.4.3.4.2 데이터역할 (Data Role) 과전원공급역할 (Power Role) 이다른경우의예시 데이터역할 (Data Role) 과전원공급역할 (Power Role) 이다른경우를살펴보도록하자. 처음상태 는이들의역할이같은상태에서시작하지만, 필요에의해서전원공급역할교환 (Power Role Swap) 이이루어진다. [ 그림 6-43] 를보자. AC 전원을공급받는모니터 2 가있다. 모니터 2 에모니터 1 을하나연결한다. 모니터 2 는모니터 1 측으 로 30W 전력을공급해야한다. 모니터 1 의내부에는허브가있다. 이허브의포트를통해서타블 렛과또다시연결된다. 모니터 1 은타블렛측으로 12W 전력을공급해야한다. 타블렛은충전까지

가능한상태이다. 결과적으로모니터 2 는모니터 1 측으로 42W 의전력을공급해야한다. 데이터역할 (Data Role) 에있어, 타블렛은모니터1을위해, 모니터1은모니터2를위해각각호스트의역할을수행한다. 하지만전원공급방향은반대방향이다. 타블렛의 DFP가초반에전원공급 Source역할로정해져있었다고가정하면, 전원이공급됨과동시에 PW_Swap 메시지에의해서타블렛의 DFP와모니터1의 UFP는서로의전력공급역할을교환해야한다. 초기에타블렛이전원공급역할을수행하지만, 잠시후타블렛은전원소비역할로전환된다. 타블렛은 12V@0.2A(2.4W) 의전력이제공되면동작이가능하다고가정한다. 또한, 12V@1A(12W) 의전력이제공되면충전도가능하다고가정한다. 이시나리오에서는처음에는동작이가능한 2.4W 의전력이제공되고, 이후에충전이가능한 12W 의전력이제공되는형태로진행해본다. 그림 6-43 하나의타블렛 + 두개의모니터 (Data Role!= Power Role)