2009년 8월 26일 수요일

OpenSPARC & GPL


얼마전 Oracle에 인수된 SUN Microsystems에서 몇년 전부터 OpenSPARC이라는 이름으로 직접 설계하고 회사에서 팔고 있는 Server에 사용되는 SPARC Processor의 Verilog RTL Source Code를 일반인에게 공개하였습니다. 일종의 Open Source 운동을 Hardware(정확하게는 Chip 및 FPGA 설계)에 적용한 것이고, 이것은 어쩌면 용기있는 결정인데, SUN은 이것으로 무엇을 얻었는지 궁금합니다.

Open Source Software, 의미는 다르지만 좀 더 확실한 Free Software(자유 소프트웨어로 번역)는 그것의 사용이 공짜라는 점 때문에 사용자들이 늘어나고 그에 따른 버그 리포트나 개선 사항들이 개발자들에게 feedback 되어 좀더 나은 Software가 만들어지는 선순환이 일어나고 있습니다. Free Software는 보통 BSD/GPL/LGPL 등의 license를 사용합니다. GPL License의 경우 사용자에게 사용하고, 변경하고, distribute할 수 있는 권리를 주는데 단 한가지 제약이 있다면 변경된 code를 distribute할 경우 그것을 받은 다른 사용자도 GPL에 따르는 권리를 모두 가지게 되고 source code도 같이 distribute해야 한다는 점입니다. 이것은 "자유"가 계속 퍼지도록 하는 장치라고 볼 수 있습니다. GPL의 경우 변경된 code의 의미가 open된 source code 뿐 아니라 그 code와 link되는 모든 code를 의미한다.

OpenSPARC은 GPL(General Public License)에 따라 공개가 되었는데, Software와는 달리 chip은 GPL이 곤란합니다.

우선 일반 사용자 입장에서 chip의 내용을 변경하는 것은 상당히 힘이 듭니다. Source Code는 변경할 수 있겠지만 그 변경된 source code로 chip을 만드는 것은 비용이 너무 많이 들어 일반 사용자는 엄두를 낼 수 없습니다. Simulation이나, chip 보다는 비용이 덜 드는 FPGA가 있지만, 일반 사용자가 변경한 code를 다시 재사용하여 chip을 만들 회사는 별로 없습니다. 회사 입장에서도 chip을 만드는데 드는 비용이 상당히 크므로, 검증에 심혈을 기울여야 하는데 일반 사용자가 simulation이나 FPGA에서 돌려 봤다고 해서 그것을 그대로 사용할 회사는 없다고 봐야 합니다. 회사는 비용을 지불하고 다른 회사에서 구매하는 block에 대해서도 소위 silicon proven이라고 하여 실제로 그 block이 chip으로 구현되어 잘 동작되었는지를 매우 따집니다. 따라서 일반 사용자의 feedback을 통한 design 개선이라는 것을 기대하기는 상당히 힘듭니다.

그렇다면 회사가 사용해서 SUN에 feedback을 주는 방향이 있을 수 있는데 이것도 참 곤란합니다. GPL에 따르는 OpenSPARC을 chip에 넣게 되면 해당 chip의 전체 Source Code도 GPL에 따라 공개가 되어야 합니다. 대부분의 회사가 그런 RTL 공개를 꺼리기 때문에 OpenSPARC을 사용할 가능성이 별로 없습니다. 이 부분은 Software의 경우도 어느 정도 마찬가지지만, Software는 GPL Source Code를 별도의 executable로 만들어 그 부분만 source code를 GPL로 공개하고 그것을 C의 system() 함수 등을 이용하여 수행하는 경우에는 전체 source code를 공개할 의무가 없습니다. 이것을 chip에 적용하면 OpenSPARC을 어느 정도 변경하여 별도의 chip으로 만들고 그것을 회사가 만드는 별도의 chip과 board level에서 연결한다는 것인데, 이렇게 system을 구성할 만한 회사는 별로 없다고 봐야 합니다. 그냥 SUN에 비용을 지불하고 개별 chip을 사서 쓰고, 변경된 부분을 회사에서 설계하는 chip의 부분으로 구현하는 편이 유리하기 때문입니다.

