Intel의 Atom 설계 : 여정이 시작된다.

1페이지


Atom 프로세서의 설계는 빠른 것을 추구하는 것이 아니라, 손 안에 들어가는 작은 기기에 대한 충분한 성능을 갖는 것이다. ASUS 의 Eee PC 같은 제품은 5년 전에는 존재하지 않았는데, 시스템 성능의 기본 레벨은 간단히 그렇게 좋지는 않다. 오늘날, 좀 더 빠른 시스템에 대한 필요는 있으나 또한 진공관으로 도배하는 시스템같이 공간을 차지하지 않으면서도 그들이 필요하는 성능을 충족시켜준다.

e-mail, 웹 검색과 문서 탐독의 구성하는 작업의 복잡성은 증대하고 있지만, CPU 성능이 증가하는 만큼 증가하지는 않고 있다. 이유는 우리가 쓰는 소프트웨어를 새 술은 새 부대에 담을 때의 하드웨어가 '충분하게' 엄청난 속도로 처리하기 때문이다. 그러므로 ASUS 같은 회사에서 우리가 보았듯이, 이런 유행의 장점을 취하는 것에는 필연적으로 Intel이 같이 경합하게 되기 마련이다.

어렸을 때 내가 제일 좋아하는 영화는 Back to the future였다. 난 제일 처음 2개 영화를 좋아했었으며, 자연적으로 어린이였기 대문에 비디오게임, 자동차 그리고 기술에 빠져들어 2번째 영화도 좋아하게 되었다. Backto the future II에서는 우리의 영웅인, Marty McFly가, 그의 미래의 아들에게 투옥되는 것을 막고 가족을 없애버리는 것을 막으러 미래로의 여정을 떠난다. 미래에서 그는 어이없게도 스포츠 도감을 구입하고 그와 함께 시간을 되돌리려는 시도를 하게된다. 미래에 대한 지식으로 무장된 이 생각은, 과거에 대해 좀 더 좋은 선택을(이경우에는, 좀 더 이득이 되는) 할 수 있게 만든다.

이것은 Marty에게 좀 끔찍한 결말을 짓게 되어 여기서 끝내겠지만, 마지막 문장은 Atom 프로세서에 대한 Intel의 접근으로 요약할 수 있다. 만약 Intel이 과거로 갈 수 있어 과거 15년을 알고 있고 아주 작고, 아주 발열량이 적은 45nm 제조공정을 아는 그들의 엔지니어와 원래 펜티엄 프로세서를 재제조할 수 있다고 상상해보라. 우리는 과거 20년간 가장 빠른 마이크로프로세서를 설계하는 것에 대해서만 생각하는 것으로 시간을 소모했는데, 이것으로 우리는 현재 아주 충분히 빠른 인상적인 마이크로프로세서를 만들 수 있게 되엇다..

아래 차트가 중요한 것을 말해주고 있다.



1993년에, 3.1 million 개의 트랜지스터를 300 제곱밀리미터 가까운 원래 Pentium 프로세서에 밀어넣게 될 수 있게 된 것은 아주 엄청난 것이었다. 오늘날, Intel이 수백만개를 제조한 C2D 프로세서는 각각 1/3의 크기로 줄어들면서 410million 개의 트랜지스터로(원래 Pentium에 비해 트랜지스터 갯수가 130배 늘어났다.) 구성되어 있다.

Intel은 Core 2로 멈추지 않았고, Nehalem은 아주 엄청난 성능을 제공할 것이며 밀어넣는 트랜지스터 갯수도 훨씬 많아질 것이다. 세대의 끝에서 우리는 데스크탑 마이크로 프로세서가 billion이 넘는 트랜지스터를 넣는 것을 볼 수 있을 것이다. 흥미로운 것은 그러나 하이엔드에서 얼마나 많은 것을 밀어넣을 수 있느냐가 아니라, Intel이 로우엔드 설계에서 얼마나 단순설계를 할 수 있느냐는 것이다.



오늘날의 45nm에서 무엇이 가능한가...

294제곱밀리미터의 다이사이즈에서, Intel은 저가형 기기에 사용할 원래 Pentium 프로세서의 제조를 할 수는 없었지만, 오늘날은 좀 달라졌다. Intel은 커다란 0.8 micron 제조공정에서 칩을 제조하지 않고, 우리는 이제 곧 45nm 로의 전이를 시작하고 있다. 이게 바뀌지 않은 채로 남았다면, Intel은 원래의 Pentium 프로세서를 최근의 45nm 공정으로 다이 사이즈를 3제곱밀리미터 보다 더 작은 크기로 제조할 수 있었을 것이다. 만약 당신이 Intel이 오리지널 Pentium이 데뷔한 이후로 지난 15년간 무엇인가 배운것이 있다는 것을 고려한다면 상황은 좀 더 재밌어진다. 단순 x86 설계에서 관련되어 현재에 어떤것을 할 수 있는지 상상해보라.

