강력한 USB 3.0 지원 구축

폭넓은 생태계의 일부분으로써 Windows가 수행하는 중요한 역할 중 하나는 새 하드웨어 지원을 개발하는 것입니다. 새 하드웨어 지원은 상당히 복잡한 프로세스인데, 여기에서는 USB 3.0 지원에 대해 살펴보겠습니다. USB 3.0은 개선 효과가 뛰어나 모든 사람이 사용하고 싶어하기 때문입니다. 이 게시물은 저희의 첫 번째 비디오 게시물이기도 합니다. 이 비디오는 '엔지니어링' 비디오에 초점을 맞춰 만들었으므로 영상물의 수준이 높지 않을 수 있으나 저희가 여러분들께 알려드리고 싶은 요점은 잘 표현되었으리라고 생각됩니다. 비디오는 HTML5 형식으로 포함되어 있으며 다운로드할 수 있습니다. 비디오를 볼 때 파일 복사 진행률을 나타내는 표시가 약간 구식이라고 느껴지시겠지만 이 점은 앞으로 향상될 것입니다. 이 게시물은 장치 및 네트워킹 그룹의 프로그램 관리 디렉터인 Dennis Flanagan이 작성했습니다. – Steven

USB 3.0은 USB 2.0에 비해 처리 속도가 최대 10배 빨라지고 전원 관리 기능이 개선되어 배터리 수명이 연장됩니다. USB 3.0은 전 세계적으로 가장 유명한 PC 인터페이스를 더욱 발전시킬 분명한 이유를 가지고 있습니다. 2015년까지 새로운 PC는 모두 USB 3.0 포트를 제공할 것으로 기대되며 2015년 한 해에만 20억 개 이상의 새로운 초고속("SuperSpeed") USB 장치가 판매될 것입니다.

그림 1 - USB 3.0 PC 시장 예측
In-Stat, 2011년 6월

그림 2 - USB 장치 시장 예측, 2011년 6월
In-Stat, 2011년 6월

USB 3.0에 투자하기로 결정하는 것은 간단했지만 기존 USB 환경과 호환성을 유지한 채 진행하는 것은 매우 어려운 도전이었습니다. 새로운 USB 3.0 하드웨어를 지원하려면 수정된 3.0 사양을 정확하게 따르는 디자인이 필요했고, Windows는 기존의 수많은 USB 장치와도 호환성을 유지해야 했습니다. 전 세계 도처의 가정과 사무실에서 사용하는 100억 개의 기존 장치와 호환성을 유지하면서, 점차 발전하는 하드웨어에 대해 최신 기술을 사용하는 소프트웨어를 만들려면 어떻게 해야 할까요?

간단한 배경 설명

1996년에 USB 표준 기구는 USB 장치의 속도를 1.5Mbps의 저속(Low Speed)과 12Mbps의 전속(Full Speed)으로 정의한 첫 번째 USB 사양을 발표했습니다. 그 당시, 다시 부팅하지 않고도 장치를 연결하고 분리할 수 있는 "핫 플러깅"은 매우 혁신적인 아이디어였습니다. 또한 USB는 3가지 방식으로 데이터를 전송했는데, 많은 양의 데이터를 보내고 이후에는 확인하지 않는 프린터와 같은 장치를 위한 대량(bulk) 데이터 전송 방식, 특정 순서에 따라 지속적으로 데이터를 받는 스피커와 같은 장치를 위한 주기적(isochronous) 데이터 전송 방식, 가끔씩 데이터를 보내는 키보드와 같은 장치를 위한 개입식(interrupt) 데이터 전송 방식이었습니다.

1996년 사양에서는 USB 장치의 복잡한 처리를 PC로 옮김으로써 USB 장치의 제조 비용이 줄어들고 구현이 더 쉬워졌습니다. 이러한 특징으로 인해 USB는 가장 매력적인 외부 장치 커넥터가 되었습니다. 이에 따라 장치 제조업체들은 USB를 채택했고 다양한 종류의 장치에 대해 소프트웨어와 하드웨어 간의 공통 인터페이스를 정의하기 위해 표준 기구에 참여했습니다. 이러한 공통 인터페이스를 통해 모든 종류의 기기들을 지원하는 단일 소프트웨어 드라이버인 '클래스 드라이버'를 만들었습니다. Microsoft는 처음부터 USB 기술을 채택하고 표준 기구에 참여하여 수년간 많은 USB 사양을 구축하는 데 기여하고 Windows 95 OSR 2에 USB 1.1 지원 기능을 도입했습니다.

