지털 정보의 표현과 컴퓨터 연산 하드웨어 심화

SIMWOOHYUN·2025년 6월 11일
post-thumbnail

디지털 정보의 표현과 컴퓨터 연산 하드웨어 심화

1. 디지털 정보의 표현

1.1 이진수로 표현한 정수

컴퓨터는 모든 정수를 0과 1 두 개의 기호만으로 표현합니다.

  • 고정 비트 너비: 예컨대 32비트 정수는 32개의 비트(비트열)로 구성되죠.
  • 부호 없는(unsigned) 정수
    • 범위: 0 … 2ⁿ–1 (n은 비트 수)
    • 예: 8비트 → 0 … 255
  • 부호 있는(signed) 정수
    • 2의 보수 표현을 사용해 덧셈·뺄셈 하드웨어를 단순화합니다.
    • 8비트 예시
      • 0000 0101 = +5
      • 1111 1011 = –5 (5의 비트 반전 1111 1010 + 1)
    • 표현 범위: –2ⁿ⁻¹ … +2ⁿ⁻¹–1
  • 오버플로우(Overflow)
    • 부호 없는 정수 덧셈 시 결과가 2ⁿ–1를 넘으면 최하위 n비트만 남고 버려집니다.
    • 부호 있는 정수 연산 시 결과가 범위를 벗어나면 잘못된 부호 비트가 생성됩니다.

1.2 이진수로 표현한 실수

실수(소수점 수)를 컴퓨터에 저장하려면 부동소수점(Floating-Point) 방식을 씁니다.

  • IEEE 754 표준
    • 단정밀도(32비트)
      • 1비트 부호(sign), 8비트 지수(exponent), 23비트 가수(mantissa)
      • 지수 bias = 127
    • 배정밀도(64비트)
      • 1비트 부호, 11비트 지수, 52비트 가수
      • 지수 bias = 1023
  • 값 계산 과정
    1. 정규화(Normalization): 가수가 1.xxx 형태가 되도록 조정
    2. 지수 저장: 실제 지수 + bias → 비트 패턴
    3. 가수 저장: 소수점 아래 부분만 저장
  • 특수 값
    • 지수 모두 0, 가수 0 → ±0
    • 지수 모두 1, 가수 0 → ±∞
    • 지수 모두 1, 가수 ≠0 → NaN (Not a Number)
  • 오차와 유효 자릿수
    • 머신 엡실론(εₘ): 단정밀도 약 1.19e–7, 배정밀도 약 2.22e–16
    • 반복 연산 시 반올림 오차가 누적될 수 있으니 주의해야 합니다.

2. 컴퓨터 연산 하드웨어

2.1 튜링 기계 (Turing Machine)

앨런 튜링이 1936년에 정의한 추상 계산 모델로, 이론적 컴퓨팅의 기초가 됩니다.

  1. 무한 테이프(Tape)
    • 무한히 연장된 셀(cell)들의 일렬
    • 각 셀에는 심볼(예: 0, 1, blank)이 저장됨
  2. 헤드(Head)
    • 테이프 위를 왼쪽/오른쪽으로 한 칸씩 이동
    • 현재 셀의 심볼을 읽고, 쓰고, 기계 상태 전이
  3. 상태 집합(States)
    • 유한 개의 상태 q₀, q₁, …, qᵣ
    • q₀는 시작 상태, 일부는 정지 상태(accept/reject)
  4. 전이 함수(δ)
    [
    δ: (qi,\,s_j) \;\to\; (q_k,\,sℓ,\,{\text{L,R}})
    ]
    • (현재 상태, 읽은 심볼) → (다음 상태, 쓸 심볼, 이동 방향)
  5. 계산 과정
    1. 시작 상태 q₀, 테이프에 입력 기호열
    2. 헤드가 심볼을 읽고 전이 함수 δ 적용
    3. 쓰기·이동·상태 전이를 반복
    4. 정지 상태에 도달하면 계산 종료

튜링 기계는 모든 “계산 가능한(computable)” 문제를 모델링할 수 있어, 튜링 완전성(Turing completeness)의 기준이 됩니다.

2.2 폰 노이만 컴퓨터 (Von Neumann Architecture)

현대 컴퓨터 하드웨어의 표준 설계로, 프로그램 저장 및 실행 구조를 규정합니다.

  1. 중앙 처리 장치(CPU)
    • 산술 논리 장치(ALU): 덧셈·논리 연산 수행
    • 제어 장치(Control Unit): 메모리에서 명령어 인출(fetch), 해석(decode), 실행(execute)
  2. 메모리(Memory)
    • 프로그램 코드와 데이터를 동일한 메모리에 저장
    • 주소(address)로 접근
  3. 입출력 장치(I/O Devices)
    • 키보드·마우스·디스크 등과 인터페이스
  4. 버스 구조(Bus)
    • 데이터 버스: CPU ↔ 메모리·I/O 간 데이터 전송
    • 주소 버스: 어느 주소에 접근할지 지정
    • 제어 버스: 읽기/쓰기 신호, 인터럽트 등 제어 신호
  5. 명령어 실행 단계 (Fetch–Decode–Execute Cycle)
    1. Fetch: PC(Program Counter)가 가리키는 메모리 주소에서 명령어 인출
    2. Decode: 명령어를 해독하여 제어 신호 생성
    3. Execute: ALU 연산 또는 메모리·I/O 접근 수행
    4. PC 갱신: 다음 명령어 주소 계산

폰 노이만 병목(von Neumann bottleneck)은 CPU와 메모리 간 버스 대역폭 한계로, 병렬·캐싱·파이프라이닝 등의 기법으로 극복하려 합니다.


위 내용을 복사해서 마크다운 에디터에 붙여 넣으면, 컴퓨터 과학 전공 4학년 수준의 심화 정리를 바로 활용할 수 있습니다.

0개의 댓글