테크노아
> 기획&벤치 > 강좌
IA-64 Architecture : Itanium
테크노아  |  webmaster@technoa.co.kr
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
승인 2000.02.19  11:06:00
트위터 페이스북 미투데이 요즘 네이버 구글 msn


Prediction v. Predication

완벽한 파이프라인화를 막는 또다른 장애물은 branch이다. branch는 프로세서가 어떤 비교후 어디로 분기해야 할지를 결정하는 코드상의 분기점이라 할 수 있다. 컴퓨터가 유용한 장치인 것은 이러한 결정을 할 수 있는 능력을 가졌기 때문이며, 인텔은 이에대한 문제를 모두 제거하지는 못하고 이를 재정의하고 있다.

다음은 기존 아키텍처에서 동작하는 branch의 가상(pseudo) 코드이다.

If A is greater than 5 then
Do something...
Else
Do Something Else...

이 코드는 변수 A의 내용을 점검하여 어떤 코드 스트림을 실행할지를 결정하게 된다. 현재의 프로세서들은 이러한 선택의 문제에 직면했을 때 기존의 각 branch에서의 결과를 종합하여 그 결과에 따라 나아가야할 방향을 예측하게 된다. 바로 이것을 prediction(예측)이라 한다. IA-64는 predication을 허용하며, 의도하는대로 병렬 수행으로 같은 작업을 할 수 있다. Itanium에서 상기 코드는 다음과 같이 표현되어진다.

If A is greater than 5 then set P1 true, else set P2 true.
[If P1 is True] Do something...
[If P2 is True] Do something different...

위의 코드가 구조상에 있어서 크게 다르게 보이지 않을지라도 프로세서 입장에서는 커다란 차이로 받아들이게 된다. 이는 Itanium이 동시에 두가지 코드를 모두 실행할 수 있지만, 실행하기로 되어있는 코드에 따라 그 차이가 있기 때문이다. 이 예에서는 2가지 가능한 선택밖에 없지만, 상황에 따라 최대 64개의 predicates이 들어갈 수도 있다. 그리고 이렇게 수없이 포개진 루프들이 하나의 predicate으로 구성되지 않는다면 아마 파이프라인은 막혀(?) 버릴 것이다.

 

Data and Control speculation

코드 branch를 무리없이 다룰 수 있는 다른 방법들도 있다. 프로세서는 과거의 성능을 살피는 것 이외에는 코드 branch를 선택하는데 있어 어느쪽이 유리할지 알 길이 없지만 컴파일러는 그렇지 않다. 이러한 점을 십분 활용하여 인텔은 IA-64 명령어 집합에 Data and Control Speculation을 추가했다. 이 새로운 명령어 집합은 컴파일러가 필요로하는 데이터를 메모리에서 데이터를 읽어들여 앞으로의 사용을 위해 캐시에 미리 저장해두는 것을 가능하게 하고 있다. 물론, 이는 프로세서가 자동으로 메모리의 다음 부분을 읽어 다음에 올 만한 것을 미리 캐시에 채워넣기 때문에 일반적으로 필요로하는 것은 아니다. 하지만, 만약 branch가 메모리의 어떤 다른 곳으로 점프(이동)하게 한다면, 프로세서는 일반적으로 다음 명령어가 메모리로부터 불려올 때까지 기다려야만 한다. 좋은 컴파일러라면 IA-64 프로세서에서 이러한 일이 발생하지 않도록 해줄 것이며, 하드웨어 역시 이전에 사용되었던 미리 로드된 데이터에서 변경된 것을 자동으로 찾아줄 것이다.

 

레지스터의 증가