2페이지.

Intel은 메인스트림에 초점을 맞추고 있다.

우리는 대부분의 데스크탑과 노트북에서의 빠른 프로세서에 대한 논쟁을 아주 쉽게 할 수 있지만, 이제 우리는 그런것보다 유비쿼터스에 컴퓨팅의 경계에 서있다. 우리의 데스크탑과 노트북은 아주 빠르며 기본적인 기반에서 우리가 사용하는 한은 모든 전자기기에서는 비슷한 기능과 응답성을 기대할 수 있다. 가장 최근에 이것을 방해하는 것은 스마트 폰이다. ; 스마트폰은 우리가 그것들에게서 요구하는 작업의 종류에 따라 훨씬 더 복잡해졌는데, 아직 그것들의 인터페이스는 PC 기반에 익숙한 우리들이 쓰기에는 약간 이질적이다. Apple은 이것을 iPhone으로 바꾸어 보려 했지만 여기에는 좀 더 개선의 여지가 많다. 우리는 더 많은 편의 소비가전에 대한 같은 종류의 문제를 많이 봤었다. PC들과 가격이 같은 Blu-ray 플레이어들은 부팅에 더 많은 시간을 소비하고 메뉴 화면에서 느리다. 우리는 Half-Life 2는 200fps로 동작시킬 수 있지만 리모트 컨트롤에서 버튼 누르기에 따른 빠른 응답을 TV의 User Interface에서는 이룩할 수 없는 것일까?



대부분의 소비가전 산업에서의 문제는 너무나도 일상화 되었다는 것이며 LCD가 충분히 싸져 안방에 놓여 전시용으로도 활용될 수 있는 다방면의 기능성을 가질 수 있는 세계로 빠르게 들어왔다는 것이다. 여기에는 TV들이나, Blu-ray 플레이어나 심지어는 간단한 이동형 GPS 유닛 같은 곳에도 몇백달러의 비용이 소모되는 위력적인 CPU가 들어갈 곳이 없다는 것이다.

텔레비젼의 인터페이스, GPS에서의 소프트웨어 누적치나, 심지어 Blu-ray 플레이어의 디코딩 되지 않은 컴포넌트에 요구되는 연산력은 가장 싼 데스크탑 프로세서라도 쉽게 조종할 수 있다. 문제는 우리가 이 기기들을 빠르게 "만들 수 있냐" 가 아니라, 그들을 빠르게 만들 수 있는 최소한의 CPU가 어떤것인가 이다.

이런 CPU들은 저전력, 저가형이지만 성능 희생을 하지 않아야 한다.

당신은 이 때 우리가 말한 어플리케이션의 종류가 Pentium III나, 심지어 Pentium M의 첫세대일지라도 쉽게 만족할 수 있을 것이라고 주장할 수 있는가? 그리하면 이제 Moore의 법칙으로 들어가서 보자.

몇년 전, Pentium III, Pentium 4와 Pentium M은 오늘날의 C2D 프로세서들 같이 비싸게 만들어졌었다. 그 때 그것들의 트랜지스터 갯수를 비교하자면 데스크탑 기준으로 400~800 million 개 정도였다. 2년간 우리는 데스크탑 CPU에서 1billion이 넘는 트랜지스터를 보게 될 것인데 단가는 오리지널 Pentium 프로세서보다 더 적게 들 것이다. 그러나 만약 우리가 다른 시각으로 보았다면 - 일상품화된 소비가전에의 사용에 충분하고 싸면서 히트싱크가 없이도 작동할 정도로 저전력인 오리지널 Pentium M 프로세서의 성능을 제공하는 마이크로 프로세서를 설계하는 것이 가능하지 않았을까?

3페이지.

AMD가 나에게 가르쳐준 것 - x86은 어느곳에서나 있다.

AMD가 x86 ISA(Instruction Set Architecture) 를 64 비트로 확장하려는 그들의 의도를 처음 발표 하였을 때, 나는 AMD의 예전 CTO인 Fred Weber에게 x86을 확장하거나 만약 Intel이 Itanium과 그들의 새로운 ISA 상표명으로 안성맞춤으로 전진한다면 어떨까를 물어보았었다. 그의 응답은 그당시에는 말이 되었었으나, 나는 그의 말을 그렇게 크게 해석하지는 않았었다.

