x86 아키텍처의 정의와 유래
x86은 Intel이 1978년에 발표한 8086 프로세서에서 시작된 명령어 집합 아키텍처(ISA)를 통칭한다. 이후 출시된 80186, 80286, 386, 486 등 후속 모델들이 모두 '86'으로 끝나면서 이들의 설계 방식을 x86이라 부르게 되었다.
- Intel과 AMD의 관계: x86은 Intel이 만든 규격이지만, AMD 역시 라이선스 계약을 통해 동일한 '언어(명령어)'를 사용한다. 따라서 사용자 입장에서는 두 회사의 CPU 모두 동일한 Windows 프로그램과 게임을 실행할 수 있다.
- 64비트의 주도권: 과거 32비트 체제는 Intel이 주도했으나, 현재 표준인 64비트 확장(x86-64)은 AMD가 먼저 제안하여 성공시켰다. 이 때문에 현재 Intel CPU 내부에서도 AMD가 설계한 64비트 표준 기술이 작동하고 있다.
기술적 특징: CISC 방식
x86은 CISC(Complex Instruction Set Computer) 방식을 취한다. 이는 하나의 명령어로 복잡한 연산을 수행할 수 있도록 설계된 구조다.
- 강력한 기능: 하드웨어 수준에서 복잡한 연산을 지원하므로 소프트웨어 코딩이 상대적으로 간결해진다.
- 하위 호환성: 30~40년 전에 만들어진 프로그램도 최신 x86 CPU에서 큰 수정 없이 돌아갈 만큼 호환성 유지가 뛰어나다.
- 성능 중심: 전력 효율보다는 절대적인 연산 성능과 호환성에 최적화되어 있어, 고성능 데스크톱과 서버 시장의 주류를 차지해 왔다.
x86이 아닌 CPU들: ARM의 부상
x86을 사용하지 않는 대표적인 아키텍처는 ARM이다. ARM은 RISC(Reduced Instruction Set Computer) 방식을 사용하여 구조가 단순하고 전력 소모가 적다.
- 주요 사용처: 스마트폰, 태블릿, 그리고 Apple의 M 시리즈 칩셋이 탑재된 Mac 제품군이 대표적이다.
- 서버 시장의 변화: 최근 클라우드 환경(AWS Graviton 등)에서는 비용 절감을 위해 ARM 기반 서버 도입이 활발하다. x86 서버 대비 약 20~40% 저렴한 비용으로 비슷한 성능을 낼 수 있기 때문이다.
게임 서버 개발 관점에서의 기술적 차이
C++ 기반의 고성능 서버를 개발할 때, x86 아키텍처는 다음과 같은 특징을 가진다.
1. 강력한 메모리 모델 (Strong Memory Model)
x86은 TSO(Total Store Ordering) 모델을 따른다. 이는 CPU가 명령어 실행 순서를 임의로 바꿀 때 매우 보수적으로 행동함을 의미한다.
- 장점: Lock-free 알고리즘이나 멀티스레딩 환경에서 메모리 배리어(Memory Barrier)를 아주 엄격하게 세우지 않아도 데이터 정합성이 깨질 확률이 낮다.
- ARM과의 차이: ARM은 Weak Memory Model을 사용하므로, x86에서 잘 작동하던 Lock-free 코드가 ARM 서버에서는 데이터 레이스로 인해 오작동할 수 있다.
2 고성능 싱글 스레드와 확장성