인텔 32bit 프로세서에 대한 가장 큰 불만 사항중 하나는 레지스터가 부족하다는 것이었다. 인텔은 IA-64를 "Massively Resourced"라 부르고 있으며, 이것이 의미하는 바는 인텔이 그들의 아키텍처에 드디어 다른 현대의 CPU에서 제공하는 수준의 리소스를 제공한다는 것이다. Itanium은 128개의 정수/멀티미디어 레지스터와 128개의 82bit 실수 레지스터, 64개의 predicate 레지스터, 8개의 branch 레지스터 등을 포함하고 있다. 이 많은 수의 레지스터를 통해 인텔은 동적 레지스터 스택 엔진(dynamic register stack engine)을 통합하고 있으며, 이를 통해 멀티태스킹 어플리케이션의 성능을 크게 향상시키고 있다.

모든 멀티태스킹은 정해진 CPU 타임의 조각을 각 프로그램에 할당해 줌으로써 이루어진다. 하나의 프로그램 조각이 끝나고 또다른 프로그램이 시작하는 것을 context switch(역자주 : 프로그램은 바이너리 코드의 문장이라 할 수 있고 현재 실행중인 문맥을 다른 부분으로 전환한다는 의미로 이해하면 될 것이다.)라 한다. 대부분의 프로세서들은 다음 프로그램이 접근하는 것을 허용하기 전에 레지스터의 상태를 메모리에 저장하도록 하고 있다.(만약, 그렇지 않으면, 이전 프로그램에서 사용되던 데이터는 다음 프로그램에 의해 덮어써질 것이다.) IA-64는 context switch가 일어나는 매 순간 레지스터들을 동적으로 할당하며, 컴파일러는 사용하고자 하는 레지스터의 개수만큼 각 프로그램에 alloc(allocation) 명령어를 추가시키도록 하고 있다. CPU는 많은 레지스터의 이름을 변경하고 각 프로그램에서 이를 사용할 수 있도록 할당해 준다. 그리고, Itanium은 다음 프로그램에서 프로세서를 사용할 시점에서는 데이터를 메모리에 저장하는 대신, 레지스터의 이름을 변경하여 다음 프로그램에 깨끗한 레지스터 집합을 제공하여 사용할 수 있도록 한다. 이렇게 함으로써 더 이상 느린 메모리 접근은 필요가 없게 되는 것이다.

 

실수 및 멀티미디어 성능

G4의 경우 AltiVec 명령어 집합을 사용하여 초당 10억개의 실수 연산(1 GigaFLOP)을 가능하도록 하고 있으며, 동시에 처리될 수 있는 다중 명령어의 제한으로 인해 다소 불안정한 수치를 보일 수 있다. 반면, 인텔에 따르면 그들의 IA-64 프로세서는 다중 실수 연산 유닛을 통해 6 GigaFLOP을 지원할 것이라 한다. Itanium은 또한 IA-64 코드 자체로서 멀티미디어 명령어를 지원한다. 이러한 Itanium의 명령어는 AltiVec 또는 SSE 명령어에 필적하지만, 실제 성능상의 잇점은 테스트를 위한 최초의 제품이 나오기까지는 알 수 없는 것이 사실이다. IA-64 시스템은 또한 MMX와 SSE 명령어가 가능하지만, 호환성 측면일 뿐이다. Itanium의 성능을 최대로 활용하기 위해서는 프로그램이 IA-64 멀티미디어 명령어로 작성되어져야 할 것이다.

 

새로운 운영체제가 필요하다.

불행하게도 Itanium의 향상된 부분에 대한 이득을 얻기 위해서는 64bit 운영체제에서 IA-64로 작성된 코드를 컴파일한 프로그램을 작동시킬 필요가 있다. Merced는 IA-32 모드에서 실행이 가능하지만, 이는 완전히 펜티엄-III를 하드웨어적으로 에뮬레이션하는 것이다. 하지만, 인텔이 컴파일시 몇배의 성능을 내기위해 32bit 성능을 최적화하는데 얼마나 많은 시간을 투자했는지를 추측하기는 어렵다. 현재 Windows 2000, Linux, Compaq Tru64 및 SCO Unix 등이 IA-64 아키텍처에 맞도록 이식 작업을 하고 있으며, Merced가 발표되는 시점에서 모두 가능해질 것으로 예상된다.

 