2000년에 접어들어 USB 2.0 사양에는 새롭게 480Mbps의 고속(High Speed) 사양이 도입되었습니다. 하지만 안타깝게도 PC를 장치에 연결하는 데 사용되는 하드웨어인 호스트 컨트롤러는 이전 버전과 호환되지 않았습니다. 고속 장치는 모든 컨트롤러와 호환되지만 저속 및 전속 장치는 USB 2.0 컨트롤러와 호환되지 않았습니다. 모든 종류의 장치를 지원하려면 PC에 두 개의 컨트롤러를 각각 장착하거나 USB 2.0 허브를 포함해야 했습니다. 저희는 Windows XP SP1에서 USB 2.0 기능을 추가하여 기존 소프트웨어 드라이버 스택을 개선했습니다.

견고한 사양을 갖춘 USB 3으로 전환

Microsoft에서는 USB 표준 기구에 적극적으로 참여하여 강력하면서도 동시에 상호 운용이 가능한 사양을 만들기 위해 노력했습니다. USB IF(USB Implementer’s Forum)의 다른 회원들과 마찬가지로 더 빠르고 전원 효율성이 뛰어나면서도 USB 2.0과 달리 하드웨어와 소프트웨어의 단일 조합으로 모든 USB 장치와 호환되는 USB 버전을 만드는 것이 목표였습니다.

2008년 USB 표준 기구에서는 새로운 호스트 컨트롤러를 포함하고 새로운 초고속("SuperSpeed") USB 장치(5Gbps)를 정의하는 USB 3.0 사양을 발표했습니다. 이 컨트롤러와 장치를 조합하면 이론적으로 USB 2.0보다 최고 10배 빠른 속도로 작동할 수 있습니다. USB 저장소 드라이브에서 고화질 동영상을 복사할 때 USB 2.0에서는 15분이 걸린 반면, 새로운 표준을 사용하면 80초 만에 복사할 수 있습니다. 또한 USB 3.0 사양에는 저장소 드라이브에서 읽기와 쓰기를 더 효율적으로 처리할 수 있는 '스트림'이라는 새로운 전송 유형이 도입되었습니다.

새 사양에서는 USB 2.0보다 80% 더 많은 전력이 제공됩니다. 즉 충전 속도가 빨라지며 외부 DVD 드라이브 및 기타 전력 소비가 많은 장치에서 사용하는 ODD "Y" 케이블을 사용할 필요가 없습니다. 하지만 전력 측면에서 고려할 사항은 충전뿐만이 아닙니다. 모바일 컴퓨팅 사용자는 배터리 수명을 보호하는 PC를 선호하는데 USB 3.0은 전력 사용이 적은 새로운 상태를 도입하여 작업을 더 빠르게 종료하며, 수시로 전력 소비를 줄임으로써 이전 사양보다 전력 효율성이 더 뛰어납니다. 즉, 노트북의 경우 배터리 수명이 연장되고 데스크톱에서는 전력 소비가 줄어듭니다.

가장 중요한 점은 이 사양이 전속, 저속, 고속 장치와 호환성을 유지하는 동시에 차세대 USB를 지원한다는 것이며 플러그도 이전 버전과 호환됩니다.

하드웨어 산업과의 긴밀한 제휴 관계

USB 3.0 사양이 확고한 틀을 마련함에 따라 Windows 디자인에 착수했고 첫 번째 어려운 결정을 내릴 순간이 찾아왔습니다. Windows 95 OSR2 이후 계속 수정해 온 기존 USB 소프트웨어를 업데이트할지 아니면 최신 디자인 원칙에 따라 새로 소프트웨어를 만들어야 할지 결정해야 했던 것입니다. 수많은 장치와 드라이버가 기존 소프트웨어의 동작에 의존하고 있는 실정에서 완전히 새로운 디자인으로 바꾸기란 쉽지 않았습니다. 그 대신 모든 장치와 드라이버가 작동하도록 기존 인터페이스와 동작을 유지하면서 새 컨트롤러에 맞는 새로운 USB 소프트웨어 스택을 세심하게 디자인하는 것이 해답이었습니다. 이전 컨트롤러의 경우 기존 소프트웨어 스택을 유지했습니다.

