최근 PlanetScale 이라는 서버리스 DB를 공부하고 있다. 근데 PlanetScale의 CLI를 Linux 환경에 설치하려는 과정에서 아래와 같은 상황과 마주하였다.
나의 경우, 데스크탑은 AMD CPU이고, 노트북은 Intel을 쓴다.
그래서 데스크탑에서는 자신있게! amd64를 깔아왔었지만, 노트북은 이제 겨우 2달 남짓 쓴 터라 설치할 일이 그리 많지도 않았고, 그동안은 64가 붙은게 하나뿐이라 눈치껏 64 붙은 녀석으로 설치해왔는데, 이번에는 amd도 64, arm도 64다. 난관이다.
그래서 이번 기회에 여태 미뤄왔던 아키텍처 부분을 조금 정리해보려 한다.
사실 amd64, arm64를 마주한 상황에서의 정확한 나의 심정은 아래와 같았다.
arm은 죽었다 깨어나도 아니니 amd일 것 같은데...근데 내 CPU 제조사는 AMD가 아니라 Intel인데...? 그렇다고 386...은 뭔가 아닐 것 같은데...
결과적으로 위 생각은 맞는 생각이었다. 반만.
컴퓨터에 조금 관심있는 사람은 ARM이 맥 계열 CPU의 아키텍처라는 것을 알 것이다. 엄밀히 말하자면 ARM은 훨씬 넓은 개념이지만, 일상생활에서는 컴퓨터에 프로그램을 설치하기 위해 CPU의 아키텍처를 알아야하는 경우가 대부분일테고, ARM을 CPU에서 쓰는 '컴퓨터'는 '현재로서는' 사실상 애플뿐이니 그렇게 생각해도 무방하다. (반면 휴대폰에 들어가는 AP는 거의 대부분 ARM이라고 봐도 무방하다. 엑시노스, 스냅드래곤 등등)
문제는 amd이다. AMD는 Intel과 경쟁하는 CPU/GPU 제조사이다. 분명 AMD와 Intel은 다르다. 근데 abc64도 아니고 하필이면 amd64라고 표기했다는 건 Intel과 경쟁하는 바로 그 AMD를 지칭할 가능성이 매우 크다. 그렇다면 아키텍처에서 Intel은 어디로 간 것이란 말인가?
결론부터 말하자면, Intel의 고유한 아키텍처는 AMD와의 경쟁에서 밀렸고, Intel은 현재 AMD의 아키텍처를 쓰고 있다는 것이다. 그래서 Intel 고유 아키텍처는 없는 셈. 그러다보니 프로그램을 깔 때도 arm과 amd는 있지만 intel은 없는 것이다.
역사적으로 들어가자면, 이는 64비트로의 전환과정에서 일어난 일이다.
Intel은 각각 16비트와 32비트 아키텍쳐였던 IA-16, IA-32에 이어 IA-64 라는 아키텍쳐를 준비했고 이를 밀고 나갔다. 이 때, Intel은 IA-32에서의 한계를 극복하고자, IA-64를 IA-32와 전혀 다른 기반으로 준비하였다.
IA-32는 CISC(Complex Instruction Set Computer) 였지만, IA-64는 VLIW(Very Long Instruction Word) 였던 것.
자세한 설명은 나무위키로 대체한다...
어쨌거나, Intel은 자신들이 시장을 제패하면서 느꼈던 IA-32의 한계를 극복하고자 근본적인 구조에서부터의 변화를 꾀하였다고 정리할 수 있다.
반면 시장 2인자였던 AMD는 여기서 Intel과 다른 길을 걷기 시작한다. 바로 기존의 32비트 아키텍처를 64비트로 확장하기로 마음 먹은 것. 즉, AMD는 64비트도 CISC 로 설계하였다.
그 결과는 위에서 말한 것처럼 AMD의 압승. Intel의 IA-64('아이테니엄' 이라고 읽는다)은 쫄딱 망했고, 이는 Intel 암흑기를 상징하는 사건이 되었다.
참고로, x64 라는 표기법 자체가 AMD64를 의미한다. 간혹 Intel은 Intel64라는 표기를 쓰기도 하는데 이 역시도 AMD64이다.
여담이지만, ARM은 RISC(Reduced Instruction Set Computer) 이다.
ARM과 AMD64의 차이는 이 글(나무위키)을 참고하길 바란다.