컴퓨터는 각자 다른 기능을 수행하는 여러 부품들의 도움으로 작동한다.
CPU는 컴퓨터의 작동에 핵심이 되는 연산을 처리하고, 저장장치는 데이터를 저장한다.
이 외에도 GPU는 그래픽 데이터를, 랜카드는 네트워크 통신을, 사운드 카드는 소리 데이터를 처리하는 것에 특화되어 있다. 각 부품들은 특징이 뚜렷하여 컴퓨터에서 고유의 기능을 수행한다.
이처럼 서로 다른 부품들이 모여서 ‘컴퓨터’라는 하나의 기계로서 작동할 수 있는 것은 컴퓨터에 대한 기본 설계가 존재하기 때문이다.
이 설계에 맞춰서 여러 하드웨어가 개발되고, 이들을 조립해서 컴퓨터가 완성된다. 컴퓨터 과학에서는 이러한 설계를 ‘컴퓨터 구조(Computer Architecture)’라고 부른다.
전체적인 컴퓨터 구조 중에서 특히 CPU가 사용하는 명령어와 관련된 설계를 **명령어 집합구조(Instruction Set Architecture, ISA)**라고 하는데, 가장 널리 사용되는 ISA 중 하나가 x86-64 아키텍처이다.
**컴퓨터 구조(Computer Architecture)**란 CPU, 메모리, 입출력 장치와 같은 하드웨어 구성 요소가 어떻게 설계되고 상호작용하는지를 연구하는 학문이다. 즉, 프로그램이 실제로 어떤 과정을 거쳐 기계 수준에서 실행되는지에 대한 큰 그림을 다루는 분야이다.
컴퓨터 구조는 컴퓨터의 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 그리고 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함된다.
‘컴퓨터의 기능 구조에 대한 설계’란 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야이다. 대표적으로 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조가 있다.
CPU의 명령어에 대한 설계는 **명령어 집합구조(Instruction Set Architecture, ISA)**라고 불리며, CPU가 이해하고 실행할 수 있는 명령어 집합과 해당 명령어들의 동작 방식을 정의한 규약을 말한다. 대표적으로 ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등이 있다.
CPU의 하드웨어적 설계는 **마이크로 아키텍처(Micro Architecture)**라고 불리며, CPU가 명령어 집합 구조(ISA)를 어떻게 효율적으로 구현하고 실행할지 CPU의 회로를 설계하는 분야이다. 여기서는 명령어를 순서대로 병렬로 처리하는 파이프라인(Pipeline), 자주 사용하는 데이터를 임시로 보관해두는 캐시(Cache) 등 성능과 전력 소모에 영향을 미치는 부분을 다룬다.
→ ‘컴퓨터 구조’가 포함하는 분야란 다음과 같다.
| 컴퓨터 구조의 세부 분야 |
|---|
| • 컴퓨터 구조 종류 |
◦ 폰 노이만 구조
◦ 하버드 구조
◦ 수정된 하버드 구조
• 명령어 집합구조(ISA) ◦ x86, x86-64 ◦ ARM ◦ MIPS ◦ AVR
• 마이크로 아키텍처 ◦ 캐시 설계 ◦ 파이프라이닝 ◦ 슈퍼 스칼라 ◦ 분기 예측 ◦ 비순차적 명령어 처리
• 메모리 계층 구조 ◦ 캐시 메모리 ◦ 가상 메모리 ◦ DRAM, SRAM 구조
• 입출력 및 버스 구조 ◦ I/O 인터페이스 ◦ DMA (Direct Memory Access) ◦ PCle, USB, SATA 등의 버스 구조
• 병렬 및 고성능 컴퓨팅 ◦ 멀티코어 아키텍처 ◦ SMT (동시 멀티스레딩) |
초기 컴퓨터 과학자 중 한 명인 폰 노이만(Von Neumann)은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했다. 근대의 컴퓨터는 연산과 제어를 위해 중앙처리장치(Central Processing Unit, CPU)를, 저장을 위해 기억장치(Memory)를 사용한다. 그리고 장치간에 데이터나 제어 신호를 교환할 수 있도록 버스(Bus)라는 전자 통로를 사용한다.