
❕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