OS Computer Architecture
컴퓨터 구조는 크게 ISA(Instruction Set Architecture)와 Machine Organization으로 구분하여 살펴볼 수 있습니다.
ISA는 컴퓨터가 이해하고 실행할 수 있는 명령어와 데이터를 어떻게 정의하고 처리하는지 다루며,
Machine Organization은 이를 실제로 구현하는 하드웨어적 구성 요소와 동작 방식을 다룹니다.
ISA (Instruction Set Architecture)
데이터 표현
비트(bit)는 컴퓨터가 이해할 수 있는 가장 작은 정보 단위입니다(0 또는 1).
바이트(byte)는 8비트로 구성된 단위이며, 문자를 저장하거나 기본적인 데이터 단위로 사용됩니다.
워드(word)는 CPU가 한 번에 처리할 수 있는 데이터 단위로, CPU의 설계에 따라 32비트, 64비트 등이 될 수 있습니다.
숫자는 일반적으로 2진법으로 표현되고, 실수는 부동 소수점(지수와 가수) 방식을 사용합니다.
문자 인코딩 방식으로는 ASCII가 가장 기본적인 형태이며, 전 세계의 다양한 문자를 표현하기 위해 유니코드(UTF-8, UTF-16, UTF-32 등)이 사용됩니다.
명령어 구성
Opcode는 어떤 연산을 수행할지를 나타내며,
Operand는 그 연산에 필요한 데이터 혹은 메모리 주소 등을 지정합니다.
명령어는 크게 데이터 전송, 산술/논리 연산, 제어 흐름 변경(분기, 점프), 그리고 입출력 제어 등으로 구분합니다.
명령어 사이클
CPU가 명령어를 처리할 때 거치는 과정을 명령어 사이클이라고 합니다.
- Fetch Cycle: 메모리에서 명령어를 가져옵니다.
- Execution Cycle: 명령어를 해석하고 실행합니다.
- Indirect Cycle: 명령어가 간접 주소를 사용하는 경우, 추가로 메모리에 접근하여 실제 데이터를 가져옵니다.
- Interrupt Cycle: 인터럽트가 발생하면 해당 처리를 위해 현재 작업을 저장하고 인터럽트 루틴으로 이동합니다.
Machine Organization
CPU
CPU(Central Processing Unit)는 연산을 실제로 수행하는 컴퓨터의 핵심 부품입니다.
레지스터
CPU 내부에는 연산 속도를 높이기 위해 여러 레지스터가 존재합니다.
- Program Counter(PC): 다음 명령어의 주소를 담습니다.
- Instruction Register(IR): 현재 실행 중인 명령어를 보관합니다.
- General Purpose Register(GPR): 산술/논리 연산 등에 사용되는 범용 레지스터입니다.
- Flag Register: 연산 결과의 상태(음수, 0, 오버플로 등)를 저장합니다.
- Stack Pointer(SP): 스택 최상부 주소를 가리키는 레지스터입니다.
인터럽트
인터럽트(Interrupt)는 예기치 않은 사건(오류, 하드웨어 신호, 사용자 입력 등)이 발생했을 때 CPU가 이를 처리하도록 하는 기법입니다.
- Synchronous Interrupt: 프로그램 실행 중 오류나 예외가 발생했을 때 즉시 처리합니다.
- Asynchronous Interrupt: 외부 장치 또는 사용자 입력에 의해 비동기로 발생합니다.
- Maskable Interrupt: 필요할 경우 CPU나 운영체제가 무시할 수 있는 인터럽트입니다.
- Non-Maskable Interrupt(NMI): 무시가 불가능한 중요한 인터럽트입니다.
CPU 성능 향상
CPU 클럭 속도가 높을수록 더 많은 연산을 빠르게 처리할 수 있습니다. 멀티코어와 멀티스레드는 여러 코어 또는 하드웨어 스레드를 동시에 사용해 병렬 처리 능력을 높입니다.
파이프라이닝(Pipelining)은 명령어 인출, 해석, 실행 등의 단계를 중첩해 처리하여 처리량을 늘립니다. CPU 설계 철학으로는 복잡한 명령어 세트 기반의 CISC와 간단한 명령어 세트 기반의 RISC가 대표적입니다.
메모리와 캐시
주기억장치인 RAM은 일반적으로 DRAM(Dynamic RAM)을 사용하며, 데이터 접근 속도가 빠르지만 비용이 높은 SRAM(Static RAM)은 주로 캐시 메모리에 사용됩니다.
SDRAM, DDR SDRAM 등은 시스템 버스 클럭과 동기화되어 데이터를 효율적으로 전송하며, 멀티바이트를 저장하는 순서 방식에는 빅 엔디안과 리틀 엔디안이 있습니다.
캐시 메모리는 CPU와 메인 메모리 사이에 위치하여 데이터를 빠르게 공급하기 위한 메모리 계층입니다.
- L1, L2 캐시: CPU 내부(또는 가까운 곳)에 위치하여 빠른 접근 속도를 제공합니다.
- 캐시 히트(Cache Hit): 필요한 데이터가 캐시에 이미 존재하는 경우
- 캐시 미스(Cache Miss): 필요한 데이터가 캐시에 없어 메모리에서 가져와야 하는 경우
- 참조 지역성(Locality): 프로그램 접근 패턴에 시간/공간적으로 밀집되는 특성이 있어 캐시 효율을 높여줍니다.
보조기억장치
보조기억장치는 대용량 데이터를 영구적으로 저장하기 위해 사용됩니다.
RAID(Redundant Array of Independent Disks)는 여러 디스크를 병렬로 운용해 성능과 안정성을 향상시키는 기술입니다.
- RAID0: 스트라이핑(Striping)으로 성능 향상, 장애 발생 시 복구 불가
- RAID1: 미러링(Mirroring)으로 데이터 복제, 장애 복구 가능
- RAID4: 전용 패리티 디스크에 오류 정정 정보를 저장
- RAID5: 패리티 정보를 분산 저장하여 성능과 안정성을 균형 있게 제공
- RAID6: 이중 패리티로 더 높은 오류 복구 능력 보장
입출력 장치
장치 컨트롤러와 장치 드라이버는 하드웨어와 운영체제를 연결해주는 역할을 합니다. 인터럽트 기반 입출력은 여러 입출력 이벤트를 효율적으로 처리하기 위해 다중 인터럽트를 지원할 수 있습니다.
DMA(Direct Memory Access)는 CPU를 거치지 않고 메모리에 직접 접근해 데이터를 전송하는 방식으로,
이 과정에서 사이클 스틸링(Cycle Stealing) 기법을 통해 전송 시 CPU 클럭 사이클 일부를 사용합니다.
맺음말
ISA와 Machine Organization을 중심으로 컴퓨터 구조를 살펴보며, 핵심 키워드들을 정의하고 관련 개념을 정리했습니다. 컴퓨터가 데이터를 어떻게 표현하고, 명령어를 어떻게 처리하며, 이를 실제로 구현하는 하드웨어가 어떻게 구성되는지 알아보았습니다.
위 글이 도움이 되었기를 바랍니다.