개요
아키텍쳐를 본격적으로 공부하기 이전에 컴퓨터는 어떻게 발전되어 왔는지 알아보자.
폰 노이만의 컴퓨터 구조를 고안해내기 이전에는 애니악(ENIAC, Electronic Numerical Integrator and Computer)이라는 컴퓨터가 운용되어 있었는데, 이 애니악은 프로그램 외장 방식으로 동작되어왔다.
천공 카드라는 것을 통해 데이터를 입력하고, 결과를 출력했는데, 천공카드란 OMR 마킹지와 비슷하게 생긴 카드에 구멍을 뚫어 디지털 자료를 기록하는 저장매체이다.
수정소요가 있으면, 종이 테이프로 천공 카드의 구멍을 메웠던 것을 패치(Patch)라 하고, 이는 오늘날 우리가 프로그램 수정하는 것을 뜻하는 말인 패치의 유래이다.
버그는 실제로 벌레가 들어가서 프로그램 오류가 나는 것이라고...
폰 노이만은 아인슈타인이 참여한 것으로 알려진 핵무기 개발 계획인 맨해튼 프로젝트에 참여했고, 이때 프로그램 내장 방식 컴퓨터를 제안했다.
그리고, 이때 구상한 폰노이만 구조는 오늘날의 범용컴퓨터의 기초가 되었다.
폰 노이만 구조
프로그램 내장 방식으로 프로그램 코드와 데이터를 동일한 메모리에 저장하여 실행 시 이를 CPU가 메모리에서 가져와 처리하는 방식이다.
이전 프로그램 외장 방식과는 달리 프로그램을 쉽게 변경하거나 재사용할 수 있게 한다.
폰노이만 구조 구성요소
- CPU(중앙처리장치)
- 연산장치(ALU) : 산술 및 논리연산을 수행
- 제어장치(CU) : 명령을 해석하고 실행을 제어
- 메모리 : 데이터를 저장하며, 프로그램 코드와 데이터를 동일한 메모리 공간에 저장
- 입출력장치(I/O) : 외부와 데이터 교환을 담당
- 버스(BUS) : CPU, 메모리, I/O장치간 데이터를 전달하는 전송로 역할
컴퓨터의 작동원리
컴퓨터의 작동원리에 대해 알아보자
해당 내용은 16비트 운영체제로 가정을 했으며, 메모리에는 각각 8bit씩 들어가 있고, 한번에 읽을 수 있는 크기가 16bit임을 강조한다.
메모리에 들어가 있는 값은 편의상 어셈블리어 언어로 표현을 했다.
초기에 C = A+B라는 코드를 짜고, 그 코드는 어셈블리어에서 기계어로 바뀐다.
그것이 하드디스크와 같은 비휘발성 메모리에 저장되어 있다가 실행되게 되면 커널에 의해 메모리에 올려지게 되면서 실행된다.
이때, 폰 노이만 구조에서는 명령어와 데이터는 하나의 메모리에 있게 된다.
PC(Program Counter)는 다음에 실행할 명령어가 있는 주소를 가리킨다.
그림에서 PC는 106번지를 가리키고 있고, 메모리 주소 레지스터가 PC로부터 이 주소를 받는다.
메모리 주소 레지스터는 106번지를 조회해서 메모리 버퍼 레지스터에 해당 번지의 값을 가져온다.
이때 가져온 값이 명령어이기 때문에, 명령어 레지스터에 LOAD 101이라는 값을 넣게 된다.
이후 CU(연산장치)에 값을 주게 된다.
PC는 16비트 운영체제임에 따라 다음 주소인 108번지를 가리키게 된다.
CU는 명령어에 따라 101번지에 있는 값을 조회할 수 있도록 메모리 주소 레지스터를 통해 조회하고, 101번지에 있는 데이터 숫자 1은 메모리 버퍼 레지스터로 옮겨져 누산기로 들어간다.
메모리 주소 레지스터는 108번지로 PC의 값이 변함에 따라 다음 명령어를 조회하고, 메모리 버퍼 레지스터로 값을 가져온다.
이후 명령어이기 때문에 역시 명령어 레지스터로 이동, CU에 값을 전달한다.
ADD 명령어이므로, 계산을 위해 누산기에 있는 값은 ALU로 이동하게 된다.
PC는 그 다음 주소인 110으로 이동한다.
CU는 102번지를 조회하면서 102번지의 숫자 값 2는 메모리 버퍼 레지스터를 지나 누산기로 이동, ADD 명령어 수행을 위해 ALU로 값을 이동하게 된다.
ALU는 CU에 의해 덧셈연산을 실시한다.
ALU 계산으로 나온 값은 누산기로 이동한다.
메모리 주소 레지스터는 다음 주소인 110을 조회하고, "STORE 103" 명령어를 가져와 명령어 레지스터를 통해 CU로 전달된다.
PC는 그 다음 주소인 112번지로 이동한다.
CU는 103번지에 값을 넣을 수 있도록 주소 레지스터에 값을 준다.
누산기에 있는 연산 결과 값은 메모리 버퍼 레지스터로 이동하여 103번지에 값을 넣는다.
장점
- 이전 애니악 때와는 다르게 프로그램 내장 방식으로 프로그램을 쉽게 수정하거나 업그레이드가 가능하다.
- 하나의 컴퓨터로 다양한 작업을 처리할 수 있다.
- 구조가 단순하여 구현이 쉽고, 비용이 적게든다.
단점
- 병목현상
- 데이터와 명령어가 동일한 메모리 경로(버스)를 사용하므로, CPU와 메모리 간 데이터 전송 속도가 병목현상을 초래한다.
- 원인은 CPU가 처리하는 처리 속도와 메모리, I/O가 처리하는 속도의 차이가 다르다 보니 생기는 현상이다.
- CPU는 빠르게 연산이 가능하지만 메모리에서 데이터를 읽고 쓰는 속도가 느려서 메모리에서 정보를 가져오는 동안 CPU는 대기상태가 된다.
- 또한, 데이터와 명령어가 동일한 경로인 버스를 공유하기 때문에 CPU와 메모리가 동시에 데이터를 주고받을 수 없고, CPU는 데이터와 명령어를 번갈아 가며 요청하게 되어 병목이 발생한다.
- 마지막으로 I/O는 CPU보다 훨씬 느린속도로 작동하다 보니 데이터가 CPU까지 전달되는데 시간이 오래걸려 전체 시스템의 효율성을 저하시킬 수 있다.
- 메모리 병합문제
- 명령어와 데이터가 같은 메모리 공간에 저장되어 잘못된 명령 실행이나, 데이터 손상의 위험이 있다.
아키텍쳐
컴퓨터 아키텍쳐란
컴퓨터가 작동이 되기 위한 컴퓨터 시스템의 운영구조로서, 컴퓨터 시스템의 기능적 구성, 설계원리를 말한다.
이들과 호환되는 프로세서에서 사용한 명령어 집합구조를 통칭하는 말로 아키텍쳐의 종류에 따라 레지스터와 명령어가 나뉜다.
각 소분야 별로는 명령어 집합구조(ISA), 마이크로 아키텍쳐, 시스템 설계로 구성된다.
- 명령어 집합구조(ISA, Instruction Set Architecture)
- CPU가 실행할 수 있는 명령어의 집합과 이를 처리하는 방법을 정의
- 프로그래머와 하드웨어 간의 인터페이스로, 컴파일러와 운영체제가 이를 기반으로 동작한다.
- 예로는 x86, ARM이 있다.
- 마이크로 아키텍쳐
- ISA를 실제로 구현하는 하드웨어 설계 방식
- CPU의 내부 구조(파이프라인, 캐시 메모리, ALU 등)을 포함한다.
- 시스템 설계
- 컴퓨터의 나머지 하드웨어 구성 요소를 정의한다.
- 메모리 시스템, 입출력장치, 데이터 버스 구조 등을 정의
아키텍쳐 종류 및 아키텍쳐 별 차이점
컴퓨터 아키텍쳐의 분류
- 폰 노이만 구조
- 프로그램과 데이터를 동일한 메모리에 저장하고, 하나의 버스를 통해 처리
- 현대 범용 컴퓨터에서 가장 흔히 사용
- 하버드 구조
- 프로그램과 데이터를 분리된 메모리에 저장하여, 병목현상을 줄임
- 독립적인 버스를 사용해 전송
- RISC(Reduced Instruction Set Computer)
- 단순한 고정된 길이의 명령어 집합을 사용
- 하나의 사이클에 하나의 명령어를 실행하도록 최적화
- 하드웨어는 간단하지만 소프트웨어가 더 많은 작업을 처리
- CISC(Complex Instruction Set Computer)
- 복잡한 명령어를 포함하며, 하나의 명령어로 여러 작업을 수행 가능
- 하드웨어가 복잡하지만 소프트웨어 작업량이 줄어듦
아키텍쳐별 차이점
x86
- CISC 기반의 아키텍쳐로 복잡한 명령어 집합을 사용하며, 하나의 명령어로 여러 작업을 수행한다.
- 주로 인텔과 AMD가 개발한 CPU에 사용됨.
- x86_64(x64)는 x86의 64비트 확장판
- 32bit와 64bit로 나뉘는데, 이는 컴퓨터가 한번에 처리할 수 있는 단위(=WORD)를 뜻함.
- 장점
- 코드 밀도가 높아 메모리 효율이 우수.
- x86 소프트웨어 생태계가 방대하여 호환성이 뛰어남
- 단점
- 명령어 처리의 복잡성 때문에 전력 효율이 낮음
AMD 아키텍쳐
- AMD는 x86 및 x86_64를 사용하는 CPU를 설계하며, 자체 최적화된 확장 기술도 제공.
- 최근 AMD의 Zen아키텍쳐는 고성능과 전력 효율성을 강조
- 장점
- 인텔과 비교하여 높은 멀티코어 성능을 제공
- 단점
- 인텔과 비교했을 때 단일 코어 성능이 약간 낮았으나, Zen 아키텍쳐 이후 개선
ARM(Advanced RISC Machine)
- RISC 기반
- 전력 효율성과 단순성을 중시하며, 모바일 장치에 최적화
- 장점
- 전력 소비가 적고 발열이 낮음
- 높은 확장성과 유연성을 제공
- 다양한 제조사가 라이선스를 통해 커스터 마이징 가능
- 단점
- 고성능 데스크톱 작업에는 상대적으로 부적합
- x86 소프트웨어와의 호환성 부족
MIPS(Microprocessor without Interlocked Pipeline Stages)
- RISC 기반의 초기 아키텍처 중 하나
- 단순성과 확장성을 중시하여 초기에 널리 사용됨
- 장점
- 설계가 단순하고 효율적
RISC -V
- 오픈소스 RISC 아키텍쳐로 누구나 설계를 사용하고 수정 가능
- 모듈형 설계로 필요한 기능만 추가하여 커스터마이징 가능
- 장점
- 라이선스 비용이 없고, 설계가 자유로움
정리
아키텍쳐 | 명령어 집합 | 주요 특징 | 전력효율 | 사용사례 |
---|---|---|---|---|
x86 | CISC | 복잡한 명령어, 범용 컴퓨터 | 낮음 | 데스크톱, 서버 |
x86_64 | CISC | x86의 64비트 확장 | 낮음 | 고성능컴퓨터, 서버 |
AMD | CISC | x86/x86_64 기반, 고효율 멀티 코어 | 중간 | 워크스테이션, 서버 |
ARM | RISC | 전력 효율 최적화, 모바일 중심 | 높음 | 스마트폰,IoT, 태블릿 |
MIPS | RISC | 초기 RISC, 단순성 강조 | 중간 | 네트워크 장치, 일부 임베디드 |
RISC-V | RISC | 오픈소스, 모듈형 설계 | 높음 | 연구,IoT, 임베디드 시스템 |
끝.
'STUDY' 카테고리의 다른 글
[3주차 TIL] KnockOn Bootcamp Pre.Rev : 링커와 로더 (0) | 2024.12.21 |
---|---|
[3주차 TIL] KnockOn Bootcamp Pre.Rev : 컴파일러 (0) | 2024.12.21 |
[2주차 TIL] KnockOn Bootcamp Pre.Rev : 탐색 알고리즘 (1) | 2024.12.15 |
[2주차 TIL] KnockOn Bootcamp Pre.Rev : 정렬 알고리즘 (1) | 2024.12.14 |
[1주차 TIL] KnockOn Bootcamp Pre.Rev : 트리 (0) | 2024.12.09 |