Open Source Hardware

November 5, 2019

OpenTitan

우리가 흔히 사용하는 컴퓨터의 운영체제는 윈도우 입니다. 이 윈도우는 마이크로소프트 회사에서 개발한 운영체제입니다. 다양한 하드웨어를 지원하면서도 버그는 거의 없는, 정말 잘 만들어진 운영체제죠.

윈도우, 그 다음으로 사용자가 많이 쓰는 운영체제는 애플회사에서 만든 macOS일 듯 합니다. 한국에서야 맥북 보기는 어렵진 않아도 맥을 쓰는 사람을 보기는 (맥북에 윈도우를 설치…) 어렵지만, 이곳 미국에서는 윈도우 쓰는 사람들 찾는게 더 어려울 정도로 많은 사람들이 맥을 사용하고 있는 듯 합니다. 저 또한 맥 운영체제를 쓰는 랩탑이 집에 있구요. 얼마 전까지만해도 회사 랩탑으로 맥북프로를 사용하고 있었습니다.

그리고, 조금은 특별한 운영체제가 그 다음을 잇죠. 개인용 컴퓨터로는 아마도 세번째 위치겠지만, 전 세계 서버 컴퓨터를 다 추려본다면 당당히 1위를 차지하고 있는 운영체제인 리눅스입니다. 아마 모바일까지 포함한다면 안드로이드가 1위겠지만, 안드로이드도 기반은 리눅스 운영체제 위에서 돌아가고 있죠. 제가 사용하고있는 회사 랩탑도 리눅스이고, 회사 데스크탑도 리눅스입니다.

이렇게 당당히 1위를 차지하고 있는 리눅스의 핵심 운영 소프트웨어, 리눅스 커널은 오픈소스입니다. 즉, 내부 코드가 완전히 공개되어있습니다. 누구나 개발에 참여할 수 있고 누구나 소프트웨어를 수정해서 재배포할 수 있죠.

언듯 들으면, 아무나 개발하는데 어떻게 소프트웨어가 잘 돌아가지? 버그 투성이 이진 않을까 생각이 듭니다. 그러나 이 부분은, 많은 사람이 참여할 수 있다는 데에서 큰 장점이 생깁니다. 마치 위키피디아 같이, 집단 지성으로, 더 많은사람이 코드를 보게되고 잘못 된 코드는 여러 사람이 써보고 버그 리포트를 만들어내면서 수정되게 됩니다.

이 리눅스 커널이 리누스 토발즈씨가 1991년에 세상에 내놓았으니, 이제 28년이 넘었네요. 그 사이에 제 개인적인 생각으로는 세상에 큰 영향력을 끼친 운영체제가 되었다고 생각하네요.

OSS (Open Source Software)가 각광을 받고, 여러 오픈소스 소프트웨어가 나오고 사라지곤 합니다. 맥에서 사용할 때만 봐도 제가 쓰던 개발도구, 프로그래밍언어, 그 모든게 다 오픈소스였습니다. 마음만 먹고, 실력만 된다면 언제든 소스코드를 수정해서 프로그램을 개선하고 패치를 보낼 수 있죠.

반면, 하드웨어 개발은 여전히 소스코드가 철저히 감춰진 채로 개발이 되어왔습니다. 가장 쉬운 예로는 인텔 CPU가 있겠네요. 인텔CPU는 윈도우 운영체제와 마찬가지로, CPU를 만드는 소스코드 HDL (Hardware Description Language)이 공개되어있지 않습니다. ISA (Instruction Set Architecture)라고 CPU가 이해할 수 있는 명령어가 어떤 것이 있는지 설명해 놓은 것만 공개되고, 그 조차도 사용하는 것에만 쓸 수 있고 ISA가 동일한 CPU 설계는 할 수 없게 지적재산권 보호를 해 두었습니다.

제가 참여했던 모든 프로젝트도 죄다 소스코드가 비공개였죠. 심지어 참여하는 하드웨어 프로젝트의 일부분의 소스는 개발자인 저도 볼 수 없었습니다. IP (Intellectual Property)를 다른 회사에서 구입하는 경우, 소스코드가 비공개 되어서 전달됩니다. 암호화 되어있어서, 동작한단는 것을 일단은 믿고 가는 수 밖에 없었죠. 심지어 핵심이라 생각되는 프로세서 (ARM 코어)도 베일에 쌓인 블랙박스였습니다.