결론

아마 지금쯤이면 여러분들은 IA-64 아키텍처가 CPU 발전에 이정표를 세울 것이라는 점을 깨닫게 되었을 것이다. 인텔은 지난 10년간 별 도움없던 CPU 라인에서의 마이크로프로세서 디자인에 대한 많은 혁신적인 아이디어를 통합하려는 시도를 하고 있는 것이다. 모두들 이것이 위험한 도박임을 알고 있다. 왜냐하면 현재 시중에는 IA-64를 위한 컴파일러가 나와있지 않기 때문이다.

출시까지 채 일년이 남지 않은 지금, Itanium 라인의 파워를 이끌어줄 핵심 소프트웨어는 아직 나와있지 않다. IA-64 소프트웨어를 연구하고 있는 개발자들이 없다는 말은 아니지만, 이 분야는 아마도 동시에 자사의 컴파일러를 개발하고 있는(마이크로소프트와 같이...) 대형 소프트웨어사에게만 개방되어 있는 듯 하다. 물론, 리눅스와 대중적인 GNU 개발툴(유명한 GNU C 컴파일러인 GCC를 포함하여...)의 이식을 위한 연합인 LinuxIA64 프로젝트에는 희망이 보인다.

Merced가 출시될 즈음이면 두 개 정도의 운영체제와 개발 플랫폼은 마련되어지리라 보여지지만, 그렇다고 바로 소비자들이 이를 찾게될 것이란 말은 아니다. 대부분의 서버와 웍스테이션 어플리케이션은 바로 이식되어질 것이 확실하지만, 아마도 IA-64의 사무용 어플리케이션이나 게임은 한동안 찾아보기 힘들 것이다. 물론, 이러한 운영체제에서 실행되는 Quake 3(또는 4)를 상상해보는 것은 전율을 느끼게할지도 모른다. 인텔은 가정 사용자들을 위해서 IA-32 라인을 계속 가동시킬 계획을 잡고 있으므로, IA-64가 게임계에서 채택되어질지 혹은 매니아들의 전유물로 여겨져 이들에게 조차 꺼려질지는 시간이 흘러봐야 알 수 있을 것이다. 여하튼, 서버와 웍스테이션 시장은 인텔의 IA-64 아키텍처가 등장한 뒤에는 현재와 같지는 않을 것이다.

원문 출처 : Thresh"s FiringSquad


송대혁 /
brainbox@technoa.co.kr 

[관련기사]

테크노아의 다른기사 보기  
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
트위터 페이스북 미투데이 요즘 네이버 구글 msn 뒤로가기 위로가기
이 기사에 대한 댓글 이야기 (0)
자동등록방지용 코드를 입력하세요!   
확인
- 200자까지 쓰실 수 있습니다. (현재 0 byte / 최대 400byte)
- 욕설등 인신공격성 글은 삭제 합니다. [운영원칙]
이 기사에 대한 댓글 이야기 (0)
e피플
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
나이가 들면 들수록 공부하기가 어렵다는 말이 있다. 더군다나 실업인 상태에서 공부하는 것이라면 부담이 더 클 수 밖에 없다.하지만 이를 비웃듯이 극복하고, 올해 2월 공조냉동기능사...

제호 : 테크노아  |  발행인 : 김필규  |  편집인 : 김필규  |  청소년보호책임자 : 박상규
서울지사 : 서울특별시 구로구 디지털로32가길 18, 7F | 제보 : it@technoa.co.kr
발행소 : 전라북도 전주시 완산구 전룡6길 6 3F | 등록번호 : 전라북도 아00057
등록일자 : 2008년 1월 14일  |  대표전화 : 070-8755-6291  |  FAX : 02-6280-9562
Copyright © 1999-2017 테크노아. All rights reserved. mail to technoa@technoa.co.kr