PowerPC Compiler Writer’s Guide

[ISBN-0964965402] (비매품이라 아마존에 없음)

Larry Wall 할아버지가 한 명언으로 이런 것이 있습니다.

“””A real programmer can write assembly in any languages.”””

므흐므흐. 코드 생산성과 유지보수성, 가독성 등이 퍼포먼스보다는 훨씬 중요한 세상이 온 것은 사실이지만, 여전히 퍼포먼스는 소프트웨어의 가장 중요한 요소 중의 하나입니다. 같은 기계에서 같은 일을 하는데 더 느리게 돌아서 좋을 것은 크게 없으니까요.. 여전히 전체 프로그램의 5%정도는 다른 요소보다 퍼포먼스를 더 중요하게 하여 최적화를 하여야 하는 편이고, 기계에서 내부적으로 어떤 어셈블리를 거쳐서 실행이 되는지, 메모리 레이턴시가 얼마나 작용하는지, 캐쉬 히트가 어느정도 작용되는지를 코드를 작성할 때 생각하면서 작성하는 것은 사실 심각하게 하자면 어렵겠지만, 자주 쓰이는 패턴이 대부분인 것을 생각해 보면, 사실 익혀두면 큰 노력없이 좋은 코드를 짤 수 있는 좋은 요소가 됩니다. +_+ 자바를 짜던 파이썬을 짜던, 핫스팟을 거치면 어떻게 되는지, 파이썬 VM에서 어떤 경우 최적화된 루틴으로 들어가서 실행을 하는지 알고 짜면, 비슷한 코드에서도 훨씬 빠르게 동작할 수 있는 것은 더 말할 나위도 없구요~

헛 잠시 말이 딴데로 빠졌지만, 이 책은 96년에 나온 꽤 오래된 책이지만 여전히 mono나 gcc같은 프로젝트에서 추천서 목록에 빠지지 않고 등장하는 실용적인 명저입니다. 제목대로 PowerPC에서의 C/Fortran 컴파일러를 만들 때 코드 전략에 대해서 논한 책이지만, PowerPC 인스트럭션을 기준으로 설명했다는 것 외에는 근래의 다른 CPU 아키텍처들에서도 통상적으로 적용될만한 교훈들을 많이 담고 있습니다. 예를 들면 if-else를 브랜치 프리딕션 없이 논리식으로 풀어버리는 방법, switch-case 의 개수별/변수타입별/변수범위별 최적화 방법 등 C 코딩을 할 때 사소한 것으로 컴파일러의 최적화를 방해할 수 있는 이슈들을 많이 논하고 있어서 별로 고치지 않고도 컴파일러의 최적화를 많이 도와줄 수 있게 됩니다. PowerPC가 아무래도 컨소시움에서 만들어진 개방표준형 아키텍처이다보니 인텔의 책처럼 자기 구현에 대해서만 최적화를 다루지 않고 여러 구현(모토롤라와 IBM, PowerPC/QUICC 4,5,6,7,8씨리즈)에서 공통되게 잘 돌아가는 방법같이 좋은 예를 C와 Fortran, PowerPC 어셈블리로 다루고 있어서 참 좋았습니다. 그런데, 아무래도 어셈블리 코드가 전부 PowerPC기준으로 되어있다보니 약간 생소하기는 하지만, 모토롤라의 파워피씨 매뉴얼을 놓고 같이 보면 크게 문제는 되지 않는군요~

이 책은 http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6 에서 다운로드 받을 수 있습니다.

5 thoughts on “PowerPC Compiler Writer’s Guide”

  1. gnome.or.kr의 IRC로그 스토킹 중(^^;)에 말씀해 주셨던 것을 보고서 나중에 한 번 찾아봐야지 하고 있던 책인데 이렇게 입에 떠 넣어 주시는군요. C 언어 규약도 정말 잘 봤습니다. 언제나 좋은 정보 감사드립니다.

Comments are closed.