멀티코어 프로세서, IT 업계의 새로운 도전 과제

Agam Shah | IDG News Service 2009.03.24

서버와 PC칩의 성능을 향상시키기 위해 흔히 프로세싱 코어를 추가하는 방법을 사용한다. 그러나 아무리 프로세싱 코어의 수를 늘리더라도 결국 특정 하드웨어 및 프로그래밍 상의 문제들을 해결하지 못한다면 그 효과가 반감될 가능성이 높다. 이번 주 캘리포니아 산타 클라라에서 개최된 멀티코어 엑스포(Multicore Expo) 참가자들이 입을 모은 의견이다.

오늘날 개발, 출시되고 있는 소프트웨어들은 아직도 싱글-코어 칩을 기준으로 생산되고 있고, 이들을 보다 더 고성능 코어 칩들에서 활용하기 위해서는 재 보수, 또는 업데이트 작업들을 필수적으로 수행해야 한다.

린리 그룹(The Linley Group) 회장이자 수석 애널리스트인 린리 그웨넵(Linley Gwennap)은 최근 인텔, 선 마이크로시스템즈, 등 여러 칩 메이커들이 듀어-코어 이상의 칩들을 대거 생산하는 추세라며 이같이 밝혔다.

 

실제로 출시된 지 얼마 되지 않은 최신 제품들은 거의 대부분 최대 4개의 프로세서 코어를 보유, 운용하고 있고, 이는 CPU에서의 작업 속도를 더욱 빠르게 하는 동력으로 작용하고 있다. 그러나 코어가 더욱 늘어날수록 오히려 작업 속도나 효율이 도리어 감소할 가능성도 존재한다고 그는 주장했다. 더불어 가트너(Gartner)가 공개한 최신 보고서도 이러한 그의 주장을 뒷받침해주는 모양새다.

 

칩 메이커들과 시스템 설계 업체들은 최근 멀티코어 프로그래밍 환경 구축을 위해 프로그래머들을 대거 교육시키는 한편, 이들에게 보다 더 나은 툴을 제공해 주기 위해 노력하고 있다.

 

한 해 전, 인텔과 마이크로소프트는 멀티-코어 호환 문제를 해결하기 위해 관련 미국 대학 연구팀들에게 총 2,000만 달러를 투자할 것이라 밝히기도 했다. 주류 개발자들을 위한 멀티코어 프로그래밍 툴의 부재야 말로 오늘날 컴퓨팅 산업이 직면하고 있는 가장 큰 한계이자 도전이라고 그웨넵은 주장했다.

 

서로 다른 컴퓨팅 작업, 즉 수학 문제를 푸는 작업과 이미지를 렌더링 하는 작업을 각각 분류해 이를 동시에 수행할 수 있게 해주는 멀티 코어 기술은 더 이상 새로운 것이 아니다. 그러나 소위 병렬식 컴퓨팅(parallel computing)이라 불리는 이 모델은 고성능 컴퓨팅 환경에만 특화된 것으로 인식되어 왔다.  

 

그러나 최근 인텔과 AMD는 칩 성능이 뛰어나면서도 전력 효율까지 뛰어난 제품들을 생산해 내기 시작했다. 단순히 작업 속도만을 늘리던 기존의 개발 양상에 변화를 준 것이다. 인텔은 현재 개발 중에 있는 네할렘-EX(Nehalem-EX) 칩에 8개의 코어를 장착할 예정이고, AMD는 한 술 더 떠 서버용 12코어 칩을 개발하고 있다. 그들은 더불어 멀티 스레드 기능까지 시도하고 있는데, 이는 코어들이 여러 줄의 코드에서 동시에 작업할 수 있도록 해주는 기술이다.

 

이와 같은 기술의 발전은 주류 애플리케이션들의 변화를 요구한다. 더 많은 코어를 보유한 칩에서도 원활이 작동할 수 있도록 만들어야 한다는 것이다.

 

그러나 이는 상당히 난해한 작업이고, 그 과정에서 불필요한 소프트웨어 버그를 양산할 가능성이 높다. 문제가 가장 흔하게 발생하는 부분이 있다면 바로 “레이스 컨디션(race conditions)”을 들 수 있는데, 특정 계산의 결과가 일정 순서에 의해 완료되는 다양한 작업들에 의해 결정되는 것을 의미한다. 만약 그 특정 순서가 지켜지지 않을 경우, 에러가 날 가능성이 높다.

 