Fred는 x86 호환성 유지에서의 오버헤드는 거의 무시해도 되는데, 그 당시 10% 정도의 다이가 x86 디코더였으며 이 퍼센티지는 시간이 지나면서 점점 줄어들 것이라 하였었다. 우리는 K8 프로세서의 트랜지스터 갯수가 Fred가 말하던 그 때에 비해 8배 증가하였으며 x86 하위 호환성을 유지하는데 드는 비용은 아주 적은 숫자로 줄어들게 되었다. 그러나 하위 호환성에 대한 이익은 엄청나다.

오늘날 PC 영역의 모든 것은 x86으로 쓰여졌다. 소비가전의 세계도 별반 다르지 않다. 우리는 웹브라우져나, 이메일 클라이언트나, 또는 간단한 네트워크 미디어 플레이어 같은 PC 어플리케이션들이 소비가전 기기에서 동작이 되는 것을 보는 횟수가 점점 늘어나고 있다. 불행하게도, 이들 소비가전 기기들은 x86 플랫폼에서 작동하지 않으므로 제조사들은 그들 플랫폼에 오픈소스 어플리케이션을 접합시키거나 그들 고유의 것을 개발해야 한다.

일반적으로 말하기에, 문제는 최고의 어플리케이션은 현존하는 PC에 있다는 것이다. Sony 같은 회사에 우리가 원하는 것은 웹브라우저 시장에 진입하는 것으로, Firefox나 IE를 내 인터넷 TV나, 주방의 내 터치 스크린에서 나오게 하고싶다. 확실히 이것은 어떠한 설계에서도 접합시킬 수 있겠지만, 소프트웨어 개발자들은 다수 플랫폼을 지원하는 것을 확시히 좋아하지 않는다. - 디버그와 유지보수에 아주 많은 시간이 걸리며, 비용 문제도 만만치 않다.

Fred의 컨셉은 모든 곳에 x86이 있다는 생각인 2002년으로 돌아가서 나를 이해 시키려는 것이었다. 명령어 셋이 문제가 아니라, 어떠한 기기에서도 가상적인 상황으로 같은 코드로 작동 시킬 수 있느냐는 것이었다. 난 항상 Apple이 그들 제품 라인업에서 컴퓨터 같은 기기로 되었음에도 x86을 돌리지 않는 iPhone을 증오 했어야 했다는 것을 지적한다. 이것은 Apple이 특히 iPhone에 대해 완전히 분리된 소프트웨어 스택을 유지보수 했어야 함을 의미한다.



Fred는 옳았다. 컴퓨터가 좀 특별한 방법으로 우리 가정에 침투했기 때문에, 모든 기기에서 같은 어플리케이션이 작동해야 한다는 것은 더욱 중요성이 높아져 갈 것이다.

아이러니한 것은, Fred Weber가 이 문제를 나에게 처음 알렸을 때, Intel이 처음으로 행동으로 옮겼다는 것이다.

4페이지.

성공의 전주곡

이 모든 것은 Texas 주의 Austin에서 2004년에 시작된다. 위치가 이상하지만, 나는 AMD가 아닌 Intel에 대해 말하고 있다. 2004년에, Intel의 Austin Design Center는 Pentium 4 프로세서 제품군의 또다른 멤버에 대한 작업을 열심히 하고 있었다. - 코드명 Tejas 였다.

Tejas는 Prescott 후에 나오게 계획되어 있었으며 NetBurst 라인을 이을 것이었지만, 역사를 보면 알 수 있듯이, Tejas는 빛을 보지 못하였다. 프로젝트는 취소되었으며 Intel의 통합된 관심은 Pentium M 아키텍쳐와 데스크탑의 성능을 향상시키는 것으로 옮겨갔다.

Tejas 팀은, 당신이 예상 했듯이, 그들의 프로젝트가 취소 되었다고 해서 개인적으로 기뻐하지 않았다. 그러나, Intel의 최고의 엔지니어와 취소된 프로젝트의 케이스를 되짚어 볼 때, 그들은 그들의 실망을 열정과 그들의 다음 설계에 대한 흥분으로 바꾸었다.

