CPU 아키텍처
소프트웨어를 설치하다 보면 아키텍처를 골라야 하는 경우가 있다. ARM, x86_64, AMD64 처럼 표현은 조금씩 다르지만 큰 틀에서 ARM 혹은 Intel/AMD64 중 선택하는 경우가 많다.
아키텍처가 다르니 명령어에서도 차이가 있겠지만, 구체적으로 뭐가 다른지, 왜 통합이 안된 것인지 궁금해서 찾아본다.
AMD64
Intel과 AMD가 개발한 x86 계열의 64비트 아키텍처다. 원래 32비트 기반이었던 것을 64비트로 확장했기 때문에 x86_64라고 부르며, AMD가 만들었기 때문에 AMD64라고도 한다. 주로 데스크탑, 노트북 등에 사용된다.
- 복잡하고 다양한 명령어를 지원
- 프로그램 한 줄을 실행하는 데 필요한 명령어 수가 적다
- 명령어 디코딩과 실행 로직이 복잡해서 회로가 많아지고, 전력 소모가 커짐.
ADD X0, X1, X2
ARM
ARM이라는 회사가 설계한 RISC(단순 명령어 집합) 기반의 CPU 아키텍처다. 단순한 명령어 구조로 설계되어 성능 대비 전력 효율이 좋다. 주로 모바일이나 작은 디바이스에서 많이 사용되었는데, 최근에는 성능도 좋아지면서 서버에서도 사용하기도 한다.
- 단순하고 규칙적인 명령어만 지원
- CPU 설계가 단순해지고 전력 소비 낮음
- 동일 작업을 위해 더 많은 명령어가 필요할 수 있음
ADD X0, X1, X2
비교
구분 | amd64 (x86-64) | arm |
---|---|---|
설계 철학 | CISC (복잡 명령어 집합) | RISC (단순 명령어 집합) |
주요 사용처 | 데스크탑, 노트북, 서버 | 모바일, IoT, 서버, 일부 데스크탑 |
성능 | 고성능, 전력 많이 사용 | 전력 효율 우수, 성능도 점점 강력해짐 |
소프트웨어 호환성 | 대부분의 OS/소프트웨어 지원 | 점점 늘어나고 있지만 일부 호환성 문제 존재 |
대표 제품 | Intel/AMD CPU | Apple M1/M2/M3, ARM Cortex, AWS Graviton |
아키텍처와 명령어의 관계
- 명령어 집합(ISA): CPU가 이해하는 언어
- 명령어 집합은 아키텍처의 일부
x86-64 ISA는 rax, rbx, rcx… 같은 레지스터 정의하고 있는 반면에 ARM ISA는 X0 ~ X30 같은 다른 레지스터 정의하고 있다.
명령어는 결국 레지스터와 메모리 구조를 조작하기 때문에라서 ISA는 특정 아키텍처의 하드웨어 구조에 맞춰져야 한다 (종속적)
ARM 좀 더 알아보기
애플, 퀄컴은 그럼 ARM 아키텍처 기반이라고 하는데 구체적으로 어떤 구조일까?
Apple
최근 출시되는 맥북은 ARM 기반의 M3, M4 같은 칩이 내장된다.
애플은 ARM의 ISA만 라이센싱하고 칩의 설계는 직접한다.
퀄컴
퀄컴의 스냅드래곤 시리즈는 ARM Cortex와 자체 설계 코어를 혼용한다. ARM 코어 라이센스와 ISA 라이센스를 사용한다.
퀄컴은 SoC(System on Chip)을 설계하는 회사인데, SoC는 시스템 전체를 한 칩에 넣은 것을 말한다. CPU, GPU, 모뎀, 이미지 신호 프로세서 등이 통합되어 하나의 칩인 경우다. 퀄컴 스냅드래곤 시리즈의 경우 CPU는 ARM Cortex 시리즈를 사용하되 나머지는 자체 설계하는 식으로 개발된다.