X86과 ARM CISC 와RISC

sumjo
|2024. 2. 25. 07:21

나는 m1맥 유저다. 

가끔 인텔 맥에서 컴파일 된 오브젝트 파일 때문에 빌드를 실패할 때가 있다.

어떻게 보면 당연한 것이라고 생각되지만, 어셈블리를 실행시킨다는 면에서는 다른 컴퓨터에서도 그냥 실행이 되야 하지 않나 싶다.

물론 그렇지 않다. cpu 인스트럭션이 다르기 때문에 어셈블리어도 다르게 나오기 때문이다.

 

 

x86(AMD64, X86-64)

x86 은 인텔에서 출시한 32비트 cpu아키텍처를 지칭한다. 현재 PC시장에서 많은 점유율을 차지하고 있다.

지금은 아무도 32비트 PC는 안쓰고, AMD에서 X86을 기반으로 설계한 64비트 CPU가 쓰인다. AMD64 혹은 X86-64라고 불린다.

 

ARM

ARM 홀딩스라는 회사가 있다. 쉽게 말하면 도면을 파는 회사이다. CPU를 직접 제조하진 않고 아키텍쳐를 설계해서 기업에 제공하고 로열티나 라이센스를 받는게 주업이다.

그리고 ARM은 이 ARM 홀딩스에서 설계한 명령어 집합과 아키텍쳐를 총칭하는 것이다. 

 

 

CISC (Complex Instruction Set Computer)

복잡한 명령어 셋을 가지고 있는 프로세서이다. 대표적으로 X86-64가 채택하고 있다.

복잡한 명령어 라는 의미는 하나의 명령어가 할 수 있는 일의 양이 RISC에 대비해서 많다는 의미이다. 그만큼 필요한 명령어를 모두 갖추고 있다는 컨셉이다.

명령어마다 길이가 다르고, 복잡한 명령어를 사용하는 만큼 전력 소모도 크다.

 

RISC (Reduced Instruction Set Computer)

적은 수의 명령어를 가지고 있는(빈도가 높은 20%) 프로세서 구조이다. 모든 동작이 몇개의 핵심 명령어를 통해서 작동된다는 것을 기반으로 한다. ARM이 RISC구조를 채택하고 있다.

모두 고정된 명령어(1 word)단위를 가지고 있다. 즉 명령어의 길이가 같고 짧다. 때문에 코어 간 병렬처리가 용이하고 전력 소모도 적다.

명령어가 짧고 최소한의 일만 수행하기 때문에 명령어의 사용이 더 많고 어셈블리로 바꾸었을 때 용량이 더 크다.

 

 

간단한 예시

두 값을 곱한다고 하자. 두 값의 주소는 0x11 0x22 라고 하자.

컴퓨터는 메모리에 접근한다. 두 값을 더한다는 것은 특정 메모리 위치의 두 값을 레지스터로 가져온 후 연산을 수행하고 다시 메모리에 적는 것이다. 

RISC 로 따지면

 

LOAD  A 0x11

LOAD  B 0x22

PROD A B

STORE 0x11 A

 

각가 A,B 레지스터에 값을 가져오고(LOAD) 연산을 수행한 뒤(PROD) 다시 0x11의 주소에 값을 저장(STORE)한다.

 

CISC 는 MULT(Multiple)라는 명령어가 이미 구현되어 있는 것이다. 물론 내부적으로 저 과정을 거치긴 하지만 하나의 명령어 셋이다.

하지만 속도적으로는 RISC의 저 명령들은 MULT에 근접하거나 그 이상일 수 있다.. 하나의 명령어가 최소 단위의 사이클을 가지기 때문이다.

 

CISC 접근은 명령어당 사이클 수의 희생하면서 프로그램당 명령어 수를 최소화 시키려고 한다. RISC는 반대로 프로그램당 명령어 수 증가를 감수하고 명령어 당 사이클 수를 최소화한다.

 

비유하자면 CISC는 고수준 언어 같은 것이다.

메모리 할당, 가비지 컬렉터 등 필요한 기능이 전부 마련되어 있어서 malloc도 free도 할 필요가 없는.

대신 느리고 리소스를 많이 잡아먹는다. RISC는 저수준이지만 최적화에 용이하다.

재밌는 비유다.

 

출처 : https://blog.naver.com/ytghandsome/100065632980

 

 

흥미로운 내용

CISC는 병렬 처리가 쉽지 않다. 명령어의 길이가 다르기 때문에 각 코어가 일을 시작하고 끊는 시점이 제각각이기 때문에 비효율이 많이 발생하게 된다. 그래서 죽어라 최적화 시키지 않는 이상은 깡클럭 즉 싱글코어 성능이 중요하다. 한번에 여러 일을 잘 못하니까 그냥 한놈이 엄청 빠르게 해줘야 되는 것이다.

RISC는 명령어 길이가 같으니 병렬  처리에 용이

 

또 M1은 왜 배터리가 오래 갈까. 한번에 복잡한 계산을 하는 것보다 단순한 계산을 여러번 하는 것이 전력 소모가 덜하다고 한다. RISC의 특징이다. 

 

지금은 RISC와 CISC각자 서로의 장점을 도입하기 때문에 경계는 흐릿해지고 있다.