카테고리 없음

ARM 프로세서

seinieo 2021. 12. 29. 23:42

ARM 프로세서
처음에는 모바일 기기에 적용
-> 점점 노트북 서버로 확장 슈퍼컴퓨터에 활용

우리가 C언어로 적은 코드를 CPU가 이해해야한다.
따라서 우리가 쓴 코드를 CPU와 가장 가까운 언어로 변환해야하는데
이런 변환을 Compilation 이라고 한다.
그렇게 컴파일 하고 난 언어를 어셈블리 언어라고 한다.
어셈블리 언어에서 우리가 쓴 C코드를 프로세서가 코드를 실행할 수 있도록 따라야 하는 명령으로 나뉠것이다.

어떤 프로세서가 있는 기계에서 C코드를 컴파일하면 어셈블리어가 얻어진다.
어셈블리어는 기계에게 프로그램을 실행시키기 위한 모든 스텝을 설명한다.
이 코드를 어셈블러한테 전달하면 프로세서가 이해할 수 있는 0과 1을 얻게된다.

이때 중요한 것은 어떤 프로세서를 쓰는 기계에서 컴파일 했느냐에 따라서 다른 프로세서를 사용하는 사용자의 경우 해당 코드를 실행하지 못하게 된다.

프로세서들은 각기 다른 ISA(Instruction Set Architecture)를 가지고 있기 때문이다.
ISA란 프로세서가 실행할 수 있는, 지원되는 '명령' 또는 '커맨드' 집합을 뜻한다.

intel 이나 ARM 프로세서가 코드를 실행가능하도록 하려면 해당 C코드를 다시 컴파일 하여 해당 프로세서의 명령을 따르는 어셈블리 코드를 만들어야 한다.

인텔 프로세서에서 실행할 C코드를 컴파일하면 A라는 코드를 얻게되고,
ARM 구조 프로세서로 컴파일 하면 B라는 구조의 코드를 얻게된다.
이렇게 얻어진 두 어셈블리코드는 명령뿐만아니라, 구조면에서 차이가있다.

intel과 AMD로 유명한 X86 프로세서 패밀리의 경우 CISC(Complex Instruction Set Computing) 구조를 사용
ARM 프로세서는 RISC(Reduced Instruction Set Computing) 구조를 사용
프로세서는 실행할 수 있는 일정량의 지시사항 또는 명령을 이해할 수 있다.

이러한 명령은 해당 칩의 디자이너에 따라 결정된다.

CISC 프로세서는 RISC 보다 지시사항이 많다.
여러 프로세서 모두 add라는 명령어를 이해하고 있다.

CISC 프로세서에 '세제곱'이라는 명령이 존재할 수 있지만, RISC 프로세서는 그런 명령을 없을 수 있다. 
따라서 CISC 프로세서의 어셈블리 코드를 작성할 때, 프로세서가 이미 가지고 있는 명령을 사용할 것이다. 하지만 RISC 프로세서의 경우에는 동일한 결과를 얻기위해서는 mul 명령을 세 번 사용해야한다. RISC 프로세서의 경우 프로세서가 많은 작업을 수행해서는 안된다. 수많은 작업을 수행하는 대신 기본 작업을 빠르게 수행하는 것이 중요하다. 
CISC 에서는 복잡한 작업을 수행할 수 있지만, 시간이 걸릴 수 있다.
혹은 RISC에게 여러개의 명령을 전달해서 빠르게 수행이 가능해진다.


손으로 어셈블리 코드를 쓰던 시절에는 CISC 를 사용하는 것이 코드를 적게 쓸 수 있기 때문에 더 편했을 것이다.
RISC에는 없는 수많은 명령들이 있으니까. 또 램 메모리가 풍족하지 않았기 때문에 프로그램을 실행하려면 그 프로그램이 램 메모리에 복사되어야 프로세서로 프로그램을 실행할 수 있다. 즉 규모가 큰 프로그램의 경우 실행하려면 더 많은 램 메모리가 필요했다.
램 메모리가 부족하여 개발자들이 직접 어셈블리 언어를 찍어내던 시절에는 CISC 프로세서를 선택하는건 당연했다. CISC 프로세서에는 개발자를 도울 명령어들이 많았기 때문이다.

하지만 현재에는 컴파일러도 있고, 램 메모리도 많기 때문에 누구도 어셈블리 언어를 손으로 쓰지 않는다. 최근에는 가장 신경쓰는 부분은 배터리 수명이다.
프로세서 수행할 것이 복잡할수록 에너지 사용량이 높아진다. 덕분에 ARM 즉 RISC 프로세서가 모바일 기기용으로 각광받은 이유이다.

또 RISC 프로세서는 CISC 처럼 기능이 많지 않아서 필요한 트랜지스터가 적고, 가격도 싸고, 차지하는 크기도 작다. Apple은 ARM 메이커인 Acorn에 의뢰하여 라이센스 사용을 요청했다. 더 많은 모바일, 그리고 IoT 기기들이 ARM을 사용하고 있다.

CISC의 필요성이 과거와 달라지면서 서로 그 장점을 배우면서 최근에는 CISC와 RISC의 경계가 희미해진다고 한다.
ARM 에는 CISC의 특성이 있고, x86은 일부 RISC 기능을 적용하기도 했다.

x86 CISC 구조는 꽤 오래 사용되어왔다. 여러 기관에서 X86 구조에 맞춘 소프트웨어를 사용한다.
그래서 CISC를 쓰는 이유는 그러한 레거시 때문도 있다.
x86에서 ARM 프로세서 전환이 쉽지않다. 

M1 유저들은 일부 프로그램 실행에 어려움을 겪는다. 프로그램을 x86에서 ARM 으로 변환해야한다.

ARM 회사가 갖고있는 비즈니스 모델 덕분에 빠르게 변화해나가고 있다.
ARM 회사는 인텔과 다르게 직접 칩을 생산하지 않는다. ARM은 IP를 라이선스 하고 있다.
다른 회사들이 ARM에 돈을 내고 가져와서 맞춤형으로 칩을 생산해낸다.
덕분에 더 빠른 스피드, 그리고 길어진 배터리 수명을 가지게 된다.
amazon MS 모두 ARM 기반의 SoC을 만들고 있다.