Solaris

오픈소스의 또다른 상징 GCC「성능 개선중」

알 수 없는 사용자 2008. 2. 28.
728x90

오픈소스 소프트웨어에서 컴파일러의 대명사격인 GCC의 개선 계획이 진행되고 있다. 예상대로라면 오픈소스 소프트웨어들은 전체적인 성능 향상을 얻을 수 있게 될 것으로 보인다.

대다수 오픈소스 소프트웨어들은 GCC로 개발된다. GCC는 C와 같은 상위레벨 언어로 인간에 의해 작성된 명령어인 소스코드를 컴퓨터가 이해하는 바이너리 명령어로 변환하는 컴파일러다.

GCC 4 출시 담당자이자 코드소서리(CodeSourcery)의 수석 소서러인 마크 미첼은 조만간 출시될 GCC 4.0이 소스코드-바이너리 변환을 더 잘 진행할 수 있도록 하는 새로운 기반이 추가됐다고 밝혔다.

미첼은 “4.0 버전의 주요 목적은 컴퓨터에 훨씬 좋은 코드를 생성할 수 있는 컴파일러를 구축하는 최적화 인프라스트럭처를 제공한다는 것”이라고 설명했다.

컴 파일러는 소프트웨어 개발 커뮤니티 외부에서는 그다지 주목을 끌지 못하는 부분이지만 GCC는 다르다. 예를 들어 GCC가 개선되면 오픈소스 소프트웨어 분야에서 전체적인 성능을 높일 수 있다. 여기에는 MS, IBM, 등의 사유 업체들과 경쟁관계에 있는 리눅스, 파이어폭스, 오픈오피스닷오알지(OpenOffice.org). 아파치 등이 포함된다.

또한 GCC는 협업 소프트웨어 개발이란 전체 철학의 기반이 되고 있다. 민주주의에 있어서 자유 언론의 역할을 자유(free), 그리고 오픈소스 프로그래밍 운동에 있어 GCC가 맡고 있다고 말해도 크게 과장된 것은 아니다.

GCC 는 GNU 컴파일러 컬렉션의 약어로 ‘Gnu는 유닉스가 아니다(Gnu‘s Not Unix)’ 운동을 구성한 최초 프로젝트 중의 하나다. 1980년대 리차드 스톨만이 GNU와 자유 소프트웨어 재단(FSF)을 발족시켰으며 이는 사유 라이선스의 제약으로부터 자유로운 유닉스 버전을 개발하기 위한 것이었다.

최초의 GCC 버전은 1987년 등장했으며 2001년 GCC 3.0이 출시됐다. 오픈소스 사업의 선구적인 역할을 했으며 1999년 리눅스 판매업체 레드햇에 인수된 시그너스 솔루션즈라는 기업이 GCC 개발에 대한 투자를 대부분 담당했다.

그러나 에반스 데이터의 애널리스트 니콜라스 페트렐리는 GCC 개선 작업이 쉬운 일은 아니라고 전했다. 이미 GCC 3.3에서 3.4로 가는 와중에 성능 개선이 있기는 했지만 대신 후행 호환성이 희생됐다. 즉 3.3에서 컴파일되던 일부 소프트웨어는 3.4에서 그렇지 못했다고 페트렐리는 지적했다.

레 드몽크의 애널리스트 스티븐 오그라디는 GCC 업데이트가 수많은 프로세서에서 동작하는 소프트웨어 생성이란 고유 능력을 훼손해서는 안된다고 말했다. 그는 “크로스-플랫폼 호환성과 후행 호환성을 훼손하지 않는다는 한에서 성능을 향상시키는, 매우 어려운 목표를 달성한다면 그 의미는 진실로 중차대하다”라고 전했다.

보편성과 최적화, 양 극단 조율하기
GCC 4.0은 최적화가 추가될 수 있는 기반을 제공할 것이다. 이들 최적화는 몇 가지 형태를 띠지만 컴파일러가 전체 프로그램을 검사할 수 있는 보편적인 방법을 제공한다.

예 를 들어 GCC 기존 버전은 프로그램의 비교적 작은 국지적 영역을 최적화할 수 있었다. 그러나 새로운 최적화 기법인 스칼라 교환과 집합을 사용하면 GCC는 소스코드의 더 넓은 영역에 걸치는 데이터 구조를 찾아낼 수 있다. GCC는 이들 객체를 분해해 각 컴포넌트를 속도가 느린 메인 메모리가 아닌 속도가 빠른 온칩 메모리에 저장되도록 할 수 있다.

미첼은 “최적화 인프라스트럭처를 포함시킴으로써 컴파일러가 큰 그림을 볼 수 있도록 하고 있다”라고 말했다. 이 프레임워크는 트리 SSA(static single assignment)라 불린다.

그 러나 미첼은 이 최적화 프레임워크가 단지 첫 단계에 불과하다고 말했다. 다음 단계는 이 프레임워크에 플러그-인 할수 있는 최적화 기법들을 작성하는 것이다. 그는 “시간이 갈수록 이 인프라스트럭처의 유용성이 커질 것”이라고 말했다.

레드햇에 소속된 GCC 코어 프로그래머 리차드 헨더슨은 GCC 4.1에서 예상되는 최적화 기법은 자동 벡터화(autovectorization)라고 말했다. 이 기능은 단일 명령어가 다양한 데이터 요소에 적용될 수 있는 소프트웨어 영역을 찾아냄으로써 프로세서의 동작을 경제적으로 만들어준다. 이는 비디오 게임에서 슈퍼컴퓨팅에 이르기까지 광범위한 영역에 대해 유용성을 제공한다.