Source Code를 GPL로 공개하려고 의도했다 하더라도 곤란한 경우가 있습니다. 소위 IP(Intelectual Property)라고 하여, 다른 회사의 hardware block을 license 받아 사용하는 경우가 많기 때문입니다. Software도 library 형태로 다른 회사에서 파는 software를 GPL source code와 link하는 것이 불가능 한 것과 마찬가지입니다. Hardware는 software에 비해 그럴 가능성이 더 크다는 점이 문제입니다. 더군다나 OpenSPARC과 같은 고성능 CPU를 사용하면서 다른 회사의 IP를 사용하지 않는 chip을 만드는 것은 쉽지 않은 일입니다. Chip 내부의 모든 block을 회사 자체에서 모두 만드는 것은 매우 힘이 듭니다. 굴지의 chip 회사들도 CPU는 ARM에 license하고 3D Graphic은 영국 Imagination사에서 license하고, USB 2.0은 아마도 synopsys나 mentor 등에서 license하고 뭐 다 이런 식입니다..

GPL에 의해 source code를 공개해야 하는데, chip 개발비에 비해서 시장 규모가 작으면 chip의 customer가 chip을 개발하는 것보다는 chip을 구매하는 것이 유리하게 됩니다. 또한 OpenSPARC은 고성능을 추구하므로, 이 두 가지 요소를 고려했을 때, 현재 특정 회사가 OpenSPARC을 이용하여 chip을 구현할 만한 시장은 아마도 Router나 Firewall에 들어가는 Network Processor 정도가 되지 않을까 싶습니다. Network Processor의 시장 규모가 얼마나 되는지 확실히는 모르지만, 일단 consumer 시장은 아니므로 규모(매출이 아니라 chip 갯수면에서)가 상당히 작을 것으로 봅니다. 또한 그 chip에 올라가서 동작하는 software는 굳이 GPL일 필요는 없으므로 software를 판매하여 수익을 올릴 수 있다는 점이 매력적입니다. 또한 chip의 datasheet를 세세히 공개할 필요가 없고, 치사한 방법이지만 RTL source code를 공개할 의무는 있지만 test bench를 open할 이유는 없으므로, 경쟁자나 customer가 source code로 chip을 구현하기 위해서 검증하는데 많은 노력이 들게 만들 수 있습니다.

FPGA쪽을 생각해 보지 않을 수 없습니다. FPGA를 통한 RTL source code의 hardware 구현이 가능하고, FPGA는 적어도 chip의 구현에 비해 훨씬 비용이 적게 듭니다. SUN과 Xilinx과 OpenSPARC용이라고 발표한 FPGA Evaluation Board는 일반 사용자에게는 $1,999이고 학생은 $750이면 살 수 있습니다. 당연히 FPGA는 chip으로 구현했을 때에 비해 동작 속도가 많이 느릴 것으로 예상됩니다. FPGA를 이용하여 System을 만드는 회사의 경우를 생각해 보면, 역시 source code가 공개되므로 이 것을 꺼리게 될 가능성이 매우 큽니다. 우선 FPGA를 이용한 system이 복제 되는 것은 chip을 복제하는 것보다 매우 쉬우므로 더욱 꺼려할 가능성이 있겠습니다. FPGA를 이용한 system을 만들 때 source code 공개를 회피하면서 굳이 OpenSPARC을 사용하고 싶으면 FPGA 하나에 OpenSparc을 모두 넣고(source code 공개), 나머지 FPGA를 이용하여 다른 기능을 구현(source code 공개 불필요)하면 되겠지만, 이 경우도 System 회사에 merit는 별로 없을 것 같습니다. FPGA 자체가 비싸고 FPGA는 chip과 달라 OpenSPARC이 빠른 속도로 동작하지 않을 것이므로, 동일한 일을 수행하는 빠른 chip을 사용하여 구현하는 것이 더 유리합니다.

