디지털 정보의 표현과 컴퓨터 연산 하드웨어 심화
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
- 값 계산 과정
- 정규화(Normalization): 가수가 1.xxx 형태가 되도록 조정
- 지수 저장: 실제 지수 + bias → 비트 패턴
- 가수 저장: 소수점 아래 부분만 저장
- 특수 값
- 지수 모두 0, 가수 0 → ±0
- 지수 모두 1, 가수 0 → ±∞
- 지수 모두 1, 가수 ≠0 → NaN (Not a Number)
- 오차와 유효 자릿수
- 머신 엡실론(εₘ): 단정밀도 약 1.19e–7, 배정밀도 약 2.22e–16
- 반복 연산 시 반올림 오차가 누적될 수 있으니 주의해야 합니다.
2. 컴퓨터 연산 하드웨어
2.1 튜링 기계 (Turing Machine)
앨런 튜링이 1936년에 정의한 추상 계산 모델로, 이론적 컴퓨팅의 기초가 됩니다.
- 무한 테이프(Tape)
- 무한히 연장된 셀(cell)들의 일렬
- 각 셀에는 심볼(예: 0, 1, blank)이 저장됨
- 헤드(Head)
- 테이프 위를 왼쪽/오른쪽으로 한 칸씩 이동
- 현재 셀의 심볼을 읽고, 쓰고, 기계 상태 전이
- 상태 집합(States)
- 유한 개의 상태 q₀, q₁, …, qᵣ
- q₀는 시작 상태, 일부는 정지 상태(accept/reject)
- 전이 함수(δ)
[
δ: (qi,\,s_j) \;\to\; (q_k,\,sℓ,\,{\text{L,R}})
]
- (현재 상태, 읽은 심볼) → (다음 상태, 쓸 심볼, 이동 방향)
- 계산 과정
- 시작 상태 q₀, 테이프에 입력 기호열
- 헤드가 심볼을 읽고 전이 함수 δ 적용
- 쓰기·이동·상태 전이를 반복
- 정지 상태에 도달하면 계산 종료
튜링 기계는 모든 “계산 가능한(computable)” 문제를 모델링할 수 있어, 튜링 완전성(Turing completeness)의 기준이 됩니다.
2.2 폰 노이만 컴퓨터 (Von Neumann Architecture)
현대 컴퓨터 하드웨어의 표준 설계로, 프로그램 저장 및 실행 구조를 규정합니다.
- 중앙 처리 장치(CPU)
- 산술 논리 장치(ALU): 덧셈·논리 연산 수행
- 제어 장치(Control Unit): 메모리에서 명령어 인출(fetch), 해석(decode), 실행(execute)
- 메모리(Memory)
- 프로그램 코드와 데이터를 동일한 메모리에 저장
- 주소(address)로 접근
- 입출력 장치(I/O Devices)
- 버스 구조(Bus)
- 데이터 버스: CPU ↔ 메모리·I/O 간 데이터 전송
- 주소 버스: 어느 주소에 접근할지 지정
- 제어 버스: 읽기/쓰기 신호, 인터럽트 등 제어 신호
- 명령어 실행 단계 (Fetch–Decode–Execute Cycle)
- Fetch: PC(Program Counter)가 가리키는 메모리 주소에서 명령어 인출
- Decode: 명령어를 해독하여 제어 신호 생성
- Execute: ALU 연산 또는 메모리·I/O 접근 수행
- PC 갱신: 다음 명령어 주소 계산
폰 노이만 병목(von Neumann bottleneck)은 CPU와 메모리 간 버스 대역폭 한계로, 병렬·캐싱·파이프라이닝 등의 기법으로 극복하려 합니다.
위 내용을 복사해서 마크다운 에디터에 붙여 넣으면, 컴퓨터 과학 전공 4학년 수준의 심화 정리를 바로 활용할 수 있습니다.