몇몇 병렬 형 프로그래밍 툴은 지금도 시중에 나와 있다. 인텔의 패러랠 스튜디오 포 C 앤 C++ (Parallel Studio for C and C++)도 그 중 하나다. 이 밖에도 코드플레이(Codeplay), 폴리코어 소프트웨어(Polycore Software), 그리고 클릭 아츠(Clik Arts) 등이 그와 유사한 툴을 제작하고 있다. 더불어 시중에는 새로운 C-기반 병렬 형 프로그래밍 모델인 오픈CL(OpenCL)이 있는데, 크로노스 그룹(Khronos Group)에 의해 개발된 이 모델은 애플, 인텔, AMD, 엔비디아 등으로부터 적극적인 후원을 받고 있다.

 

그러나 현재 존재하는 툴들은 거의 대부분 아직 미완성 상태인 경우가 많다고 멀티코어 엑스포 참가자들은 밝혔다. 소프트웨어 컴파일러들은 병렬시킬 수 있는 코드를 인식한 후 프로그래머의 직접적인 명령이나 관여 없이 자동으로 병렬 작업을 수행할 수 있어야 한다고 임베디드 칩에 대한 성능 비교 프로그램을 제공하는 비영리 단체 EEMBC의 소프트웨어 엔지니어링 담당자 쉐이 갤-온(Shay Gal-on)은 말했다.

 

부족한 툴에도 불구하고, 몇몇 소프트웨어 기업들은 이미지, 동영상 프로세싱과 같은 단순한 컴퓨팅 작업들에 대한 병렬 형 코드를 생성해 내는데 상대적으로 두각을 나타냈다고 그웨넵은 말했다. 어도비는 포토샵을 수정, 특정 x86 코어에서도 확대 또는 이미지 필터링과 같은 특정 작업을 수행할 수 있도록 만드는데 성공했다. 이는 포토샵의 성능을 3배에서 4배 가량 향상시켰다고 그는 말했다.

 

그는 “비디오나 그래픽 관련 작업을 수행할 때, 이제는 각각 다른 세트의 픽셀들을 서로 다른 CPU에 할당할 수 있게 되었다. 병렬식 작업이 가능해 진 것”이라고 설명했다. 그러나 이보다 더 복잡한 작업의 경우, 컴퓨팅 작업의 순서를 파악해 이를 병렬 형태로 배열하고, 또 분류하는 절차 자체가 난해해진다.

 

이처럼 프로그래밍 부문에서 분명 많은 개선이 이루어질 필요가 있지만, 더불어 하드웨어 부문에서도 어느 정도의 변화가 요구된다. 메모리 대기 시간과 느린 버스 스피드 등과 같은 이슈들을 극복해야 하기 때문이다.

 

그웨넵은 “앞으로 칩 하나에 할당되는 CPU의 개수를 늘려가면 늘려갈수록 이를 뒷받침 해 줄만한 메모리 대역 폭이 필요해 진다”라고 말했다.

 

두 개 이상의 코어를 사용하는 환경에서 한 개의 메모리 캐시 또는 데이터 버스를 사용할 경우, 병목 현상이 발생할 수 있다. 즉, 코어가 많아도 별 효용이 없어지는 사태가 발생하는 것이다.

 

“CPU가 6개, 8개 있어도 결국 서로 작업 순서를 조정하고 또 소통하느라 작업은 제대로 진행하지 못하는 상황이 발생할 수 있다”라고 그는 말했다.

 

개발자들은 하드웨어와 소프트웨어 간의 기술 격차를 줄이고, 보다 더 나은 병렬 형 프로그램을 개발할 의무가 있다. 많은 수의 프로그래머들은 아직까지 최신 하드웨어 디자인 개발 속도를 따라잡지 못하고 있다고 갤-온은 말했다. 우선 서로가 보유한 데이터 시트부터 공개해, 칩 아키텍처에 대해 충분히 학습한 후, 그들의 코드가 어떻게 하면 더 좋은 성능을 창출해 낼 수 있을지 모색해야 한다고 그는 덧붙였다. editor@idg.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.