본문 바로가기

[CHAPTER - 02] 컴퓨터 구조 - 1

@bum0w02025. 11. 10. 20:35

1. 컴퓨터의 구조

컴퓨터는 자바, 파이썬 같은 고급 프로그래밍 언어를 직접 이해하지 못한다. 컴퓨터가 이해할 수 있는 정보는 데이터와 명령어이며 이것은 0과1로 이루어진 기계어이다. (고급 언어 코드를 기계어로 번역하는 과정이 필요한데 이것을 컴파일이라고 함)

 

컴파일 과정

소스코드 → 렉서 → 파서 → 중간코드 생성기 → 옵티마이저 → 코드 생성기 → 오브젝트 파일

  • CPU : 컴퓨터는 데이터와 명령어를 이해할 수 있는데, 이런 정보를 해석하고 실행하는 부품을 CPU(중앙처리장치)라고 한다. CPU는 다른 말로 프로세서라고도 부르는데 프로세스와는 다른 개념
  • ALU (산술논리연산장치) : 산술, 논리 연산을 수행하며 회로로 구성되는 핵심 장치Register(레지스터) : CPU 내부에서 사용되는 임시 저장장치. 내부에 있는 만큼 CPU가 가장 빠르게 접근할 수 있는 메모리이며 성능(속도)도 빠르다. 주로 현재 계산을 수행중인 값을 저장하는 역할을 한다.
  • CU (제어장치) : 명령어를 해석하여 제어 신호를 내보내는 장치. 이 신호로 부픔을 작동시킨다. (Ex. CPU가 스피커로 제어 신호를 보내 작동시키는 상황)

 

  • CPU(프로세서) 작동 방식
    1. 프로세서가 메모리 공간에 액세스하여 작업을 수행한다. 데이터와 명령어가 로드됨
    2. 데이터와 명령어는 L2 캐시로 이동하여 L1 명령어캐시와 L1 데이터캐시로 나뉜다. (a+b에서 a와 b가 데이터고 +가 명령어가 된다.)
    3. 명령어 페치기/해석기가 명령어를 로드하고 해석한 후 실행처리기로 전달.
    4. ALU에서 연산수행 이 때 필요한 데이터는 레지스터에 저장되어 있다.

  • 메모리 : CPU가 해석하고 실행하는 모든 정보가 저장되어 있는 장치. 보통 메인 메모리라고 하면 RAM을 가리킨다. 메모리 속 모든 정보는 주소(address)를 가지고 정돈되어 있다.
    • 메모리 있는데 캐시 메모리가 왜 있어야됨? ⇒ 자주 사용하는 데이터를 임시 저장하거나 다단계 캐시를 두어 균형을 맞추고 성능 최적화를 할 수 있다.
  • 캐시 메모리 : CPU와 메모리가 데이터를 주고 받을 때 사이에서 접근을 보조하는 저장 장치. CPU 내부에 위치하기도 하고 밖에 있을 수도 있다. 종류가 여러가지 (L1캐시, L2캐시 등)
    • 컴퓨터가 수행하는 작업이 요리라면 메인 메모리는 냉장고, 캐시 메모리는 도마, 레지스터는 냄비에 비유하면 이해가 쉬움
  • 데이터 지역성 : 위에서 자주 사용되는 데이터를 캐시 메모리에 저장하고 꺼내 쓰면서 성능 최적화를 한다고 했는데, 자주 사용되는 데이터라는건 무엇일까? 두 가지 경우가 있다.
  • 시간적 지역성을 가진 경우와 공간적 지역성을 가진 경우인데, 시간적 지역성은 짧은 시간 내에 같은 데이터에 다시 접근할 가능성이 높다는 것이고 공간적 지역성은 방금 접근한 데이터에서 인접한 데이터에 접근할 가능성이 높다는 것이다. 반복문이나 배열을 생각하며 데이터 접근을 떠올리면 이해가 쉽다.
  • 보조기억장치 : 반영구적인 비휘발성 저장 장치. 메인 메모리 RAM에 비해 데이터 접근 속도가 느리지만 용량이 커서 파일 저장 같은 장기 데이터 저장에 사용 (HDD, SSD, USB 등등)
  • 메인보드 : 여러 하드웨어 구성 요소(프로세서, 메인 메모리 등)를 꽂을 수 있는 슬롯을 내장한 PCB
  • 버스 : 컴퓨터 부품들이 정보를 주고받는 통로 (데이터, 명령어, 제어 신호를 전달)

 

