컴퓨터 시스템의 구성 요소와 컴퓨터 아키텍처, 그리고 명령어 집합 구조와 종류별 특징은 무엇인지 알아보겠습니다.
컴퓨터 시스템의 구성 요소
컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 구분됩니다. 하드웨어는 컴퓨터의 기계적인 장치를 의미합니다. 소프트웨어는 하드웨어의 동작을 제어하고 지시하는 모든 종류의 프로그램을 의미합니다. 컴퓨터의 구조를 그림으로 살펴보겠습니다.
컴퓨터의 하드웨어에는 중앙처리장치와 기억장치, 입출력 장치가 있습니다. 입출력 장치에서 입력을 받으면 이를 처리하고 출력하는 구조입니다. 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 나뉩니다. 시스템 소프트웨어는 운영체제 등 하드웨어를 조작하는 것을 담당하고, 응용 소프트웨어는 그 위에서 작동하는 브라우저, 문서 편집기 등의 프로그램입니다.
컴퓨터 아키텍처(Computer Architecture)
컴퓨터 구조, 컴퓨터 아키텍처는 컴퓨터의 여러 구성 요소를 배치하는 방법입니다. 잘 알려진 구조를 살펴보겠습니다.
폰 노이만 구조와 하버드 구조입니다. 이 두 구조는 메모리의 배열에 차이가 있습니다. 폰 노이만 구조는 많이 사용되는 구조이지만 메모리에서 데이터와 명령어를 한 번에 처리하기에 하버드보다 느리다는 특징이 있습니다. 하버드 구조는 명령어와 데이터 메모리를 나누었기 때문에 이를 처리하기 위한 버스가 추가로 필요하다는 특징이 있습니다.
폰 노이만 구조
폰 노이만은 초기 컴퓨터 과학자 중 한 명입니다. 노이만은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했습니다.
연산과 제어를 담당하는 중앙처리장치(Central Processing Unit, CPU)
CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌입니다. 프로세스의 코드를 불러와 실행하고, 결과를 저장하는 모든 과정이 CPU에서 일어납니다.
동작 원리를 알고 싶다면 아래 글을 참고하면 좋습니다.
2023.03.13 - [Security/System] - [004] 컴퓨터의 메모리는 어떻게 동작할까? 컴퓨터 저장장치의 종류와 동작원리, 그리고 메모리
CPU는 아래 그림과 같이 산술논리장치와 제어장치, 레지스터로 구성됩니다.
산술/논리 연산을 처리하는 장치는 산술논리장치(Arithmetic Logic Unit, ALU)라고 부릅니다. CPU를 제어하는 장치는 제어장치(Control Unit)라고 부르며, CPU에 필요한 데이터를 저장하는 것을 레지스터(Register)라고 합니다.
컴퓨터가 동작하기 위한 데이터를 저장하는데 사용되는 기억장치
기억장치는 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용됩니다. 용도에 따라 주기억장치와 보조기억장치로 분류됩니다. 주기억장치는 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용됩니다. 대표적으로 램(Random-Access Memory, RAM)이 있습니다. 보조기억장치는 이와 반대로 운영체제나 프로그램 등의 데이터를 장기간 보관할 때 사용합니다. 대표적으로 하드 드라이브(Hard Disk Drive, HDD)와 SSD(Solid State Drive)가 있습니다.
자세한 사항은 마찬가지로 아래 글에서 확인할 수 있습니다.
2023.03.13 - [Security/System] - [004] 컴퓨터의 메모리는 어떻게 동작할까? 컴퓨터 저장장치의 종류와 동작원리, 그리고 메모리
기억장치가 있는데 레지스터를 사용하는 이유는 무엇일까요?
이는 바로 기억장치의 속도가 CPU 연산 속도보다 느려서 병목현상이 발생하기 때문입니다.
신호를 전송하는 통로, 버스(Bus)
버스는 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로를 말합니다. 대표적으로 다음과 표와 같습니다.
국문 | 영문 | 뜻 |
데이터 버스 | Data Bus | 데이터 이동 |
주소 버스 | Address Bus | 주소 지정 |
제어 버스 | Control Bus | 읽기/쓰기 제어 |
이 외에도 랜선이나 데이터 전송 소프트웨어, 프로토콜 등도 버스라고 불립니다.
용어
ALU(산술논리연산장치):
각종 산술/논리 연산을 수행하는 장치
레지스터:
CPU 안에서 빠르게 실행해야 하는 것을 저장하는 기억장치
CPU 내부 버스:
ALU와 레지스터 간 이동하는 데이터와 제어 신호(명령어)를 전달하는 역할
메모리:
주 기억 장치인 Main Memory와 보조 기억 장치인 Secondary Memory로 구분
명령어 집합 구조(Instruction Set Architecture, ISA)
명령어 집합구조(Instruction Set Architecture, ISA)는 CPU가 해석하는 명령어의 집합을 의미합니다. 프로그램은 기계어로 이루어져 있는데 프로그램을 실행하면 이 명령어들을 CPU가 읽고, 처리합니다.
CPU의 하드웨어적 설계는 마이크로 아키텍처(Micro Architecture)라 불리며, 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계하는 분야입니다.
ISA의 종류는 x86, AMD64(x86-64), ARM, MIPS, AVR 등이 있습니다. 다양한 ISA가 개발되고 사용되는 이유는 컴퓨터마다 필요한 연산 능력과 컴퓨팅 환경이 다르기 때문입니다. 여기서는 가장 흔하게 컴퓨터에서 사용되고 있는 AMD64(x86-64)를 기반으로 살펴볼 것입니다.
마이크로프로세서는 제어장치, 연산장치, 레지스터가 하나의 대규목 집적회로 (IC칩)에 내장된 것으로, 개인용 컴퓨터(PC)에서 중앙처리장치로 사용되고 있습니다. 설계 방식에 따라 RISC와 CISC로 구분됩니다. RISC 프로세서는 하버드(Harvard)에서 개발한 아키텍처로 하버드 구조를 사용하고, CISC 프로세서는 폰 노이만 구조로 구성됩니다.
- RISC(reduced instruction set computer): 명령어의 개수가 적어 처리 속도가 빠르다는 장점이 있습니다. 그러나 명령어의 개수가 적기 때문에 레지스터가 많고 프로그래밍이 복잡하다는 단점이 있습니다. 보통 스마트폰 또는 임베디드 기기에서 사용과 같이 전력 소모가 적고 처리 속도가 빨라야 하는 곳에 들어갑니다.
- CISC(complicated instruction set computer): 명령어의 개수가 많아 처리 속도가 느리다는 단점이 있습니다. 그러나 명령어의 개수가 많아 레지스터가 적고 프로그래밍이 RISC의 비해 쉽다는 장점이 있습니다. 보통 개인용 PC과 같이 고사양 작업을 필요로 하는 곳에 들어갑니다.
아래는 RISC와 CISC의 특징을 나타낸 표입니다.
구분 | RISC | CISC |
명령어 | 적음 | 많음 |
명령어의 길이 | 고정 | 가변 |
실행 사이클 | 단일 | 다중 |
주소 지정 | 간단 | 복잡 |
레지스터 | 많음 | 적음 |
전력 소모 | 적음 | 많음 |
처리 속도 | 빠름 | 느림 |
프로그래밍 | 복잡함 | 간단함 |
용도 | 서버, 워크스테이션 | 개인용 컴퓨터(PC) |
과거에는 이런 특징이 분명했지만 지금은 이를 나누는 기준이 불분명합니다. RISC가 프로그래밍이 복잡하다는 단점을 보완하기 위해 명령어를 만들기도 하고, CISC에서 전력소모가 많다는 단점을 보완하기 위해 명령어의 개수를 줄이기도 합니다. 따라서 너무 큰 의미를 두지는 않아도 됩니다.
아래의 표는 CISC와 RISC 명령어 집합을 가진 대표적인 CPU 아키텍처입니다.
CISC | AMD64 | x86 |
RISC | ARM | RISC-V |
AMD64
AMD64는 1999년 x86 구조를 유지하면서 64비트를 지원하도록 설계된 아키텍처입니다. 2003년 AMD가 개발하고 구현한 Athlon 64(애슬론 64) 프로세서에 채용되었습니다.
x86
Intel x86이 들어간 최초의 프로세서는 인텔 8086으로 1978년에 발표됐습니다. 이전 프로세서인 인텔 8080과 어셈블리어 단에서 호환되도록 설계되었습니다. 이 아키텍처는 CISC 설계와 하위 호환성에 중점을 두었습니다. 다량의 범용 레지스터 대신 소수의 특수 용도 레지스터가 있습니다. 그러나 차세대 64비트 CPU를 개발할 당시 기존 32비트와 호환되지 않는 완전히 새로운 CPU 명령 세트를 설계했고, 시장의 외면을 받았습니다. 반면, AMD 64(x86-64)는 기존 x86 32bit 체계와 호환되면서 64bit 처리가 가능해 각광받았고, 리눅스가 AMD64의 64비트를 지원하면서 빠르게 보급됐습니다. 그렇게 현재는 AMD64(x86-64)가 64bit에서 널리 사용되고 있습니다.
ARM
ARM은 1990년에 설립된 영국의 회사입니다. 32bit RISC Intellectual Property를 제공합니다. 직접 반도체를 제조해 판매하는 것이 아니라 설계한 프로세서를 반도체 회사에 제공합니다. 주로 스마트폰의 스냅드래곤, 애플 A칩과 임베디드 기계에 많이 사용됩니다. 최근에는 애플 M1칩을 기점으로 노트북, 데스크톱 등의 PC에서 두각을 나타내고 있습니다.
RISC-V
RISC-V는 지난 2010년 미국 UC버클리에서 탄생한 CPU용 아키텍처(ISA)입니다. 이 아키텍처는 이름 그대로 RISC 방식의 아키텍처입니다. 여기서 V는 [브이]가 아닌 [파이브]를 가리킵니다. 이 아키텍처는 비교적 자유로운 BSD 라이선스로 배포되어 라이선스 비용이 '무료'라는 이점이 있습니다.
지금까지 컴퓨터 시스템의 구성 요소와 컴퓨터 아키텍처, 명령어 집합 구조를 간단하게 알아봤습니다. 컴퓨터의 구성요소와 컴퓨터 아키텍처를 한눈에 보고 싶으신 분들이나 명령어 집합 구조에 관심 있는 분들에게 도움이 되었길 바랍니다.
출처
- 신종홍, 『컴퓨터 구조와 원리 2.0』. 한빛아카데미, 2013, p.24.
- 조너선 스타인하트/오현석 옮김, 『한 권으로 읽는 컴퓨터 구조와 프로그래밍』. 책만, 2021, pp.190-195.
- “[컴퓨터구조] 명령어 집합”, 티스토리 『꾸준함의 기록』, 2022.10.06, https://abcdefgh123123.tistory.com/493.
- 길벗알앤디, 『2022 시나공 정보처리기능사 필기』. 도서출판 길벗, 2021, p.26.
- "x86 아키텍처", Microsoft, 2023.03.09, https://learn.microsoft.com/ko-kr/windows-hardware/drivers/debugger/x86-architecture.
- "AMD64 — что это?", AMD.news, 2023.03.12 접속, https://amd.news/obzor/amd64/?ysclid=lf54pqs4b1345388652.
- “x86과 x64의 뜻과 차이 - CPU, OS, S/W”, 네이버 blog 『궁금한 정보 정리 블로그~~』, 2017.07.12, https://abcdefgh123123.tistory.com/493.
- "x86", 위키백과, 2023.03.12 접속, https://ko.wikipedia.org/wiki/X86.
- 장영조, 한국기술교육대학교, 2023.03.12 접속, https://cms3.koreatech.ac.kr/sites/yjjang/down/emsoc11/mod03a_ARM.pdf.
- "올해 'RISC-V' CPU 상용화 활발...아키텍처 시장 지각변동 예고", THEELEC / 장경윤 기자, 2023.01.24, https://www.thelec.kr/news/articleView.html?idxno=19554.
- "TechReport] RISC-V, 국제 표준이 된 오픈 소스 프로세서 아키텍처", 테크월드뉴스(TECHWORLD ONLINE NEWS) / 존 가바이(Jon Gabay), https://www.epnc.co.kr/news/articleView.html?idxno=230169.
- "STAGE 2 Background - Computer Science - Computer Architecture", Dreamhack, https://dreamhack.io.
태그
#CPU #isa #구조 #명령어 #아키텍처 #요소 #컴퓨터