CPU, 메모리, 입출력 장치와 같은 하드웨어 구성 요소가 어떻게 설계디고 상호작용하는지 연구하는 학문, 프로그램이 실제로 어떤 과정을 거쳐 기계 수준에서 실행되는지에 대한 큰 그림을 다루는 분야
컴퓨터 기능 구조에 대한 설계
컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야
폰 노이만 구조, 하버드 구조, 수정된 하버드 구조
명령어 집합구조(Instrunction Set Architecture, ISA, CPU의 명령어에 대한 설계)
CPU가 이해하고 실행할 수 있는 명령어 집합과 해당 명령어들의 동작 방식을 정의한 규약
ARM, MIPS, AVR, 인텔의 x86, x86-64
마이크로 아키텍쳐(Micro Architecture, CPU의 하드웨어적 설계)
CPU가 명령어 집합 구조(ISA)를 어떻게 효율적으로 구현하고 실행할지 CPU의 회로를 설계하는 분야
파이프라인(Pipeline), 캐시(Cache) 등 성능과 전력 소모에 영향을 미치는 부분을 다룸

CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터 두뇌, CPU는 산술논리장치(ALU), 제어장치(Control Unit), 레지스터(Register)로 구성
기억장치는 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용, 데이터를 임시로 저장하는 주기억장치(RAM),데이터를 장기간 보관하는 보조기억장치(HDD, SDD)로 분류
컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로
데이터 버스(Data Bus), 주소 버스(Address Bus), 제어 버스(Control Bus)
CPU가 해석하는 명령어의 집합, 기계어를 CPU가 어떻게 해석하고 처리할지 방법을 정의
컴퓨터 환경이 다양하고, 다른 연산 능력 수준을 요구하기 때문에 다양한 ISA가 개발되고 사용됨
CISC(Complex Instruction Set Architecture)
메모리 효율성에 초점을 맞춰 개발됨, 고밀도의 메모리 명령어를 담을 수 있음
X86-64 아키텍처가 이 구조 사용
RISC(Reduced Instruction Set Architecture)
CISC 구조의 단점을 해결, 고정된 길이의 명령어만 사용, 저전력 기기에 적합, CISC에 비해 상대적으로 복잡
ARM, MIPS 아키텍처가 이 구조 사용
x86 아키텍처와 호환되는 64비트 아키텍처로, 대다수 개인용 컴퓨터가 이 아키텍처 기반 CPU 탑재
숫자는 CPU가 한번에 처리할 수 있는 데이터의 크기, 컴퓨터 과학에서는 WORD라고 부름
CPU가 한번에 처리할 수 있는 데이터의 크기
1. 레지스터 크기 : 레지스터가 한 번에 저장할 수 있는 데이터의 양
2. ALU 연산 데이터 크기 : ALU가 연산할 수 있는 데이터의 크기
3. 표현 가능한 주소의 크기(데이터의 크기) : 한 번에 접근할 수 있는 메모리 크기
4. 버스(Bus)의 대역폭 : 한 번에 전송할 수 있는 데이터의 양
레지스터는 CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소, x64 아키텍처에는 범용 레지스터(General Register), 세그먼트 레지스터(Segment Register), 명령어 포인트 레지스터(Instruction Point Register, IP), 플래그 레지스터(Flag Register)가 존재
데이터 연산을 위해 사용되는 레지스터, 범용이라는 말 그대로 이 외 용도로도 사용 가능

메모리를 세그먼트 단위로 접근하는 데 사용되는 특수한 레지스터

CPU가 어느 부분의 코드를 실행할지 가리키는 역할, x64 아키텍처의 명령어 레지스터는 rip(8byte)
CPU가 연산을 수행한 후 결과의 상태를 저장하는 특수한 레지스터, 특정 연산 후 조건을 판단하는데 사용(분기, 인터럽트), x64아키텍처에는 RFLAGS(8byte)가 존재

앞으로 주로 접하게 될 것, 상태 플러그(Status FLag)로 연산을 수행한 뒤 결과를 저장하는데 사용됨

x86-64 아키텍처는 x86과 호환 가능, 인텔의 x86 아키텍처인 IA-32의 레지스터는 모두 32비트 크기, eax, ebx, ecx, edx, edi, esi, ebp, esp 등 접두어로 e가 붙은 이름을 가지고 있음
범용 레지스터에서 나욜한 rax, rbx, rcx, rdx, rdi, rsi, rbp, rsp 등은 32비트 레지스터가 확장된 형태로, 접두어로 r이 붙는다는 특징을 갖고 있음 eax, ebx등은 하위 32비트 의미
IA-16 또한 16비트 크기를 가지고, IA-32도 IA-16과의 호환을 우해 ax, bx, cx, dx, du, su, bp, sp는 eax, ebx, ecx, edx, edi, esi, ebp, esp의 하위 16비트를 의미, 이를 또 상위, 하위 8비트로 나눌수 있고 등등 아래 그림에서 확인 가능