2. 컴퓨터가 이해하는 정보

  • 연산코드(opcode) : 명령어가 수행할 동작
  • 오퍼랜드(operand) : 동작에 사용될 데이터 혹은 데이터가 저장된 위치 (피연산자)
  • add 명령어의 경우는 산술연산을 수행하기에 동작에 사용될 데이터(실제 값)가 대상이 되지만 sw 명령어의 경우는 값을 어떤 위치에 저장해야하기 때문에 위치가 대상이된다.
    • 연산코드 종류

 

 

  • 기계어 : CPU가 이해할 수 있는 0과 1로 표현된 정보를 표현하는 언어
  • 어셈블리어 : 0과 1로 표현된 기계어를 읽기 편한 형태로 단순 번역한 언어 (Ex. add, sub, lw, sw)
  • CISC 기반 CPU : 연산에 처리되는 복잡한 명령어들을 다수 탑재하고 있는 프로세서
    RISC 기반 CPU : 사용빈도가 높은 명령어만을 탑재하여 처리속도를 향상시킨 프로세서
  • 명령어 사이클 : CPU가 명령어를 처리하는 과정에서 프로그램 속 명령어들은 일정한 주기를 반복하며 실행되는데, 이 주기를 말함
    1. 인출 사이클 : 메모리에 있는 명령어를 CPU로 가져오는 단계
    2. 실행 사이클 : CPU로 가져온 명령어를 실행하는 단계
    3. 간접 사이클 : CPU가 명령어를 인출했더라도 한번 더 메모리에 접근해야 하는 단계
    4. 인터럽트 사이클 : CPU에게 현재 작업을 잠시 멈추고 다른 작업을 처리하도록 요청하는 단계

 

3. CPU

  • 프로그램 카운터(PC) : 메모리에서 다음으로 읽어 들일 명령어의 주소를 저장
  • 스택 포인터 : 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가리키는 특별한 레지스터
  • 인터럽트 : CPU의 작업을 방해하는 신호로 이벤트가 발생했을 때 프로세서가 실행 중인 프로그램의 작업을 중단시키고 다른 프로그램을 수행할 수 있게 한다.
  • 동기적 인터럽트 : Trap이라고도 부르며 소프트웨어적 예외가 발생했을 때 (프로그래밍 오류, 주변장치 조작)
  • 비동기적 인터럽트 : 입출력 장치에 의해 발생 (하드디스크 읽기 오류, 메모리 불량, 키보드 인터럽트 등)
일반적으로 인터럽트는 비동기 인터럽트를 말한다. 만약 인터럽트를 사용하지 않는다면 CPU는 프린터와 같은 입출력 장치의 작업 완료 여부를 계속 확인해야 한다. 이런식으로 계속 확인하는 기법은 폴링(polling)이라고 한다. 그러나 폴링 기법은 컴퓨터의 시스템 복잡도가 증가할수록 오버헤드가 증가한다.

 

  • 클럭(clock) : 컴퓨터 부품을 일사불란하게 움직일 수 있게 하는 시간 단위. 클럭 속도는 (hz) 단위로 측정되는데, 이는 클럭이 1초에 몇번 반복되는지 나타냄
  • 스레드 : 프로세서를 사용하는 기본 단위이며, 명령어를 독립적으로 실행할 수 있는 하나의 프로그램 제어 흐름
  • 하드웨어 스레드 : CPU에서 사용되는 용어로 하나의 코어가 동시에 처리하는 명령어의 단위
  • 병렬성 : 작업을 물리적으로 동시에 처리하는 것 (하드웨어 스레드가 4개인 CPU가 4개의 명령어를 동시에 실행 하는 경우)
  • 동시성 : 동시에 작업을 처리하는 것처럼 보이는 것 (CPU가 빠르게 프로세스를 번갈아가면서 처리하는 경우, 실제로는 그렇지 않지만 우리 눈에는 여러 작업이 동시에 처리되는 것처럼 보임)

'Computer Science' 카테고리의 다른 글

[CHAPTER - 04] 자료구조 - 1  (0) 2025.12.07
[CHAPTER - 03] 운영체제 - 2  (0) 2025.11.15
[CHAPTER - 03] 운영체제 - 1  (0) 2025.11.13
[CHAPTER - 02] 컴퓨터구조 - 2  (0) 2025.11.12
bum0w0
@bum0w0 :: bum0w0 님의 블로그

bum0w0 님의 블로그 입니다.

목차