각설하고, 또다른 Intel의 성공 이야기와 두드러지게 비슷한 점을 오리지널 Centrino 에서 집어낼 수 있다. Banias는 첫 Centrino 프로세서였으며, 후에 Pentium M으로 명명되었다. Banias를 작업한 팀은 거의 마지막 공정에서 취소된 다른 프로젝트인 Timna에서 작업한 팀과 동일하다. Timna가 취소된 후의 팀은, Intel의 Israel Design Center에서 작업하게 되는데, Banias에 대한 작업 명령을 받기 전에는 1달 동안 집단적으로 가볍체 침체되어 있었다. 그들은 무언가의 아류작을 내놓는 대신, 그들이 열중했던 Timna 프로젝트를 취소한 사람들에게 무엇인가를 증명해야 할 필요를 느꼈다. 그 결과는 Pentium M으로 되어, Core Duo와 특별히 우리가 오늘날 아주 사랑하는 Core 2 제품군의 프로세서를 주었던, Banias로 나타났다.

Austin으로 돌아가자. 우리는 Tejas에 대해 열심히 작업 하였던 사람들의 작은 팀을 알았고, 그들은 아무것도 할 것이 없다. 그들의 가치를 증명하는 것은, 2004년 팀이 새로운 명령을 받는 것으로, 똑같은 과정이다.

과제는 저전력이고, 다수코어 CPU 설계에 쓸 IA(Intel Architecture, x86이라고 읽는다.) 코어를 개발하는 것이다. 이 코어가 다수 코어 CPU에 쓰일 것이기 때문에, 이것은 아마 아주, 아주 저전력일 것이다. (10여개의 코어가 각각 100w를 먹는 CPU를 쓸수는 없을테니까.)



다수코어 CPU 설계는 Intel의 미래이며, Atom은 다수코어 기반에서의 뿌리가 된다.

Austin의 설계 팀에게 경영진이라면 좀 심기를 건드릴 질문을 하였다. - Tejas 같은 전력소모가 심한 설계에서 배울 점은 몇와트 더 소비하는 것 밖에 더 있느냐 하는 것이었다. 외관상으로 Tejas 설계에서는, Austin에서의 작아진 팀은 일종의 길찾기 작업을 하고 있었는데, 간단한 코어로 초저전력 소모에 대한 작업이었다. 이 길 모색 작업에 1년여의 시간을 쏟은 이후, 외부에서의 시각에도 불구하고 그들은 Tejas에서 초저전력 소비 시스템의 다른 어떤 것으로의 전이를 할 수밖에 없었다.

이런 새롭고, 저전력 소모 코어를 개발하는 많은 설계자들이 실제적으로 다른 마이크로프로세서 회사에서 온 것이다. Core 부문 수석 설계자인 Belli Kuttanna는, Sun에서 SPARC 프로세서를 작업하였고 Motorola 에서 Power PC의 설계 요소도 작업하였었다. Belli는 Sun과 Motorola에서 다른 사람들과 작업 하였었으나, 현재 다른 그들은 모두 Intel의 아래에 있다. Core를 작업하던 팀의 한 멤버도 또한 AMD의 직원이었다.

2004년 초는 새로운 저전력 소모 코어를 개발하기 위해 필요한 것을 찾는 노력이 처음 시도되는 해였다. 이 코어의 코드명은 Bonnell인데, 이것은 Austin에서 가장 큰 산의 지명으로 전에 언급한 것이었는데, 750 ft 정도밖에 되지 않는다. 이 맵시있는 산은 이 새롭고, 작은 코어에는 딱 알맞았다. (엔지니어들은 작명에 있어 그다지 창조적이지 않다. ;) )

개척하려는 노력에 대한 첫걸음은 Bonnell이 현존하는 Intel 마이크로 아키텍쳐에 기반하는가를 찾아내는 것이었다. 이 작은 팀은 Pentium M이나 아직 배포되지 않은 Core 2 의 재사용을 보았으며 이들 옵션은 두가지 모두 몇몇 분석이 된 상태였다. 현존하는 설계의 사용으로 목표로 하는 전력소모량과 성능을 만족시키리라는 것이 불가능 하다는 결론을 얻을 때까지는 그리 긴 시간이 걸리지 않았다. Intel이 Centrino로 발견했기 때문에, 새로운 시장을 목표로 삼기 위해 새로운 마이크로프로세서 설계를 사용하는 것이 필요해졌다.