그러던 와중에 하드웨어에도 오픈소스 개발이 조금씩 생겨납니다. 20여년 전, 거의 취미수준의 개발자들이 소스코드를 올려놓았던 opencores.org 사이트도 기억이 나는데, 실제로 오픈소스 하드웨어 개발이 주목을 받기 시작한 것은 RISC-V 개발부터였던 것 같네요.

이에 관해서 제가 이전 2016년에 쓴 글도 있습니다. 그 때에 버클리에서 RISC-V를 공개하면서 ISA를 오픈했습니다. 누구나 같은 ISA로 동작하는 코어를 만들 수 있게 허용했죠. 그 이후로 지금까지, 정말 많은 RISC-V 코어가 만들어졌습니다. 사이트에서 보면 SoC를 제외하고서라도 코어만 42개가 현재 있네요. 그만큼 많은 곳에서 관심을 가지고 있다는 뜻이고, 제 예상이 틀렸다는 말이기도 하지요. 그래서 더 다행입니다.

아쉬운 점은, 위의 코어 개발이 대부분 대학에서 이뤄진 부분이 많고, 실제 코드를 보면 합성은 잘 되지만 깔끔하게 구현된 것 같은 코드는 아닌 것이 많습니다. 게다가, 코어 소스는 공개되어있지만, 실제 검증했던 검증 환경 부분은 거의 공개되어있지 않아 이 코어를 얼마나 신뢰할 수 있는지 측정할 만한 데이터도 없죠. 그냥 FPGA위에서 돌려보고 믿는 수 밖에 없습니다.

다행인 점은, 이 부분이 조금씩 개선되어가고 있다는 것이겠네요. 올해 6월 RISC-V Summit에서 여러 회사가 협력해서 CHIPS Alliance를 만들었습니다. 여기에선 개발과 검증을 모두 공개하는 것을 목표로 합니다. 저희 그룹에서 일하는 엔지니어는 UVM 환경에서 동작하는 RISC-V Stream Generator를 공개했죠. 코어를 꼼꼼하게 검증할 수 있어서 논리적인 동작은 이상이 있는 지 확인해 볼 수 있습니다.

이 CHIPS Alliance는 LSF (Linux Software Foundation) 의 일부로 활동하게 됩니다. LSF 멤버이면 개발에 참여할 자격이 주어지는 걸로 아는데 확실히는 아직 모르겠네요. 소스코드는 CHIPS Alliance 깃헙에 공개되어 있습니다. (RISC-V Stream Generator는 구글 깃헙에 공개되어 있습니다.)

그리고 오늘 또 다른 오픈소스 프로젝트가 공개되었습니다. OpenTitan 프로젝트인데 lowRISC가 중심이 되어, 구글, Western Digital, G+D, Nuovoton이 같이 참여해서, 오픈소스 개발방식으로 소스코드에서부터 실제 칩을 받는데까지 전 과정을 투명하게 공개해서 개발하는 것을 목표로 합니다. 실제 실리콘 프로세스 라이브러리는 공개할 수는 없겠지만, 현재 업계에서 최대한 공개할 수 있는 부분은 공개해서 개발하려고 합니다.

완성된 버전을 공개하는 것은 아닙니다. 아직은 기본적인, 다르게 보면 취미활동이라고 불러도 별반 다를 것 같지 않은 기본적인 peripheral IP와 코어, 그리고 그 사이를 엮어주는 스크립팅등이 공개되어 있습니다. 앞으로 만들어야 할 부분이 더욱 많죠.

목표는 투명하게 공개된 시큐리티 칩을 만드는 겁니다. 투명하게 공개된 코드를 기반으로 칩을 제작함으로써 신뢰를 높이고 취약한 부분을 조기에 발견할 수 있게 될 것입니다.

오픈소스 소프트웨어도 그렇지만, 관심을 받지 못하면 언제 그랬냐는 듯 소리소문없이 사장될 지도 모릅니다. 그래서 걱정이 큰 것도 사실입니다. 저에겐 큰 도전이지만 (제가 만든 개판 오분전 소스코드를 공개해야 하니 더욱…) 대부분의 사람들은 그냥 한번 스윽 보고 잊어버리게 될 프로젝트일 수도 있겠죠.