완전히 새로운 USB 소프트웨어 스택을 만들기 위해서는 조속히 작업에 착수해야 했습니다. 하드웨어가 출시될 때까지 기다린다면 새로운 USB 3.0 환경을 지원하는 시기가 너무 늦어질 수 있기 때문입니다. Microsoft에서는 "가상" 장치를 만들어 USB 3.0 장치가 출시되기 전에 작업을 시작하기로 결정했습니다. 가상 장치는 포트, 허브 및 기타 장치와 같이 실재하는 물리적 USB 하드웨어를 소프트웨어로 표현한 것입니다.

가상 장치를 개발하면서 디자인과 프로토타입 작업을 시작했습니다. 모든 오류를 처리하면서 허브와 장치를 관리해야 하기 때문에 USB 소프트웨어는 매우 복잡합니다. 오래 지속되는 제품을 만들기 위해서는 흐름을 시각화하여 문서화할 필요가 있었습니다. 이를 위해 Visio 다이어그램을 소프트웨어로 자동 변환하는 코드 생성기 하나와 대형 순서도 3개를 디자인했습니다. 또한 Microsoft Research와 함께 Zing이라는 도구를 다듬어 이 소프트웨어 모델의 모든 측면을 검증할 수 있도록 했습니다.

 
순서도와 설계자 Randy Aull 및 Vivek Gupta

초기 개발을 일부 마친 시점에 첫 번째 USB 호스트 컨트롤러가 출시되었습니다. 시뮬레이션으로 작업을 시작한 것은 매우 탁월한 선택이었지만 그것만으로는 충분하지 않았습니다. 하드웨어를 실제로 보면서 잘못된 가정, 타이밍 문제 및 실제 상황에만 존재하는 기타 문제를 파악할 수 있었습니다. 또한 작업을 계속 진행하려면 하드웨어 파트너와 긴밀하게 협력하는 새로운 환경을 조성해야 했습니다. 즉, 파트너와 협력하여 프로토타입을 만들고, 의견을 교환하며, 기술적 문제를 심도 있게 논의하고, 양방향으로 버그를 보고해야 했던 것입니다. 디자인이 완성되기 되기 전에 문제를 식별할 수 있도록 긴밀한 협업 관계를 공고히 구축해야 했습니다.

USB 3.0 개발이 진행되면서 공동체라는 공감대도 커졌습니다. 소프트웨어의 성패는 바로 그 소프트웨어를 통해 사용하는 하드웨어의 성패에 달려 있기 때문입니다. Microsoft는 하드웨어 산업 파트너와 함께 문제를 파악하고, 솔루션을 개발하며, 새로운 USB 환경의 기반을 마련해 왔습니다.

끊임없는 테스트

PC 내부에 USB 3.0 칩의 지원을 구축하는 데 초점을 맞추면서도 장치를 무시할 수는 없었습니다. 고정 관념에서 벗어나 새롭게 생각해야 했습니다. 전 세계적으로 100억 개 이상의 USB 장치가 있는데, 그 중 일부는 매일 사용되고 일부는 먼지만 쌓인 채 구석에 박혀 있습니다. 하지만 모두 원래 Windows PC에서 사용할 수 있도록 디자인된 것이며 호환성은 Windows의 약속입니다. 고객은 새로운 Windows 버전이 기존 장치 및 드라이버와 당연히 호환되리라 기대합니다. 호환성은 전 제품에 걸쳐 Windows 8에서도 여전히 가장 중요한 약속입니다.