팀은 백지상태로 다시 돌아와 가장 단순한 마이크로프로세서 설계로 시작하였는데, single-issue, in-order 코어로 시작하였다. 설계자들은 그 당시에 성능과 전력 소모가 목표치에 도달할 때까지 반복하였다. 2004년도에, Intel은 이 코어가 정확히 어디에 쓰일지 좋은 아이디어를 갖고 있지 않았다는 것을 알아야 한다. 2004년도로 돌아가서 3세대 iPhone 같은 무엇인가에 특별히 쓰여질 수 있는 마이크로프로세서 아키텍쳐를 디자인 하는 것을 예상한다고 상상해보라. - 이것은 확실히 불가능하다.

2004년 말에, Paul Otellini는 Austin 팀에 Bonnell 코어가 독립형 CPU로 쓰일 것이라는 제한된 방향을 주었다. - 다수 코어 설계 노력의 부분에 반하는 것이다. 이 CPU는 UMPC에 쓰일 것이며 미개척지인 MID(이동형 인터넷 기기) 에도 쓰일 것이었다. 다수코어 디자인은 여전히 개발중이고,  이 개발 중인 것의 결실은 Larrabee라 불리우는 작은 보석으로 우리에게 선보일 것이라 추측된다.

Bonnell은 단지 코어일 뿐이지만, L2 캐시와 외부 버스 인터페이스가 혼합되었을 때 이것은 내부적으로 Silverthorne이라고 알려져 있는 CPU로 된다. 더욱 최근에는, Intel은 Silverthorne에 Atom 프로세서라는 정식 명칭을 붙였다.

5페이지

Atom 훔쳐보기

Intel의 45nm 제조 공정으로 만들어진, Atom은 25제곱 밀리미터보다 작은 다이 크기와 13mm*14mm 패키징 사이즈로 Intel의 가장 작은 x86 마이크로 프로세서이다. 세분된 시장을 목표로 잡던 예전 Intel 프로세서 답지 않게, Atom은 100% x86 호환이다. (Merom의 ISA는 뚜렷하게, Penryn SSE4 지원이 다이/전력 제한으로 인한 것이 아니다.)

고수준 레벨에서, Atom을 특이하게 인식하게 할 설계상의 몇몇 특징이 여기 있다. 우리는 이런 몇몇에 대해 다음 페이지에서 알아보기로 하자

6페이지

Intel의 Atom : Intel을 안에서부터 바꾸는 것

몇년간 Intel의 최고 지향점은 전력대 성능비였다. : 만약 거의 2% 전력 소모가 늘어날 때 1% 성능을 증가시킬 수 있는 기능을 설계자가 추가할 수 있었다. 불행하게도, 이런 생각은 우리들에게 Pentium 4와 이들 자매품에 쓰이던 NetBurst설계를 주었다.

Intel Atom은 Intel CPU에게 최고 지향점을 재설정하게 만든 첫번째이며 현재의 요구사항은 1% 전력 소모가 늘어날 때 1%의 성능을 증가시킬 수 있을 때 디자이너가 기능을 넣을 수 있는 것이다.  이것은 엄청나게 혁명적인 변화이며 이것은 다른 Intel 아키텍쳐에서도 볼 수 있을 것이지만, (Nehalem을 염두에 두고) Atom이 처음이었다.

Atom이 single-issue, in-order 마이크로 프로세서로 시작하였을 때, Austin 팀은 빠르게 이것을 dual-issue 코어로 넓혔다. in-order 결정은 그러나 교착상태에 빠졌다.

오늘날 x86 프로세서는 명령어를 out of order로 수행할 수 있다. 이것은 마치 당신이 신발을 신고 TV를 켜야할 때, 당신은 신발을 먼저 신고 TV를 켜기 위해 리모트 컨트롤로 걸어가는 것을 선택할 것과 같다. 당신 손에 리모트가 들려있지 않았다면 더 많은 시간이 걸리니 리모트로 먼저 간다면 더 빠르게 일을 끝마칠 수 있을 것이다. 프로세서들도 같은 방법으로 OoOE(Out of Order Execution) 를 할 수 있다. : 데이터가 그들의 캐시에 있지 않을 때 데이터가 오기를 놀면서 기다리는 대신에, 그들은 메모리에서 페치 해 올 데이터를 요구하기 위해 기다릴 때 다른 명령어를 실행할 수 있는 것이다.

