컴퓨터 시스템을 정의하고 성능에 영향을 미치는 요소에 대해 이해하고 컴퓨터 설계의 근간이 되는 핵심 원칙을 알아본다.
성능 이해
- 알고리즘: 실행되는 연산의 횟수를 결정한다.
- 프로그래밍 언어, 컴파일러, 아키텍처: 연산당 실행되는 기계어 명령어의 수를 결정한다.
- 프로세서 및 메모리 시스템: 명령어 실행 속도를 결정한다.
- I/O 시스템(OS 포함): I/O 작업의 실행 속도를 결정한다.
컴퓨터 설계를 위한 7자기 아이디어
1. 추상화
추상화는 하쉬 수준의 세부 사항들을 숨겨서 상위 수준에서는 더 단순한 모델을 제공하는 역할을 한다.
컴퓨터 구조에서 추상화는 일련의 계층이나 레벨로 구성되는데, 각 레벨은 고유한 책임과 인터페이스를 가진다.
복잡한 부분을 분리하여 각 설계 그룹은 자신이 해야 할 일에만 집중할 수 있다.

추상화의 이점
- 추상화를 통해서 마이크로 아키텍쳐가 트랜지스터 레이아웃에 대해 걱정하지 않고 파이프라인의 깊이나 캐시 크기에만 집중할 수 있다.
- 잘 정의된 인터페이스를 가진 모듈을 다른 설계에서 재사용할 수 있다. (부품 재활용)
- 추상화를 통해 마이크로컨트롤러와 같은 작은 시스템에서 슈퍼컴퓨터와 같은 대형 시스템까지 동일한 프로그래밍 모델을 유지하며 확장할 수 있다. (명령어 세트를 그대로 사용 가능하도록)
2. 일반적인 경우를 빠르게 만들자
성능 개선을 위한 가장 효율적인 방법은 시스템에서 가장 자주 발생하는 작업에 리소스를 많이 할당하여 그 작업이 빠르게 실행되도록 설계하는 것이다.
자주 발생하지 않는 예외적인 경우를 최적화하기 위해 리소스를 낭비하는건 비효율적이다.
암달의 법칙:

예를 들어보자.
캐시 설계
보통 프로세서 캐시 접근에서 읽기 요청이 쓰기 요청보다 더 많이 발생한다.
RISC-V 프로그램에서는 데이터 캐시 트래픽의 대략 28%가 쓰기 작업이지만, 전체 메모리 트래픽에서는 쓰기가 대략 7%에 불과하다.
따라서 이 원칙에 따르면 설계자들은 프로세서가 쓰기 작업이 완료되기를 기다리지 않아도 되지만, 읽기 작업이 완료되기를 기다려야하므로, 캐시를 읽기 작업에서 최적화하여 일반적인 경우를 빠르게 만든다.
만약 어쩔수 없이 캐시에서 Write Policy를 따르면 Write Through 보다는 Write-Back을 선택해야한다.
Write-Through
- 캐시 블록에 데이터를 쓸 때마다 즉시 하위 레벨 메모리에도 동시에 기록한다.
- 이는 쓰기 작업이 발생할 때마다 느린 메인 메모리 접근을 유발해서 성능이 많이 떨어진다.
Write-Back
- 데이터는 캐시 블록에만 기록되고, 해당 블록에 Dirty Bit (수정 여부 판단 비트)를 설정한다.
- 이 블록은 캐시에서 제거될 때만 하위 메모리에 기록된다.
Write-Back 방식은 CPU 속도로 쓰기 작업을 완료할 수 있고, 하나의 블록 내에서 여러 번의 쓰기가 발생하더라도 피지컬 메모리는 한번의 쓰기만 수행한다.
명령어 구조에서의 적용(RISC-V)
RISC-V 아키텍쳐는 적은 수의 레지스터를 사용한다. (32개)
이는 뒤에 나올 적을 수록 빠르다는 설계 원칙과도 연결되는데 레지스터 수가 제한적일 때 접근 시간이 빨라져서 일반적인 경우가 빨라지기 때문이다.
단일 사이클 프로세스
단일 사이클 프로세스는 오늘날은 비효율적이라 사용하지 않는데 여기서 이유를 알 수 있다.
단일 사이클은 프로세서가 Load 같은 명령어처럼 데이터를 읽어야 할 때, 그 데이터가 도착할 때까지는 다음 작업을 수행할 수 없다 (CPU가 멈춤) 그래서 병목 현상에 직접적인 타격이 있다.
3. 병렬성
컴퓨터의 성능을 따질 때 과거에는 클럭 속도에 의존했지만 이제는 병렬성에 더 의존한다.
이건 예시가 더 좋을 것 같다.
웹 서버
수천 개의 요청이 동시에 들어올 때, 이를 하나씩 순서대로 처리하면 지연이 심하다
병렬 처리(멀티 스레드, 멀티코어, 비동기 I/O)를 통해서 동시에 수많은 요청을 빠르게 처리해야 한다.
과학 계산
날씨 예측이나 기후 모델링, 분자 시뮬 같은 계산은 수많은 조건과 방정식을 동시에 풀어야 한다.
병렬성이 없으면 계산에 수십년이 걸릴거다.
머신러닝
딥러닝 학습은 아주 큰 행렬과 텐서 연산이 필요하다
GPU는 수천 개의 연산 유닛을 병렬로 사용해서 이런 대규모 연산을 빠르게 처리한다.
4. 파이프라이닝
파이프라이닝은 명령어 실행의 단계를 겹치게 해서 성능을 높이는 병렬의 한 형태다.

