❕CPU마다 제각기 언어가 다르다
∴ 👩💻프로그래머가 짠 코드를 해당 CPU에 맞게 번역해 주어야 프로그램이 돌아간다
➩ 번역 = 컴파일
🖇️컴파일
?
processor
가 쉽게 0/1
로 바꿀 수 있으면서
인간도 살짝 이해할 수 있는 언어: (Assembly Language) 로 바꾸는 것
➩ 실행파일 .exe
, .dll
로 바뀜.
➩ processor
= CPU
⌨️Assembly Language
?
기계에게 프로그램을 실행시키기 위한 모든 스텝들을 하나하나 설명
=C코드 따위가 변환되어 processor가 코드를 실행하기 위해 따라야 하는 명령들로 나뉜다
e.g.)
명령어 | 수행 |
---|---|
LOAD 0X001 | 메모리에 공간예약 |
PUT 2, 0X001 | 해당 메모리 주소에 숫자 넣기 |
ADD 0X001, 0X002, 0X003 | 메모리 주소 내부에 값 추가 |
* ISA별로 이 명령어가 다를 수 있다.
- ISA = CPU들의 언어 = 기계어
- Instruction Set Architecture
They are all ISAs; ISA의 종류들이다. 그밖에도 x86
등이 대표적이다.
多인 이유?
특정 ISA 겨냥 프로그램 을 다른 ISA 기반의 CPU 에서 돌아가게 하기 힘들다.
Intel과 AMD는 CPU 부문에서 서로에게 유일한 경쟁사이다.
Intel이 사용하는 CPU에는 x86
라는 ISA가 사용되는데, AMD 역시 x86-64
에 맞게 CPU를 설계해왔다.
Then: x86의 시대
1981년부터 대세로 자리잡은 x86
. 그로부터는 x86
의 독주체제였다. 세상에 나와있는 수많은 프로그램들이 이미 x86
에 맞춰져 호환이 어려웠기 때문이다. 소프트웨어 회사들 역시 비용을 들여 다른 isa
에 맞춰 프로그램을 개발할 필요성을 굳이 느끼지 못했다.
Now: ARM VS Intel
ARM은 Intel이나 AMD와는 조금 다른 행보를 보여주었다.
Intel과 AMD가 자신만의 CPU를 온전히 만들어냈다면,
ARM은 뼈대까지만 만든 설계도를 다른 CPU 설계사에게 제공하면(licensing IP), 설계도를 산 회사가 살을 붙여 CPU를 완성하는 식이다.
ARM은 처음에는 모바일 기기에서만 유명했으나, 점차 노트북과 서버로 영역을 확장해나가고 있다. ARM의 활발한 이용 덕분에 서버비용은 저렴해지고 속도는 빨라지고 있는 추세이다.
어셈블리어 내 명령어도 물론 다르지만, processor가 이용하는 architecture에 따라서도 그 차이가 도드라진다.
x86
processor는 CISC를 쓰는 반면, ARM
processor는 RISC를 쓴다.
processor | architecture |
---|---|
x86 : Intel & AMD | CISC |
ARM | RISC |
CISC
: Complex IS Computing = 복잡한 작업 수행. = 지시사항이 더 多 = more energy needed
RISC
: Reduced IS Computing = 기본작업을 빠르게. = less features, less transistors = less space, less money
AMD도 ARM 칩을?
https://techrecipe.co.kr/posts/33860