-
컴퓨터 구조 (Computer Architecture)드림핵 2025. 3. 10. 09:26
컴퓨터의 효율적 작동을 위한, 구성 방법과 구성 요소들 간의 상호작용 설계
- 컴퓨터의 기능 구조에 대한 설계
- 명령어 집합구조
- 마이크로 아키텍처
- 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등
기능 구조 설계
- 연산을 효율적으로 하기 위한 기능들을 설계
- 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조
폰 노이만 구조
- 핵심 기능 : 연산, 제어, 저장
- 연산과 제어 - 중앙처리장치(Central Processing Unit, CPU)
- 저장 - 기억장치(memory)
- 데이터 교환 - 전자 통로인 버스(bus)
중앙처리장치 (Central Processing Unit, CPU)
- 연산 처리,시스템 관리
- 구성
- 산술논리장치(Arithmetic Logic Unit, ALU) : 산술/논리 연산을 처리
- 제어장치(Control Unit) : CPU를 제어
- 레지스터(Register) : CPU에 필요한 데이터를 저장
기억장치 (memory)
- 데이터 저장
- 주기억장치 : 프로그램 실행 과정에서 필요한 데이터들을 임시 저장
데이터 저장, 속도 빠름, 휘발성 메모리 (전원OFF → 저장 데이터 손실)
ex) 램(Random-Access Memory, RAM) - 보조기억장치 : 운영 체제, 프로그램 등과 같은 데이터를 장기 보관
ex) 하드 드라이브(Hard Disk Drive, HDD), SSD(Solid State Drive)
버스 (Bus)
- 신호를 전송하는 통로
- 데이터 버스(Data Bus) : 데이터가 이동
- 주소 버스(Address Bus) : 주소를 지정
- 제어 버스(Control Bus) : 읽기/쓰기를 제어
- 랜선이나 데이터 전송 소프트웨어, 프로토콜 등
명령어 집합 구조 (Instruction Set Architecture)
- CPU가 처리하는 명령어의 집합
- ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등
컴퓨팅 환경 다양
x86-64 아키텍처
- 고성능 프로세서를 설계하기 위해 사용, 데스크톱 또는 랩톱에 적합
현재 대다수 개인용 컴퓨터는 이 x86-64 아키텍처 기반의 CPU를 탑재 - 00비트 아키텍쳐는 WORD가 00비트
-> WORD : CPU가 한번에 처리 가능한 데이터의 크기 - 가상메모리
- 32비트 아키텍처 : 4,294,967,296바이트(=4기가 바이트)
- 64비트 아키텍처 : 이론상 16엑사 바이트(=16,777,216 테라바이트)
- x64 아키텍처의 레지스터
- 범용 레지스터(General Register) : 주용도와 그 외의 다양한 용도의 레지스터
각각 8바이트를 저장
이름 주용도 rax (accumulator register)함수의 반환 값rbx (base register)x64에서는 주된 용도 없음rcx (counter register)반복문의 반복 횟수, 각종 연산의 시행 횟수rdx (data register)x64에서는 주된 용도 없음rsi (source index)데이터를 옮길 때 원본을 가리키는 포인터rdi (destination index)데이터를 옮길 때 목적지를 가리키는 포인터rsp (stack pointer)사용중인 스택의 위치를 가리키는 포인터rbp (stack base pointer)스택의 바닥을 가리키는 포인터 - 세그먼트 레지스터(Segment Register) : cs, ss, ds, es, fs, gs 총 6가지 세그먼트 레지스터가 존재
각각 16비트- cs, ds, ss 레지스터는 코드 영역과 데이터, 스택 메모리 영역을 가리킬 때 사용
- 나머지 레지스터는 범용적인 용도 (운영체제 별로 용도 결정)
- 명령어 포인터 레지스터(Instruction Pointer Register, IP) : CPU가 어느 부분의 코드를 실행할지
rip, 크기는 8바이트 - 플래그 레지스터(Flag Register) : 현재 상태를 저장 (자신을 구성하는 여러 비트들로 CPU의 현재 상태를 표현)
RFLAGS, 크기는 64비트 (실제로는 20여개의 비트만 사용)플래그 의미 CF(Carry Flag)부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정ZF(Zero Flag)연산의 결과가 0일 경우 설정SF(Sign Flag)연산의 결과가 음수일 경우 설정OF(Overflow Flag)부호 있는 수의 연산 결과가 비트 범위를 넘을 경우 설정
- 범용 레지스터(General Register) : 주용도와 그 외의 다양한 용도의 레지스터
- 레지스터 호환
- x86-64 아키텍처는 IA-32의 확장 아키텍처 (호환 가능)
- x86-64의 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp에서
IA-32의 eax, ebx, ecx, edx, esi, edi, esp, ebp는
각각 확장된 레지스터의 하위 32비트를 의미
- x86-64의 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp에서
- 16비트 아키텍처인 IA-16과의 호환
- IA-32의 eax, ebx, ecx, edx, esi, edi, esp, ebp에서
ax, bx, cx, dx, si, di, sp, bp는 하위 16비트 - 상위 8비트는 ah와 같이 첫글자+h
- 하위 8비트는 al과 같이 첫글자+l
- IA-32의 eax, ebx, ecx, edx, esi, edi, esp, ebp에서
- x86-64 아키텍처는 IA-32의 확장 아키텍처 (호환 가능)
마이크로 아키텍처(Micro Architecture)
- CPU의 하드웨어적 설계
- 정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계
- 캐시 설계, 파이프라이닝, 슈퍼 스칼라, 분기 예측, 비순차적 명령어 처리 등
참조
'드림핵' 카테고리의 다른 글
[드림핵] Return Address Overwrite (0) 2025.04.30 x86 Assembly (0) 2025.03.10 리눅스 메모리 구조 (Memory Layout) (1) 2025.03.10 [DreamHack] Dream Beginners Tips (0) 2025.03.02 Dream Beginners (0) 2025.02.23