이들 비순차적 실행 프로세서들의 문제는 이 모든 명령어 재명령이 추가적인 다이 공간과 추가 전력 소모를 일으킨다는 것이다. 성능은 증가하겠지만 기억할 것은, Intel의 목표는 제일 빠른 것이 아니라, 충분히 빠른 것이라는 것이다. 그러므로 Atom은 순차적 실행 CPU로 남아, 비순차적 프로그램 오더를 실행할 명령어의 부재와 오리지널 Pentium 프로세서 이후로 Intel의 첫번째 순차적 x86 코어가 되었다.

순차적 명령어 체계로 감으로 인해 더 복잡하고, 전력에 굶주린 회로에 대한 필요를 불식시켰다. 당신이 비순차적 실행에서 더 좋은 성능을 얻으려 할 때, 이에 따라 스케쥴링의 복잡도의 증가는 45nm의 Atom에서는 너무 거대했다. 비순차적 실행이 Pentium Pro까지의 Intel CPU에게는 가능하지 않았다는 것을 기억하고, Atom에 OoOE 엔진을 넣을 정도로 트랜지스터 크기가 충분히 작아질 때가 언젠간 올 것이다. 그러나 다음 5년 안에 이런 변화를 볼 것이라고는 예상치 않는다.

7페이지

이중실행과 순차실행 : Cell의 PPE의 Intel 버젼

Austin 설계 팀은 한개실행 순차 코어로 시작하였지만 재빠르게 슈퍼스칼라, 동시에 2개 명령어를 파이프라인으로 보낼 수 있는 능력이 있는 이중실행 설계로 확장하였다. 대부분의 x86 데스크탑 마이크로프로세서들은 3이나 4중 실행 설계 디자인을 따르고 있다.


이중 실행 머신에 명령을 주기 위해, Intel은 Atom에 2개의 디코더를 장착하였다. 이 디코더들은 L1 명령어 캐시에서 명령어를 페치해오며 1s와 0s의 배열 순서를 정하여 어떤 명령어가 CPU가 할 것을 말해주는 지를 가려내게 된다. 디코더들이 명령어를 디코딩하는 능력이 동등할 때, 명령어가 취할 길은 2가지가 있다. : 느린것과 빠른것.

초창기의 x86 명령어 셋 아키텍쳐는 그것의 다양한 길이의 명령어 지원에 대한 많은 불만사항이 있었다.

만약 매 10초마다 내가 당신에게 2개의 오렌지를 줄 것이라고 말하면, 당신의 일은 매 10초마다 1개와 3개 사이의 오렌지를 무작위로 당신에게 준다고 말하는 것보다 훨씬 쉬워질 것이다. 전자에 관한 예시는 고정된 길이의 명령어 셋이며 후자는 가변길이의 명령어 셋인데, 불행하게도 x86은 후자의 영역으로 빠지게 된다.

Atom의 느린 디코딩 경로는 어떠한 추론적인 디코딩도 포함하고 있지 않다. 명령어들은 수동적으로 순서가 매겨지는데, 이것은 각각의 비트가 (시간을 소비해도) 관심을 받게 되지만 명령어는 정확히 디코딩 된 것에서만 실행된다는 것을 의미한다. 명령어는 또한 표지가 되어 다음번에는 바로 통과하여 빠른 경로로 바로 보내질 수 있게 된다.

빠른 경로는 명확하게 약간의 추론적인 디코딩을 하며 이것은 느린 경로를 지나간 표지 비트가 돕게 된다. 이 느린 경로는 3클럭마다 1명령어를 생산하는데, 빠른 경로는 매 클럭당 2개의 명령어를 생성해낸다.

Intel이 Banias(Pentium M)에서 배웠기 때문에, 틀린 추론에 대한 성능 페널티는 배터리에서 구동하는 기기에 대해서는 용납되지 않는다. 이제 당신은 Atom 프로세서에서 저전력 구동을 유지하기 위하여 추론적인 성능 속임수가 있는 곳들이 댓가로 희생되는 것들을 몇몇개 볼 수 있을 것이다.

8페이지

명령어의 불안정 : 안전 명령어 인식

편리한 순차 실행 아키텍쳐에서 가장 두려운 것은 필요로 하는 데이터가 캐시에서 사용이 불가능 하여 높은 지연시간을 갖는 명령어가 나올 때이다.

순차 명령 마이크로 프로세서가 명령어를 순차실행으로 실행시켜야 할 때부터, 실행 유닛은 CPU가 필요로 하는 데이터를 메인메모리에서 받을 수 있을 때까지 놀게 된다. - 이런 연산 과정은 쉽게 몇백 클럭 사이클을 취하게 된다. 여기서 클럭 사이클 간의 문제는, 전력은 쓰면서 아무 일도 완료 못한다는 것이다. - 이것은 우리가 초저전력 마이크로프로세서에서 원하는 것과 정확히 반대되는 것이다.

