# 1. ISA - Instruction Set Architecture - CPU가 이해하고 실행할 수 있는 명령어 집합. - 특정 아키텍처의 하드웨어와 소프트웨어 간의 인터페이스. - 각각의 아키텍처는 고유한 ISA를 가짐. - 이 명령어 집합들은 운영체제와 어플리케이션에 사용됨. # 2. CPU Architecture - CPU의 설계와 명령어 집합(ISA)을 정의하는 방식. - 아키텍처란 다른 하드웨어와 소프트웨어 간의 상호 작용을 가능하게 하는 인터페이스. - CPU의 내부 구성 요소, 레지스터, ISA를 포함하는 개념. ## 2-1. CPU 아키텍처 종류 ### x86 - Intel 기반 32bit CPU - x86은 32bit CPU의 대표명사처럼 불림 - Windows, Linux, Mac OS (BigSur까지) 지원 ### x86_64 (amd64) - Intel 기반 64bit CPU, x86과 호환됨. - Windows, Linux, Mac OS (BigSur까지) 지원 ### arm - RISC(Reduced Instruction Set Computer) 아키텍처 - 저전력 소비, 높은 효율성 - arm 기반 32bit CPU - x86과 아예 달라서 호환 안 됨. - Linux, Mac OS (Monterey부 터), Android, iOS ### arm64 - arm 기반 64bit CPU - 32bit arm과 호환됨 - Linux, Mac OS (Monterey부터), Android, iOS ## 2.2 특징 - 같은 소스 코드이지만 컴파일 환경이 다르면 다른 실행 파일이 생성됨. - x86_64에서 실행하도록 컴파일 된 파일은 x86_64의 ISA를 사용해서 컴파일됨. - arm64에서 실행하도록 컴파일 된 파일은 arm64의 ISA를 사용해서 컴파일됨. - x86_64에서 실행되도록 컴파일된 파일을 arm64에서 실행하려면 해당 파일을 arm64 ISA에 맞게 재컴파일하여 새로운 실행 파일을 생성하거나, 크로스 컴파일러를 사용해야 함. | x86 | x86-64 | ARM | AArch64 | MIPS | RISC-V (RV64) | | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | - 32비트 CISC(Complex Instruction Set Computer) 아키텍처<br><br>- 복잡한 명령어 집합 (variable-length)<br><br>- Intel/AMD PC에서 오래 사용됨<br><br>- 레거시 호환성 강함 | - x86의 64비트 확장 (x86_64, AMD64)<br><br>- 레지스터 확장 (8 → 16개)<br><br>- 현재 데스크탑/서버 표준 아키텍처<br><br>- 여전히 CISC 기반 | - 32비트 RISC 아키텍처<br><br>- 단순한 명령어, 고정 길이<br><br>- 저전력, 모바일/임베디드에 최적화<br><br>- 스마트폰(구형) 등에 사용 | - ARM의 64비트 버전<br><br>- Apple M 시리즈, 최신 모바일 CPU 사용<br><br>- RISC 기반, 성능 + 전력 효율 균형<br><br>- 서버 시장에서도 점점 확장 중 | - 전형적인 RISC 아키텍처 (교육용으로 많이 사용)<br><br>- 단순하고 구조가 명확<br><br>- 현재는 실사용보다는 학습/연구 중심 | - 오픈소스 ISA (확장 가능 구조)<br><br>- RISC 기반, 모듈형 설계<br><br>- 커스터마이징 가능 (확장 명령어)<br><br>- 최근 연구/산업에서 빠르게 성장 중 | | 구분 | CISC | RISC | | --- | ------------ | -------- | | 철학 | 한 번에 많이 | 여러 번 나눠서 | | 명령어 | 복잡 | 단순 | | 길이 | 가변 | 고정 | | 실행 | 내부적으로 쪼개서 처리 | 바로 실행 | ## CISC (Complex Instruction Set Computer) - ‘복잡한 명령어 집합을 활용하는 컴퓨터(CPU)’ - 명령어의 형태와 크기가 다양해서 명령어의 길이가 가변적 - 대표적으로 x86과 그 확장판인 x86-64. ### 장점 - 복합적이고 명령어가 많아 호환성이 좋음 - 강력한 명렁어 활용으로 명령어 몇 개만으로 수행 가능 - 메모리 공간 절약 가능 - 가변 길이 명령어를 사용하므로 마이크로코드 구현이 비교적 편함 ### 단점 - 명령어가 복잡하고 다양한 기능을 제공하여 실행 시간이 일정하지 않음 - 한 명령어가 여러 클럭 주기가 필요하고 규격화 되어 있지 않아 파이프라인이 효율적으로 처리 불가 - 속도가 느림 - 전력 소모가 많음 - 구조가 복잡해서 설계가 어려움 - 대다수의 복잡한 명령어는 사용 빈도가 낮음 - 메모리 성능이 좋아지면서 장점들의 의미가 없어짐 ## RISC (Reduced Instruction Set Computer) RISC 는 Reduced Instruction Set Computer 의 약자 - 명령어는 짧은 형태의 고정 길이로 규격화. 1클럭 내외로 실행되는 것을 지향. - 대표적으로 ARM(Advanced RISC Machine) ### 장점 - 메모리 접근 명령어는 load / store 두 개로 단순화, 최소화 - 레지스터 적극 활용하여 하드웨어 구조가 단순해지고 레이턴시를 낮아짐 - 명령어 낭비 감소 - 명령어가 1클럭 내외 실행되어 파이프라이닝에 최적화 - 명령어 길이가 정해져있어서 해석 속도가 빠름 - 전력 소모가 적음 ### 단점 - 명령어가 하드웨어적으로 호환성이 낮음 - 많은 레지스터 필요 - 명령어 길이가 제약되어 명령의 점프 불가