최근 애플이 자사의 자체개발 SOC를 발표하여 화제이다. 다만 자체개발된 부분뿐만 아니라 기존의 데스크톱 cpu의 선두주자인 인텔의 cpu 설계 방식인 x86 아키텍쳐가 아닌 arm 기반의 칩셋을 개발하였다는 부분이 충격적이였다. 그렇다면 왜 애플은 x86 대신 arm을 선택하였을까?
두 아키텍쳐의 차이점을 알려면 개발자들의 코드가 어떻게 0과 1로 변환되는지 알아야 한다. 예를 들어 변수선언하고 그 변수들을 불러와서 출려하는 c코드가 있다고 하자. 이는 매우 쉬운 프로그래밍 기초이지만 0과 1만 이해하는 컴퓨터는 이러한 명령어를 이해하지 못한다. 따라서 개발자의 코드를 cpu와 가장 가까운 언어로 변환하는 작업이 필요하다. 좀 더 자세하게 설명하면 프로세서가 쉽게 0과 로1 바꿀수 있는 언어로 변환한다. 이 작업을 compilation 이라고 한다. 이렇게 우리가 컴파일한 언어를 assembly language라고 한다. 어셈블리 언어는 프로그램 실행에 필요한 모든 작업에 대한 과정들을 하나 하나 설명하게 된다. 예를 들면 메모리 공간 예약, 메모리 주소에 숫자를 넣고 할당하는 작업들에 대한 구체적인 지시사항들을 알려준다. 문제는 이러한 어쎔블리 코드는 그 프로세서의 전용 언어이기에 다른 프로세서에서는 실행시키지 못하는 문제가 있다. 이런 문제가 발생하는 이유는 ISA가 다르기 때문이다 쉽게 말하면 프로세서의 구조가 다르기 때문이다. ISA는 프로세서가 실행할수 있는 명령어 집합을 뜻한다. x86은 보통 CISC 프로세서라고 하고 ARM은 보통 RISC 프로세서라고 한다. 각 약자의 뜻은 Complex Instruction Set Computer, Reduced instruction set computer 이다. x86과 ARM은 add 와 mov 라는 명령어를 공유하지만 str, pop 등의 명령어 셋은 공유하지 않는다. 이뿐만 아니라 이름에서 알수있는 사실이 있다. CISC의 complex RISC의 reduced 는 각각 복잡한, 줄인의 뜻으로 CISC 프로세서는 RISC 프로세서보다 명령어 셋이 더 많다. 예시로 CISC 프로세서는 세제곱이라는 명령어가 있을수 있지만 RISC 프로세서는 세제곱이라는 명령어가 없어 곱셈 명령어를 3번 실행해야 할 수 있다. 보기에는 RISC 프로세서가 더 비효율적으로 보이지만 그렇지 않다. RISC 프로세서는 간단하고 기본적인 작업을 최대한 빠르고 많이 처리하는게 중요하기 떄문에 결국 RISC 프로세서가 계산 우위에 있을수 밖에 없다. 예전에는 복잡도의 균형을 맞추는 것이 중요했다. 그 이유는 컴파일을 사람이 하여 어셈블리 코드를 만들었기 떄문이다. 당연히 어셈블리 코드의 양을 줄이는것이 편리하였기 때문에 곱셈 3번을 세제곱으로 표현하는 것이 RAM 메모리 용량면에서도 훨신 효율적이였을 것이다. 그러나 이제는 더 이상 그럴 필요가 없어졌다. 우리에게는 컴파일러 라는 도구가 생기고 기술의 발전으로 메모리 용량이 늘어났기 때문이다.
다만 요즘 가장 신경 쓰이는건 바로 배터리 수명이다. 명령어 셋이 복잡 할수록 에너지 요구량도 많아지기 떄문에 최근에 RISC 프로세서가 선호되는 것이다. 그렇다면 왜 아직도 CISC 프로세서를 쓰는것일까? 그 이유는 바로 호환성에 있다 앞에서 말했던것 처럼 CISC와 RISC는 구조가 달라 각자 다른 프로그래밍 환경을 갖기 떄문에 기존에 CISC 프로세서에서 돌리는 프로그램이 RISC 프로세서에서 돌아가지 않을 수 있기 때문이다. 그러나 폐쇄적인 환경이 장점인 애플은 자체 프로세서를 ARM 기반으로 만들어냈고 RISC 프로그램도 점점 많아지고 있는 추세이다. 최근 발표한 m1 울트라 프로세서는 경쟁사 프로세서 대비 최대 4.5배 빠르다고 한다.
+
특히 RISC는 명령어의 길이가 고정되어 잘라서 각각의 디코더에 나누어주면 되는 반면 CISC는 명령어가 언제 시작되는지 언제 끝나는지 분석하는 과정이 있어야 되기 때문에 RISC가 더 효율적이다.
'IT' 카테고리의 다른 글
윈도우 핫스팟 인원 제한 해제하는 법 (0) | 2023.06.26 |
---|---|
메타버스 (0) | 2022.10.01 |