비순차적 실행 프로세서들은 이런 문제를 의존적인 명령어는 간단히 스케쥴링으로 우회함으로써 풀게 된다. 스케쥴러는 준비가 된 실행 단계를 다음 명령어로 선택하고 작업을 진행하는데 이때 데이터 의존적인 명령어는 메인메모리에서의 데이터를 기다리게 된다. 우리는 완전한 OoOE 코어는 Atom에게 너무 전력을 소모하게 만드는 것임을 이미 알지만, 순수하게 순차적 설계 디자인을 하는 것 또한 비효율적인 가능성을 안게 된다. Intel의 Austin 팀은 Atom에 대해 영리하게 중립적 입장을 넣게 된다.

Safe Instruction Recognition (SIR, 안전 명령 인식) 이라고 불리우는 알고리즘이며 이것은 이렇게 작동한다. 만약 Atom이 긴 지연시간을 가지는 부동소수 연산을 계산할 때 뒤따라 오는 것이 짧은 지연시간을 가지는 정수 연산일 때 당신은 일반적으로 FP 연산이 끝날 때까지 성능 저하를 겪게 된다.(우리가 위에 기술한것과 같이.) SIR 알고리즘은 2개의 명령어를 보며 그 2개 명령어가 어떠한 데이터 의존성이 있는지를 판정하게 된다. (예를들어, C=A+B는 D=C+F에 딸려오게 된다.) 만약 그들이 의존성이 없다면 그때 Atom은 "younger"로 되어, 짧은 지연시간을 가지는 연산이 긴 지연시간을 가지는 FP 연산에 앞서서 계산될 것이다.

SIR 주소들은 아주 특정한 경우이지만 이것은 Atom의 아주 엄격한 순차 실행 설계에서 약간의 비순차적 연산 여신을 흩뿌리게 된다. 만약 미래의 Atom의 후계자가 이런 종류의 비순차적 계산의 속임수가 확장된 상황이 되더라도 별로 놀랍지는 않을 것이다.

9페이지.

CISC의 귀환 : Macro-op 실행

Pentium Pro는 1990년 초에 RISC와 CISC의 논쟁에 종지부를 찍은 Intel의 첫번째 CPU이다. 프로그래머에게는 이것은 이전 Intel 프로세서와 같이 여전히 x86 CISC 머신이지만, 내부적으로 이것은 이것의 x86 명령어를 받아 그것들을 작은 micro-op으로 바꾸어 간단하고, 빠르고 더 효율적인 RISC 코어에서 작동시키게 된다.

모든 이전 x86 프로세서와의 하위 호환성을 유지하여 고성능 RISC 코어에 기반하여 약간씩 발전하면서 Intel은 그들의 CISC 아키텍쳐의 주된 장점을(주로 정착된 x86 사용자가 기반이 되어) 지렛대로 된다.

몇몇 x86 명령어는 각기 서로 증대시키기 때문에 더 작은 micro-op 들로 분쇄되어 나올 수 없다. Pentium M에서 intel은 특정 micro-op 들을 융합시켜 1개 명령어로 만들어 그리하여 그것들이 프로세서의 파이프라인으로 들어가게 되어, 전력을 절약하고 효율을 높이게 되었다. Intel은 이 기능을 micro-op 융합으로 부르게 된다. 만약 2개의 micro-op이 1개로 간주되면 파이프라인으로 내려갈 때 효율적으로는 CPU의 "대역폭"을 늘리게 되어, 더 많은 명령어를 한번에 처리할 수 있게 한다. 코어 내부는 여전히 대부분 RISC 머신이고, 이것은 단지 특정 환경에서 약간 더 무엇인가를 할 수 있을 뿐이다.

Atom은 한 발 더 앞서서 대부분의 x86 명령어는 내부적으로 micro-op 이하로 분쇄되지 않게 된다. Atom이 비순차적 실행 코어가 아니기 대문에, 최적의 연산을 위해 그들에게 재명령을 할 수 없어 많은 수의 micro-op들이 실행된다는 것은 확실히 말이 안된다. 게다가, 1개의 연산자로 대부분의 명령어를 저장하는 Intel은 Atom의 "대역폭"을 효율적으로 늘릴 수 있을 것이다.