파이프라이닝은 명령어 처리 과정을 여러 단계로 분할한 다음, 여러 명령어들이 이 단계를 동시에 지나가도록 중첩시키는 방식이다.
파이프라인은 클럭 사이클당 명령어 완료율을 높여서 Throughput을 높인다.
개별 명령어 하나가 완료되는 데 걸리는 시간인 지연 시간은 파이프라이닝 때문에 줄어들지 않으며, 오히려 파이프라인 레지스터의 오버헤드 때문에 약간 늘어날 수 있다.
5. 예측
파이프라이능은 명령어 흐름에서 Control Hazaard가 발생했을 때 잠재적인 성능 손실이 발생하는데, 이를 최소화하기 위해서 예측하는 기술을 사용한다.
예측은 확실히 알 때까지 기다리는 대신, 결과가 어떻게 될지 추측하고 작업을 먼저 시작하는 아이디어다. 추측이 틀리면 되돌리는 매커니즘이 있고 예측이 잘 맞으면 평균적으로는 더 빠른 성능을 낼 수 있다.
6. 계층 구조
컴퓨터 설계를 할 때 메모리가 용량이 크고, 빠르고 가격이 싸길 바르는 건 당연하다.
근데 그런게 있을리가 없다.
그래서 계층구조가 등장했다.

메모리 계층 구조는 다양한 속도와 크기의 메모리를 여러 단계로 구성하는 것이다.
이 구조의 목표는 프로세서에 가까울 수록 작고, 빠르고, 비싸다.
반대로 멀어지면 크고, 느리고, 저렴하다
최상단에는 on-chip memory나 레지스터가 있다. (SRAM)
다음에는 주 메모리 (Primary memory) (DRAM)
최하단에는 보조 메모리 (Secondary Memory) (SSD, HDD ,…)
작동 원리는 지역성이다,
지역성은 다시 2가지로 나뉜다
시간적 지연성
최근에 접근한 항목은 곧 다시 접근될 가능성이 높으므로, 캐시는 이 항목을 프로세서 가까이에 유지한다.
공간적 지역성
접근된 항목 근처의 주소에 있는 항목들 또한 곧 접근될 가능성이 높으므로, 캐시는 데이터를 단일 블록 단위로 이동시켜 이를 활용한다.
7. 중복을 통한 신뢰성
컴퓨터 시스템은 시간이 지남에 따라서 오류가 발생할 수 있다.
이 마지막 아이디어는 시스템의 신뢰성을 확보하기 위해서 중복성을 추가하는 방식이다.
중복을 사용하면 일부 구성 요소가 실패해도 전체 시스템이 계속해서 제대로 작동하거나 데이터를 보존할 수 있다.

대표적으로 저장 장치가 있다
저장 장치
RAID 시스템은 시스템의 디스크가 고장 났을 때 데이터가 손실되지 않도록 보장한다.

RAID의 핵심 기능은 디스크에 실패가 발생하면 데이터를 재구성하는 것이다.
'지식 > 컴퓨터아키텍쳐' 카테고리의 다른 글
| Machine Language (0) | 2025.10.16 |
|---|---|
| Instructions(3) (0) | 2025.10.07 |
| Instruction(2) (0) | 2025.10.07 |
| Instructions(1) (0) | 2025.10.07 |
| Computer Abstractions and Technology(2) (0) | 2025.10.07 |