기존의 장치가 너무 많은 상태에서 새로운 장치가 매일 등장하는 데다가 이전 장치를 구입할 수 없는 경우도 많기 때문에 USB 호환성 테스트를 위해 "모든 장치를 테스트(Brute Force)"하는 방법은 적절하지 않습니다. 따라서 현명한 장치 테스트 전략을 개발해야 했습니다. 장치에 대한 통계를 분석한 후 다음과 같은 세 가지 주요 범주로 장치를 분류했습니다.

  1. 장치 인기도
    가장 많이 사용되는 장치에 대한 원격 분석 자료들을 검토한 결과 한 가지 패턴을 발견했습니다. 키보드, 웹캠, 프린터, 저장 장치 등 각 장치 종류는 시장 점유율이 높은 소수의 제조업체에 의해 생산되며 각 업체의 주요 제품 라인은 소량에 불과합니다. 이러한 분석 결과를 통해 장치 중 70-80% 가량을 몇 백 개의 장치로 나타낼 수 있었습니다. 테스터들은 "동등류(Equivalence Classing)"라는 수학 용어를 사용하여 이러한 작업을 설명합니다.
  2. 칩셋
    인기도 데이터만 사용한다면 장치 중 상당한 비율이 테스트에서 누락되므로 실제 회로 디자인 수준에서 장치를 더 검토했습니다. 사람과 마찬가지로 겉으로는 달라 보이는 장치도 내부는 상당히 유사합니다. 모든 USB 칩셋이 작동하도록 하면 이 칩셋을 포함하는 장치도 작동할 가능성이 매우 높습니다. 장치에 포함된 칩셋 제조업체 수는 상대적으로 적으므로 해당 USB IP와 개발 보드를 표본으로 삼기로 했습니다.
  3. 관심도가 높거나 까다로운 장치
    USB 장치가 고객 지원 통화 라인에서 제일 중요한 경우는 드물지만 그러한 경우 Windows에서 이 장치를 사용할 수 있도록 해야 합니다.

10여 년간 USB 부문에서 작업한 경험과 다양한 원격 분석 자료, 수많은 연구 및 토론을 거쳐 Windows 랩에서 정기적으로 호환성을 테스트하는 USB 장치를 대략 1,000개로 줄일 수 있었습니다. 이 장치들은 PC에 연결될 때 올바로 인식되고, 적절히 대기 및 재시작되어 전력을 절약하는 동시에, 다양한 스트레스 조건을 견디도록 보장됩니다. 원격 분석 데이터에 따르면 90% 이상의 장치가 Windows에서 16개의 클래스 드라이버를 사용하지만 더 많은 부분이 커스터마이징된 장치의 경우 가능한 경우 Windows Update에서 해당 드라이버가 자동으로 다운로드됩니다. (단, 이 시나리오를 지원하려면 장치 제조업체의 협력이 필요합니다.) 이전 버전과의 완전한 호환성을 제공하는 USB 3.0에서는 이전 드라이버를 변경하지 않고도 여전히 작동할 것입니다.

저희는 수년간 관찰해 온 모든 범위의 장치 동작을 시뮬레이션하는 맞춤 도구인 MUTT(Microsoft USB Test Tool)를 만들기 위해 막대한 투자를 했습니다. MUTT는 내부에서 처음부터 새로 작성되었는데, 소프트웨어 테스트 엔지니어들이 MS 그림판과 같은 디자인 도구를 사용하여 회로 디자인을 그린 다음, 펌웨어를 개발하고 내부적으로 실행할 새 테스트 콘텐츠를 생성하여 MUTT가 탄생하게 되었습니다. MUTT는 USB 메모리에 있는 1,000개의 장치라고 생각하면 됩니다. 점차적으로 MUTT를 하드웨어 파트너와 공유하게 되었고 하드웨어 파트너는 MUTT를 사용하여 장치를 출시하기 전에 문제점을 발견하여 수정해 왔습니다.

그림 4 - MUTT 디자이너 David Hargrove와 MUTT 장치
MUTT 디자이너 David Hargrove와 MUTT 장치

데모 비디오

USB 3.0의 가장 중요한 측면은 아마도 고객이 USB에 대해 갖는 기대감일 것입니다. 고객은 USB 3이라면 어디에서나 무조건 작동해야 한다고 생각하지 않을까요? 저희의 목표는 가장 견고하고 신뢰할 수 있는 USB 스택을 제공하는 동시에 Windows 8에서 저속, 전속, 고속, 초고속(SuperSpeed)의 모든 USB 장치가 작동하게 하는 것입니다.

USB 3.0에서 대량의 복사 작업을 수행하는 모습을 USB 2.0과 비교하여 볼 수 있습니다.

이 HTML5 비디오는 현재 브라우저에서 지원되지 않습니다.

비디오가 보이지 않거나 재생할 수 없는 경우에는고화질 MP4 | 저화질 MP4를 다운로드하십시오.

- Dennis