참고로 GPL이 아니라 LGPL(Lesser GPL)을 이용해서 source code를 공개한 CPU인, leon2와 openrisc 등은 다른 회사가 그것을 사용하여 chip을 구현한 예가 있습니다. LGPL의 경우에는 chip 전체의 source code를 공개할 의무는 없고, 단지 해당 block, 즉 leon2와 openrisc 내부에서 변경된 부분이 있으면 해당 부분의 source code만 open할 의무가 있기 때문입니다. 다른 회사에서 OpenSPARC을 이용하여 chip을 만들기를 원했다면 GPL 보다 LGPL이 훨씬 좋은 선택이었습니다.

당연히 SUN에서도 GPL을 통해서 Source Code를 공개하면서 저와 비슷한 생각을 하고 상황을 예측했을 텐데, SUN이 바랬던 것은 무엇일까요? 추측을 해 봅니다.

- 평판
당연히 우리는 RTL source code도 open하는 회사다라는 평판을 얻을 수 있습니다. 실제로 SUN은 Solaris나 JAVA, openoffice 등의 software의 source code도 open하고 있습니다.

- 학교에서의 feedback
학교는 영리를 추구하지 않으므로 source code 공개 문제가 별로 없습니다.
OpenSPARC을 사용하여 여러 시스템에 적용하고 그것에 대한 결과를 논문으로 발표할 것이므로 학생 및 교수들의 다양한 아이디어를 얻을 수 있는 기회가 될 수 있습니다. 학교는 software를 개발해도 open source일 가능성이 크므로 그것을 활용할 수 있는 가능성도 열려 있습니다. 부수적으로 학교에서 이러한 사용히 많아지면 학생들의 SPARC 시스템에 대한 이해도/친밀도가 높아지는 이익이 있습니다.

- 다른 license(?)를 통한 영리
OpenSPARC Source Code를 GPL이 아닌 다른 license를 통해서 SUN에게 비용을 주고 구매할 수 있다면 매력적입니다. OpenSPARC을 넣은 chip을 만드는 입장에서는 SUN이 공개한 source code로 충분히 test를 할 수 있고, test가 끝나면 source code 공개를 할 필요가 없는 license를 구매하면 됩니다. SUN 입장에서도 다른 회사가 테스트를 모두 끝내고 와서 구매를 하겠다고 하면 나쁘지 않습니다. 더군다나 OpenSPARC을 사용할 회사의 인력이 학교에서 이미 OpenSPARC을 통해 연구나 공부를 사람이라면, SUN 입장에서는 개발지원 문제도 줄어들 가능성이 큽니다. 다만 이런 다른 license 조항을 OpenSPARC 사이트에서 쉽게 찾아 볼 수는 없었으므로 이것이 가능할 지는 확실하지 않고, 이것이 주 목적이 아닐 가능성이 있습니다.

- Software 개발자의 개발에 도움을 주기 위해
가능성은 낮지만 SUN이 판매하고 있는 Server에 OpenSPARC 칩이 사용되므로 OpenSPARC의 내용을 속속들이 알면 Software 개발자가 software를 개발, 최적화하는데 도움이 됩니다. 다만 일반적인 software 개발자가 verilog simulation을 통해서 그것을 확인한다는 것이 거의 불가능합니다. 일반적인 Software 개발자 입장에서는 좋은 개발 tool과 잘 정리된 architecture 문서만 있으면 충분할 것이니까 말이죠.

- 기타
기타 다른 이유들이 있었을 수도 있겠습니다만 언뜻 떠오르지 않습니다. 소스코드가 공개된 후에 계속 버젼업이 이루어지는 것으로 보이는데, 버젼업이 어떤 부분에서 일어나는지를 체크하면 떠오를 지도 모르겠습니다.



OpenSPARC의 내부 구조를 이야기하려는 마음을 먹고 글을 시작했는데 정작 글의 내용은 전혀 다른 방향으로 흘렀습니다. 내부 구조 이야기는 다음에...


Reference:
OpenSPARC

OpenSPARC FPGA Evaluation Board


0 개의 댓글:

댓글 쓰기