
[ "혼자 공부하는 컴퓨터구조 + 운영체제" ] 공부한 후 정리한 내용 입니다
1. 빠른 cpu 설계
- CPU를 빠르게 만든다는 건 한 번에 더 많은 일을, 더 빨리 처리하는 것을 의미 → 단순한 생각은 클럭 속도를 높이면 되지 않을까?
(1) 클럭만 높이면 생기는 문제
- 전력 소모 증가 → 발열 급증
(2) 그럼 어떻게 빠르게 만들까? → 일을 나눠 동시에 처리하자!
- 코어 수 늘리는 방법
- 스레드 수 늘리는 방법
2. 코어(Core)

- 코어 = 명령어를 실제 실행하는 부품 ( ALU + 제어장치 + 레지스터 )
- 멀티코어 프로세서 : 여러 개의 코어를 가지고 있는 CPU
(1) 코어 수를 늘리면 무조건 빨리짐?
- 꼭 그런 건 아님 → 항상 성능이 비례해서 증가하지는 않음..
- 명령어를 얼마나 잘 나눠주느냐가 중요!
(2) 왜 코어가 많아도 느릴 수 있을까?
- 명령어가 잘 분배되지 않는 경우 → 특정 코어만 계속 일함 → 나머지 코어 논떙이.. → 속도 향상 없음
3. 스레드
- 스레드는 작업을 처리하는 흐름 단위
- 크게 하드웨어적 스레드와 소프트웨어적 스레드로 나뉨
(1) 하드웨어적 스레드

- 하나의 코어가 동시 처리할 수 있는 명령 단위 → 1개의 코어가 여러 작업을 동시에 처리하는 것처럼 보이는 기술
- 멀티 스레드 프로세서 라고함
- 위 그림에선 각각의 코어가 2개의 스레드를 실행할 수 있다 → 각 코어가 두 개의 작업 흐름을 동시에 처리 가능하다는 뜻
(2) 멀티 스레드 프로세서 설계 핵심 → 레지스터

- 레지스터 → CPU 내부 임시 저장 공간
- 레지스터 세트 → 하나의 명령 실행에 꼭 필요한 레지스터 묶음
- 스레드 하나당 자신만의 레지스터 세트를 가짐 → 즉, 레지스터 세트 개수 = 동시 처리 가능한 스레드 수
(3) 소프트웨어적 스레드
- 하나의 프로그램 안에서 독립적으로 실행되는 작업 단위
- 운영체제가 관리 → 프로그래밍에서 말하는 thread
4. 명령어 병렬 처리
- CPU가 여러 명령어를 겹쳐서 동시에 처리해 속도를 높이는 방식
(1) 명령어 파이프라인

- CPU는 하나의 명령어를 4단계로 처리 : ( 명령어 인출 → 명령어 해석 → 명령어 실행 → 결과 저장 )
- 같은 단계만 겹치지 않으면 동시에 실행 가능
[ 파이프라인 위험 ]
( 데이터 위험 ) : 명령어 간 데이터 의존성에 의해

- 2번 명령어가 1번 명령어 결과값이 있어야 실행 가능 → 2번은 1번이 끝날 떄까지 대기해야됨..
- 파이프라인 흐름 끊김
( 제어 위험 ) : 프로그램 카운터의 갑작스러운 변화 ( 분기, 점프, 인터럽트 )

- 뒤쪽 명령어들이 무효가됨..
- 해결 아이디어 : 분기 예측 → CPU가 미리 분기 결과를 예측
( 구조적 위험 ) : 서로 다른 명령어가 같은 CPU 부품을 동시에 사용하려는 경우
(2) 슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 가진 구조
(3) 비순차적 명령어 처리
- 명령어 파이프라인 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 기법

- 명령어를 순차적으로 처리 시 3번 명령어에서 파이프 라인 중단이 발생( 데이터 위험 )
- 3번 명령어를 맨 뒤로 바꾼다면??? 즉, (1 → 2 → 4 → 5 → 3) 문제가 없고 더 효율적인 파이프라인이 형성됨
But.. 명령어 순서를 바꿔도 프로그램 전체 결과가 같을 때만 순서 변경 가능
'cs기초 지식 정리 > 컴퓨터구조, 운영체제' 카테고리의 다른 글
| 보조기억장치 (0) | 2024.03.27 |
|---|---|
| 메모리의 주소 공간(논리,물리 주소), 캐시 메모리 (0) | 2024.03.26 |
| 명령어 집합 구조(CISC, RISC), RAM의 특성과 종류(메모리) (0) | 2024.03.21 |
| ALU, 제어장치, 명령어 사이클, 인터럽트 (0) | 2024.03.18 |
| 컴퓨터 구조, 운영체제 (0) | 2023.10.31 |