Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 자바
- Be
- UXUI챌린지
- UXUI기초정복
- 티스토리챌린지
- 국비지원취업
- 환급챌린지
- OPENPATH
- Java
- 디자인강의
- 오픈챌린지
- JPA
- 객체지향
- baekjoon
- 백엔드 부트캠프
- 디자인챌린지
- 국비지원
- 오블완
- KDT
- Spring
- 패스트캠퍼스
- mysql
- UXUIPrimary
- 디자인교육
- 국비지원교육
- 백준
- 백엔드개발자
- 부트캠프
- 내일배움카드
- 오픈패스
Archives
- Today
- Total
군만두의 IT 개발 일지
[스터디11] 1. 컴퓨터 구조 본문
목차
CHAPTER 02 컴퓨터 구조
1. 컴퓨터 구조의 큰 그림
컴퓨터는 프로그래밍 언어를 직접 이해하지 못함. 컴퓨터가 이해할 수 있는 정보는 데이터와 명령어임. 소스 코드는 내부적으로 컴퓨터가 이해할 수 있는 데이터와 명령어의 형태로 변환된 뒤에 실행됨.
- 컴퓨터의 명령어 역시 수행할 동작과 수행할 대상으로 이루어져 있음.
- 데이터는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 의미함.
- 데이터는 있는 그대로의 정보이고, 명령어는 이 데이터를 활용하는 정보라는 것을 알 수 있음. 즉, 데이터는 명령어에 종속적인 정보이며, 명령의 대상이자, 명령어의 재료라고 할 수 있음.
컴퓨터를 작동시키는 컴퓨터의 핵심 부품은 CPU(중앙처리장치), 메모리(주기억장치), 캐시 메모리, 보조기억장치, 입출력장치임.
- CPU(Central Processing Unit): 데이터와 명령어를 읽어 들이고, 해석하고, 실행하는 부품. CPU의 내부에는 산술논리연산장치(ALU), 제어장치(CU), 그리고 여러 레지스터들이 있음.
- 산술논리연산장치(ALU): 사칙 연산, 논리 연산과 같은 연산을 수행하는 계산기.
- 제어장치(CU): 명령어를 해석해 다른 부품들을 작동시키기 위한 제어 신호를 보냄.
- 레지스터(register): CPU 내부의 작은 임시 저장장치.
- 메모리와 캐시 메모리
- 메모리(주기억장치, RAM): 현재 실행 중인 프로그램을 구성하는 데이터와 명령어를 저장하는 부품. 주소라는 개념을 통해 데이터에 접근하며, 전원이 꺼지면 내용이 사라지는 휘발성 저장장치.
- 캐시 메모리(Cache Memory): CPU가 메모리에 더 빨리 접근하기 위해 사용하는 저장장치로, CPU와 메모리 사이에 위치함.
- 보조기억장치: 전원이 꺼져도 저장된 정보가 사라지지 않는 비휘발성 저장장치 (예: 하드 디스크, SSD). 보관할 프로그램을 저장하며, 프로그램을 실행하려면 보조기억장치의 내용이 메모리로 복사되어야 함.
- 입출력장치: 컴퓨터 외부와 정보를 교환하는 장치 (예: 마우스, 키보드, 모니터, 프린터).
2. 컴퓨터가 이해하는 정보
- 비트(bit): 0과 1을 나타내는 가장 작은 정보 단위. 비트보다 큰 단위로는 바이트(byte, 8비트), 킬로바이트(kB), 메가바이트(MB) 등이 사용됨.
- 워드(word): CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미합니다.
명령어는 연산 코드(Opcode)와 오퍼랜드(Operand)로 구성됨.
- 연산 코드: 수행할 동작을 나타냄 (예: 더하기, 저장하기).
- 오퍼랜드: 동작에 사용될 데이터 또는 데이터의 위치(주소)를 나타냄.
기계어와 어셈블리어
- 기계어: CPU가 직접 이해하는 0과 1로 이루어진 언어입니다.
- 어셈블리어: 기계어를 사람이 읽기 편한 형태로 번역한 저수준 언어입니다. CPU 종류에 따라 다릅니다.
명령어 사이클
- 인출 사이클(Fetch Cycle): 메모리에서 명령어를 가져옴.
- 실행 사이클(Execution Cycle): 가져온 명령어를 실행함.
- 간접 사이클(Indirect Cycle): 오퍼랜드가 주소인 경우, 실제 데이터에 접근하기 위해 메모리를 한 번 더 참조하는 단계.
- 인터럽트 사이클(Interrupt Cycle): 인터럽트 발생 시 처리하는 단계.
3. CPU
레지스터: CPU 내의 작은 임시 저장장치로, 다양한 종류와 역할이 있음.
- 프로그램 카운터(PC): 다음에 실행할 명령어의 주소를 저장함.
- 명령어 레지스터(IR): 현재 해석할 명령어를 저장함.
- 범용 레지스터: 데이터, 주소 등 다용도로 사용됨.
- 플래그 레지스터: 연산 결과나 CPU 상태에 대한 부가 정보(플래그)를 저장함.
- 스택 포인터: 메모리의 스택 영역 최상단을 가리킴.
인터럽트: CPU의 정상적인 작업을 방해하는 신호.
- 동기 인터럽트 (예외): CPU 내부에서 발생하는 인터럽트 (예: 프로그래밍 오류).
- 비동기 인터럽트 (하드웨어 인터럽트): 입출력장치 등 외부 요인에 의해 발생함. 입출력 작업 완료 알림 등에 사용되어 CPU 효율을 높임.
인터럽트 처리 과정
- 입출력장치가 인터럽트 요청 신호를 보냄.
- CPU는 인터럽트 플래그를 확인하여 수용 여부를 결정함.
- 현재 작업을 백업함.
- 인터럽트 벡터를 참조하여 해당 인터럽트 서비스 루틴(ISR)을 실행함.
- ISR 실행 후, 백업된 작업을 복구하여 재개함.
CPU 성능 향상을 위한 설계
- 클럭 속도: CPU가 동작하는 시간 단위로, 빠를수록 성능이 좋지만 발열 문제가 있음.
- 멀티코어: 하나의 CPU 안에 여러 개의 코어(명령어 처리 부품)를 포함하는 기술.
- 멀티스레드
- 하드웨어 스레드: 하나의 코어가 동시에 처리하는 명령어 단위.
- 소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위.
- 동시성 vs 병렬성
- 병렬성: 여러 작업을 물리적으로 동시에 처리하는 것 (멀티코어).
- 동시성: 여러 작업을 번갈아 가며 빠르게 처리하여 동시에 처리되는 것처럼 보이게 하는 것 (싱글코어의 멀티태스킹).
- 명령어 파이프라이닝: 명령어 처리 과정을 여러 단계로 나누어 각 단계를 동시에 실행하여 성능을 높이는 기법. 파이프라인 위험(데이터, 제어, 구조적 위험)으로 인해 성능 저하가 발생할 수 있음.
- CISC vs RISC
- CISC: 복잡하고 다양한 기능을 가진 명령어 집합. 명령어 길이가 가변적이라 파이프라이닝에 불리함.
- RISC: 단순하고 규격화된 명령어 집합. 파이프라이닝에 유리함.
4. 메모리
RAM: 실행 중인 프로그램을 저장하는 휘발성 저장장치
RAM의 종류
- DRAM(Dynamic RAM): 데이터가 시간이 지나면 사라져 주기적인 재활성화가 필요함. 저렴하고 집적도가 높아 메인 메모리로 널리 쓰임.
- SRAM(Static RAM): 전원이 공급되는 동안 데이터가 유지됨. 빠르고 비싸서 캐시 메모리에 주로 사용됨.
- SDRAM(Synchronous DRAM): 클럭 신호에 동기화되어 작동하는 DRAM.
- DDR SDRAM(Double Data Rate SDRAM): 한 클럭에 두 번 데이터를 전송하여 속도를 높인 SDRAM. (DDR, DDR2, DDR3, DDR4 등)
엔디안(Endianness): 여러 바이트로 구성된 데이터를 메모리에 저장하는 순서.
- 빅 엔디안: 상위 바이트부터 낮은 주소에 저장함. (사람이 읽는 순서와 동일)
- 리틀 엔디안: 하위 바이트부터 낮은 주소에 저장함. (수치 계산에 유리)
캐시 메모리: CPU와 메모리 사이의 속도 차이를 줄이기 위한 고속 저장장치.
- L1, L2, L3 캐시: L1이 가장 빠르고 용량이 작으며 CPU 코어에 가장 가까움.
- 캐시 히트(Cache Hit): CPU가 찾는 데이터가 캐시에 있는 경우.
- 캐시 미스(Cache Miss): CPU가 찾는 데이터가 캐시에 없는 경우.
- 참조 지역성의 원리: 캐시 적중률을 높이기 위한 원리로, 시간 지역성(최근 접근한 데이터에 다시 접근)과 공간 지역성(접근한 데이터 주변에 접근)이 있음.
- 캐시 쓰기 정책
- 즉시 쓰기(Write-through): 캐시와 메모리에 동시에 씀. (일관성 유지, 속도 저하)
- 지연 쓰기(Write-back): 캐시에만 쓰고 나중에 메모리에 반영함. (속도 빠름, 일관성 문제 발생 가능)
5. 보조기억장치와 입출력장치
RAID(Redundant Array of Independent Disks): 여러 개의 보조기억장치를 하나처럼 사용하여 데이터의 안전성이나 성능을 높이는 기술.
- RAID 0(스트라이핑): 데이터를 여러 디스크에 분산 저장하여 속도를 높이지만, 안정성은 낮음.
- RAID 1(미러링): 데이터를 여러 디스크에 복제 저장하여 안정성을 높이지만, 용량 효율은 낮음.
- RAID 4, 5, 6: 패리티 정보를 사용하여 데이터 오류를 검출하고 복구함. RAID 5와 6은 패리티를 분산 저장하여 병목 현상을 줄임.
입출력 기법
- 장치 컨트롤러: CPU와 입출력장치 사이의 통신을 중개하는 하드웨어.
- 장치 드라이버: 장치 컨트롤러를 작동시키는 소프트웨어(프로그램).
- 프로그램 입출력(PIO): CPU가 입출력 명령어를 직접 실행하여 입출력을 수행함.
- 인터럽트 기반 입출력: 입출력장치가 작업 완료 시 CPU에 인터럽트를 보내 알려주는 방식.
- DMA(Direct Memory Access): DMA 컨트롤러가 CPU 대신 메모리와 입출력장치 간의 데이터 전송을 담당하여 CPU의 부담을 줄여줌.
GPU(Graphic Processing Unit): 수많은 코어를 활용하여 대량의 그래픽 연산이나 병렬 처리에 특화된 장치. 단순 연산을 병렬적으로 빠르게 처리하는 데 사용됨.
기술 면접 질문
- CPU와 GPU의 차이점에 대해 설명해주세요.
- 캐시 미스가 발생하면 어떤 일이 일어나며, 왜 성능에 좋지 않은가요?
- RAM과 하드 디스크의 차이점에 대해 설명해주세요.
- 병렬성과 동시성의 차이점에 대해 설명해주세요.
이 글은 『 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접』 책을 읽고 학습한 내용을 정리한 것입니다.
'학습일지 > CS' 카테고리의 다른 글
| [스터디11] 2. 운영체제 (5) | 2025.08.07 |
|---|---|
| 3. 외부 서비스 연동 안정성: 타임아웃, 재시도, 서킷 브레이커 (2) | 2025.08.06 |
| 2. 단일 vs 복합 vs 커버링 인덱스, 언제 어떻게 써야 할까? (3) | 2025.07.27 |
| 1. 캐시와 CDN이란? (0) | 2025.07.05 |
| [스터디3] 디자인 패턴 - 09. 디자인 패턴과 프로그래밍 패러다임 (0) | 2025.01.18 |
Comments
