이건 일단 만들면 사용자가 올 것이라는 프로젝트임. ML의 핵심 반복 연산을 전부 하드웨어로 구현하는 쪽이 기술적으로는 더 타당함. 작은 독립형 신경망 추론 장치를 칩 하나에 많이 넣을 수 있지만, 그렇게 제안하면 “왜 Nvidia는 안 하나?”, “나중에 Nvidia가 따라 하면 어떻게 막나?”라는 질문을 받게 됨. AI 칩을 내세우는 곳은 이미 많고 성과는 제한적임. 범용 초병렬 컴퓨터의 역사는 좋지 않음. Illiac IV부터 PlayStation 3까지 만들 수는 있어도 사용자가 따라오지 않는 실패가 반복됨. 유한요소해석이나 신경망처럼 병렬화할 특정 문제가 있다면 적합한 구조임. NCube를 써봤고 Transputer 개념도 좋아했지만, 둘 다 막다른 길로 끝남.
외부에서 지켜본 바로는 PlayStation 3의 Cell에 두 가지 현실적인 걸림돌이 있었음. 하드웨어 잠재력을 끌어내려면 아주 뛰어난 개발자가 필요했고, 대부분의 게임사가 Xbox와 PC도 지원하려다 보니 Cell 전용 코드를 작성할 유인이 더 줄어듦.
지금은 AI가 새로운 아키텍처용 소프트웨어 개발 비용을 바꿀 수도 있음. 오늘날 Cell 같은 프로세서가 나온다면 더 성공할 가능성이 있음.
“만들고 싶으니 멋진 걸 만들어서 어디까지 갈 수 있는지 보자”는 프로젝트일 수도 있지 않을까? 컴퓨터 제조·유통 생태계 없이는 칩만으로 할 수 있는 게 없고, 그 생태계를 만들려면 기존 CPU·GPU 업체를 압도해야 하니 실패 가능성이 거의 확실할 정도로 높음. 그래도 만드는 이들에게는 어떤 결과든 도전할 가치가 있다고 봄.
대성공이라면 약 10년 뒤 선도 칩 업체에 인수되는 결말일 듯함. 보통의 성공은 자체 컴퓨터를 만들 수 있는 조직에 특수 CPU를 공급하는 작은 Texas Instruments가 되는 것이고, 실패하면 거대 지식재산 포트폴리오에 헐값으로 흡수될 가능성이 큼. 특허 괴물에게 넘어가는 비극만은 피하길 바람.
인상적이었던 틈새 활용은 Mikrotik CCR 라우터의 TILE-Gx임. 몇 년간 사용했는데, 구성이 충분히 병렬화될 수 있다면 적은 비용과 아주 낮은 소비전력으로 높은 성능을 얻을 수 있었음. Nvidia가 이 아키텍처를 인수하고 없애버렸으니, 원래 주장에 힘을 실어주는 셈임.
제안하는 건 CPU 외투를 입은 GPU에 더 가까워 보임. 그래도 실패가 반복된 분야에서 계속 하드웨어 혁신을 시도한다는 점은 존중할 만함.
막다른 길로 끝났다고 아이디어까지 나빴던 건 아님. 성공과 실패에는 복잡한 이유가 있는데, 이런 식의 논법은 진부함.
수십 년을 끌면서도 실제 칩을 하나도 내놓지 못함. 반면 RISC-V는 몇 년 늦게 시작하고도 1년 안에 테이프아웃했고, 7년도 되기 전에 상용 칩을 출시함.
Mill Computing은 2003년 시작했고, RISC-V는 2010년 시작해 2011년 첫 테이프아웃, 2017년 양산 칩 판매까지 진행함. Mill Computing은 2019년에 끝난 걸까?
10년 늦은 구상처럼 느껴짐. 2026년, 현실적으로는 2030년 이후 고객에게 어떤 가치를 줄지 모르겠음. 모든 소프트웨어를 상호작용망으로 컴파일되는 언어로 다시 작성할 의향이 있다면, 그냥 HVM2와 Nvidia GPU를 쓰면 되지 않을까? 특이한 아키텍처가 목적이라면 AMD가 이미 데이터플로 프로세서를 대량 공급하고 관련 IP도 라이선스함. 기존 ML 코드를 초병렬 하드웨어에서 돌리고 싶다면 Google Cloud TPU를 빌릴 수도 있음.
5년쯤 뒤에 구형 공정·독자 언어·특이한 아키텍처의 조합을 원하는 고객이 누구일까?
AMD가 어떤 데이터플로 프로세서를 공급하고 있나?
농담인가? HVM2는 아무도 쓰지 않고 몇 년째 손도 대지 않은, 한 사람이 만든 일회성 시제품일 뿐임.
이제는 소프트웨어 재작성이 쉬워졌기 때문임. 언어 모델이 주어진 아키텍처를 살펴보고 더 빠른 추론 등 목적에 맞춰 자신과 추론 엔진, 실행 환경을 다시 컴파일하는 예가 여럿 있음. 운영체제를 통째로 만들거나, 운영체제를 없애고 자체 입출력 스택을 갖춘 단일 애플리케이션을 실행하는 방식으로 돌아간 이들도 있음.
추측하자면 구형 공정의 특이한 아키텍처를 쓰면 하드웨어를 더 싸게, 또는 시장이 감당할 가격에 지연 없이 내놓을 수 있을 것임. 이제 이런 아키텍처를 활용하기 쉬워졌고 불안정하고 불투명한 드라이버도 더는 걸림돌이 아니니, 연산 수요를 효율적으로 충족하면 됨.
칩 하나에 Forth 네이티브 코어 144개를 넣은 GreenArrays는 정말 멋지다고 생각했음. 처음부터 새로 설계한 CPU를 표방한 Mill 아키텍처도 좋아했고, 커널 경계를 넘어 인라인화할 수 있는 Transmeta도 승산이 있다고 봤음. 하지만 어느 것도 충분히 특별하지는 않았음.
내 계산으로는 M4 다이 면적에 작은 고속 CPU 약 256개를 넣을 수 있고, 각각 16KiB RAM과 입출력을 갖출 수 있음. 현대 CPU의 게이트 대부분은 비순차 실행과 캐시 일관성에 낭비됨. https://bil-lang.org처럼 더 명시적인 언어가 있어야 개발자나 LLM이 알고리즘을 CPU 배열에 맞춰 넣는 작업을 감당할 수 있다고 봄. AI는 이 오랜 장벽을 넘을 강력한 수단임.
비순차 실행은 낭비가 아님. Itanium이 그걸 혹독하게 배웠음. 캐시 일관성도 마찬가지임. 범용 연산에는 최소한 코어 간 메시지를 교환할 장치가 필요하므로 트랜지스터를 써야 함. 캐시 일관성이 대안보다 나쁘다는 설득력 있는 입증도 없었음.
병렬 처리로 순차 연산을 가속할 방법을 찾기 전까지는, 이를테면 NC = P를 증명하기 전까지는 강력한 단일 코어가 항상 필요함.
작은 컴퓨터를 격자로 잔뜩 배치한다니 Chuck Moore의 GreenArrays가 떠오름. 그가 선택한 언어는 Forth이고, 더 최근에는 arrayForth임.
결국 Transputer를 다시 만드는 건가?
프로그래머로서 늘 원했던 건 64비트 레지스터 n개 대신 2^m비트짜리 레지스터 하나를 가진 CPU임. 이를 서로 크기가 달라도 되는 임의 길이의 하위 레지스터로 나누고, 비트 배열이나 레지스터 내 SIMD(SWAR) 장치처럼 다룰 수 있으면 좋겠음.
재미있는 구상임! 범용 레지스터의 총용량은 RV32E가 512비트, RV32I가 1,024비트, RV64I가 2,048비트이고, AVX-512의 ZMM 레지스터는 총 16,384비트임. 가령 4,096비트 레지스터를 두고 1비트부터 4,096비트까지 13가지 크기로 접근할 수 있겠음.
다만 칩 내부 버스와 ALU의 폭에는 한계가 있으니, 이를 넘는 연산은 느려질 것임. 그 차이를 추상화해서 감추고 싶은 건가?
SERV 설계를 변형하면 가능할 듯함. 아주 작지만 다소 느린 코어가 될 것임. 본질적으로는 비트 묶음을 메모리 접근 폭에 맞춰주는 캐시를 가진 1비트 프로세서임. CPU도 이미 레지스터보다 넓은 전송으로 캐시 라인을 채우므로 이론적 기반은 있음.
조절 가능한 크기에는 늘 비용 대비 성능이 가장 좋은 지점이 있음. 수백만 코어의 캐시 일관성을 처리할 방법이 없다면 그 지점이 1비트일 것 같지는 않음.
2비트 단위의 가변 길이 레지스터를 가진 CPU가 있었는지, 아니면 만들기 너무 어려운지 늘 궁금했음. 첫 비트는 값, 둘째 비트는 다음 비트의 존재 여부를 나타내면 임의 길이의 정수나 문자열을 처리할 수 있음. 비용은 들겠지만, 길이 제한이 없는 단일 기본 자료형이라는 발상이 마음에 듦.
바이트 경계에 묶이지 않고 비트 단위로 메모리 주소를 지정하고 싶다는 내 생각과 비슷함. 비효율적이라는 건 알지만, 실제로는 워드를 읽으면서 바이트 주소 지정을 제공하는 CPU도 있음.
10~20년 뒤 x86이 어디에 있을지 늘 궁금함. SIMD 데이터 경로가 넓어질수록, 서로 다른 연산 코드와 특성을 가진 더 넓은 명령어군을 몇 세대나 계속 집어넣을 수 있을까?
1990년대 끝없이 이어졌던 RISC 대 CISC 논쟁을 기억하나? 온라인과 잡지에서는 RISC가 “곧” CISC를 집어삼킬 거라고 했지만 그런 일은 일어나지 않음. x86이 사라지기 전에 내가 먼저 죽을 것 같음.
오히려 컴퓨팅 지형은 더 복잡해질 가능성이 큼. ARM은 휴대용 기기 밖에서도 x86의 본격적인 경쟁자가 되고, RISC-V는 단일 보드 컴퓨터와 휴대용 기기에서 ARM의 본격적인 경쟁자가 될 듯함.