GCC 4.0는 또한 머드플랩(Mudflap)이라는 보안 기능도 제공한다. 미첼은 이 기능이 컴파일된 프로그램에 존재하는 결함의 종류인 버퍼 오버런을 검사하는 부가 기능이라고 말했다. 머드플랩은 프로그램의 성능을 저하하므로 테스트 버전에서 주로 사용되며 최종 제품에서는 이 기능이 꺼질 가능성이 크다.

추가적인 신기능으로는 아직도 과학 연산용 작업에 있어 인기를 끌고 있는 구식 언어의 업데이트 버전 포트란 95로 작성된 프로그램을 컴파일할 수 있는 기술의 프리뷰가 있다고 헨더슨은 말했다. 또한 C++ 프로그래밍 언어로 작성된 소프트웨어의 수행속도가 빨라진다. 일부 경우에는 “놀랄 정도로 개선됐다”고 헨더슨은 덧붙였다.

GCC는 매우 범용적인 컴파일러이다. 이 컴파일러는 C, C++, 자바, 포트란, 파스칼, 오브젝티브-C, 에이다(Ada)로 작성된 프로그램을 처리할 수 있다. 또한 펜티엄이나 옵테론과 같은 x86 프로세서, 썬의 스팍(parc), HP의 PA-RISC, IBM의 파워·메인프레임 프로세서, 인텔 아이태니엄, MIPS, ARM, 히타치의 슈퍼H, 모토롤라의 68000 시리즈 용 소프트웨어를 생성할 수 있다.

오그라디는 GCC의 장점에 대해 “속도가 아닌 이식성과 크로스-플랫폼 지원이다”라고 지적했다.


미첼은 GCC에 약 10명의 코어 프로그래머가 있다고 말했다. 리눅스와 유명한 오픈소스 프로젝트에 밀어닥친 상용화와 전문화 물결이 GCC에도 영향을 끼치고 있다.

미첼은 “대다수 코드를 작성하는 사람들은 현재 전업 형태로 작업을 진행하고 있다. 이것은 10년 전에 비교할 때 달라진 부분으로 많은 개발 작업이 시간을 많이 요구하며 장기적인 참여를 필요로 하기 때문”이라고 말했다.

약 12명의 직원을 보유한 코드소서리는 GCC용 서비스와 GNU C 라이브러리(glibc)와 같은 저수준 프로그래밍 컴포넌트를 판매하는 회사다. 예를 들어 다른 업체들은 코드소서리에 돈을 지불하고 새로운 운영체제나 프로세서를 지원해주도록 요청한다.

GCC 주요 경쟁자, 인텔?
프로그래머들이 GCC만 사용할 수 있는 것은 물론 아니다. 심지어 다른 오픈소스 컴파일러도 분명 존재한다.

패스스케일이란 벤처회사는 GCC 3.3과 호환되는 오픈소스 컴파일러를 제공한다. 패스스케일의 마케팅 부사장 렌 로젠탈은 “고성능을 원하는 고객을 위해 GCC의 대안을 제공하고자 한다”라고 말했다.

패 스스케일의 컴파일러는 실리콘 그래픽스가 오픈소스 소프트웨어로 내놓은 오픈64 컴파일러에 기반을 두고 있다. 슈퍼컴퓨팅 작업을 위해 일부 국립 연구소에서 사용 중이지만 로젠탈은 이 컴파일러가 범용 프로그램에 대해서도 더 빠른 소프트웨어를 생성한다고 말했다.

로젠탈은 패스스케일이 GCC에 어떻게 비교되는지 이해하고 있다. 그는 “GCC는 어디에나 존재한다”라고 말했다. 그러나 패스스케일은 강한 야심을 갖고 있다. 로젠탈은 “우리 제품을 x86 에서 기본 컴파일러가 되도록 하려 한다”라고 전했다. x86은 인텔 펜티엄 등 범용 프로세서를 대표하는 칩 방식의 명칭이다.

GCC의 경쟁사 중 더 두려운 존재는 바로 인텔이다. 인텔 컴파일러는 x86 칩에서 수행되는 소프트웨어의 절대 표준으로 인정받고 있기 때문이다. 인텔의 비즈니스 소프트웨어와 제품 사업부의 마케팅 담당 부장 제임스 레인더스는 광범위하게 사용되는 MySQL 오픈소스 데이터베이스가 인텔의 컴파일러를 사용한다고 자랑스럽게 말했다.

그러나 흥미롭게도 인텔의 컴파일러 엔지니어들은 GCC를 돕고 있다. 그 이유는 GCC가 소프트웨어를 인텔의 프로세서로 가져오게 하는 중추적 툴이기 때문이다. 예를 들어 인텔은 GCC를 변경해 아이태니엄 프로세서용 소프트웨어를 생성하는데 도움을 줬다고 레인더스는 말했다.

레인더스는 “물론 잘 수용됐다. GCC가 커뮤니티 내에서 고정된 역할을 맡고 있기 때문에 중요하지 않다고 생각한다면 이는 바보짓”이라고 전했다. @


출처: http://zdnet.co.kr

728x90

댓글