군만두의 IT 개발 일지

[스터디11] 1. 컴퓨터 구조 본문

학습일지/CS

[스터디11] 1. 컴퓨터 구조

mandus 2025. 8. 1. 23:39

목차

    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 종류에 따라 다릅니다.

    명령어 사이클

    1. 인출 사이클(Fetch Cycle): 메모리에서 명령어를 가져옴.
    2. 실행 사이클(Execution Cycle): 가져온 명령어를 실행함.
    3. 간접 사이클(Indirect Cycle): 오퍼랜드가 주소인 경우, 실제 데이터에 접근하기 위해 메모리를 한 번 더 참조하는 단계.
    4. 인터럽트 사이클(Interrupt Cycle): 인터럽트 발생 시 처리하는 단계.

    3. CPU

    레지스터: CPU 내의 작은 임시 저장장치로, 다양한 종류와 역할이 있음.

    • 프로그램 카운터(PC): 다음에 실행할 명령어의 주소를 저장함.
    • 명령어 레지스터(IR): 현재 해석할 명령어를 저장함.
    • 범용 레지스터: 데이터, 주소 등 다용도로 사용됨.
    • 플래그 레지스터: 연산 결과나 CPU 상태에 대한 부가 정보(플래그)를 저장함.
    • 스택 포인터: 메모리의 스택 영역 최상단을 가리킴.

    인터럽트: CPU의 정상적인 작업을 방해하는 신호.

    • 동기 인터럽트 (예외): CPU 내부에서 발생하는 인터럽트 (예: 프로그래밍 오류).
    • 비동기 인터럽트 (하드웨어 인터럽트): 입출력장치 등 외부 요인에 의해 발생함. 입출력 작업 완료 알림 등에 사용되어 CPU 효율을 높임.

    인터럽트 처리 과정

    1. 입출력장치가 인터럽트 요청 신호를 보냄.
    2. CPU는 인터럽트 플래그를 확인하여 수용 여부를 결정함.
    3. 현재 작업을 백업함.
    4. 인터럽트 벡터를 참조하여 해당 인터럽트 서비스 루틴(ISR)을 실행함.
    5. 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 기술 면접』 책을 읽고 학습한 내용을 정리한 것입니다.
    Comments