load-op-store 나 load-op execution 의 형태의 명령어들은 Atom의 디코더에 의해 1개 micro-op으로 간주될 것이다. 다시 말하자면, 만약 당신이 data 로드와, 이것을 수행하며, 결과를 저장하는 명령어를 갖고 있다면, - 이것은 이제 3개로 분해되는 대신에 1개의 micro-op으로 간주될 것이다. 이렇게 됨으로 해서 갖는 이점은 단지 1개의 micro-op이 파이프라인으로 들어가서, 또다른 1개에 자리를 양보하게 된다. Atom은 듀얼이슈 아키텍쳐만 되지만, 특정 상황에서는 훨씬 더 넓은 대역폭을 가진 머신처럼 행동할 수 있다.

Intel은 지난 몇 세대 동안 x86 명령어를 더 작게 만드는 그들의 능력의 완벽함에 시간을 들였는데, 이들 작디 작은 연산자들을 위해 RISC같은 수행과 고성능 코어 설계에 중점을 둔 것이다. 가장 흥미로운 것은 와트당 성능에 주안점을 두었던 Intel이 현재는 반대가 되어 많은 경우 이들  x86 명령어들을 잘게 쪼개던 것을 쪼개지 않음으로 인해 역사는 계속 돌고 돈다.

10페이지

비록 다수 스레드를 처리하지만 : SMT의 경우

듀얼 이슈이지만, 그 둘 간의 데이터 의존성으로 인해 2개 명령어를 병렬적으로 1개 스레드에서 실행시키는 것은 항상 쉬운 것이 아니다. 이 문제에 대한 Intel의 솔류션은 (불행하게도 전 모델에 걸친것은 아니지만) Atom에서 SMT(동시적 멀티 스레딩, Simultaneous Multi-Threading)를 사용하여 2개 스레드 까지 실행을 동시에 하는 것이다. Hyper Threading의 귀환을 축하한다.

전력/성능 중시 지침을 포기하는 댓가가 무엇인지 기억하는가? SMT를 Atom에 사용하기로 한 Intel의 결정은 이런것에 대한 완벽한 예시가 되겠다. SMT는 Atom에서 최대 20%의 전력 소모량을 증가 시키지만, 이것은 또한 순차적 코어 에서 30~50%의 성능 증가도 되게 된다.

이 Atom은 32 엔트리 명령어 스케쥴링 큐를 갖고 있지만, SMT가 사용되면서 작동될 때 각기 스레드는 그들 고유의 16 엔트리 큐를 가지게 된다. 이 스케쥴러는 각 클럭마다 스레드간 전환을 할 수 없는데, 아주 지능적으로 수행하여, 제한이라고는 클럭당 2개 연산자를 처리할 수 있다는 것 뿐이다. (이 머신은 2개 대역 머신이기 때문이다.) 1개 스레드가 명령어를 완료하기 위해 데이터를 기다린다면, 다음 클럭 상승기 때 이 스케쥴러는 실행되기를 바라마지 않는, 분리된 스레드에서의 연산자를 처리하는 것을 고를 수 있다.

Atom을 멀티스레드가 가능하게 만들어 낸 것은 논리적인 관점에서는 아주 완벽한 감각이다. 순차적 처리 코어의 단점은 실행을 시작하기 위해 데이터를 기다리는 명령어가 있을 때 나머지 파이프라인은 데이터 의존도가 해결될 때까지 놀고있게 되는 것이다. 이것은 2개의 독립된 스레드가, 높은 이질성을 가진 캐시 미스율을 가지고, 독립적 명령어를 가지게 되는 기회를 잡게 된다.

실행 유닛들

Atom은 광대역 프로세서가 아니고, 순차적 명령어를 앞세우며 온다이 메모리 컨트롤러가 없어 이것은 우리가 볼 엄청난 명령어 처리량에 비해서는 이질적이다. 데이터 의존성은 몇천개의 실행 유닛이 노는 상태로 되는 데에 지대한 공헌을 하므로, Atom의 설계자는 실행 유닛의 갯수를 최소한으로 포함하는 데 최선을 다하였다.

여기에는 분리된 정수 배산기나 배분기가 없으며, 이들 기능들은 SIMD FP 유닛들과 공유된다. 여기에는 2개의 SSE유닛과 스케쥴러가 있어 부동소수나 정수 SIMD 연산을 주어진 클럭에 두 포트에 모두 디스패치 할 수 있다.

모든 기능 유닛들은 전대역의 SIMD 정수와 단정도 FP ADD 연산을 지원을 제외하고는 64비트 폭이다.

출처: http://anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3276&p=1

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.