728x90
빠른 CPU를 만들기 위해 높은 클럭 속도에 멀티코어, 멀티스레드를 지원하는 CPU를 만드는 것도 중요하지만 CPU가 놀지 않고 작동하게 만드는 것도 중요함
명령어 병렬 처리 기법
명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법
명령어 파이프, 라이닝, 슈퍼스칼라, 바순차적 명령어 처리가 있음
명령어 파이프 라인
- 공장 생산 라인과 같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
- 이를 이해하기 위해서는 하나의 명령어가 처리되는 전체 과정을 비슷한 시간 간격으로 나누어 보아야 함
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
- 위의 단계가 정답은 아님 명령어 인출 -> 명령어 실행, 명령어 인출 -> 명령어 해석 -> 명령어 실행 -> 메모리 접근 -> 결과 저장 등으로 쓰이는 서적도 있음
- 같은 단계가 겹치지 않는다면 CPU는 각 단계를 동시에 실행할 수 있다는 것이 중요하다
- ex) CPU가 한 명령어를 인출하는 동안에 다른 명령어를 실행할 수 있음
파이프라인 위험
파이프라이닝이 높은 성능을 가져오지만, 특정 상황에서는 성능 향상에 실패하는 경우도 있음 이를 파이프라인 위험이라고 부름
데이터 위험, 제어 위험, 구조적 위험이 있음
데이터 위험
- 명령어 간 '데이터 의존선'에 의해 발생함
- 어떤 명령어는 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우가 있음
명령어1을 수행해야지만 명령어 2를 수행할 수 있음
제어 위험
- 주로 분기 등으로 인한 '프로그램 카운터의 갑작스러운 변화'에 의해 발생함
- 기본적으로 프로그램 카운터는 '현재 실행 중인 명령어의 다음 주소'로 갱신됨 하지만 프로그램 실행 흐름이 바뀌어 명령어가 실행되면서 프로그램 카운터 값에 급작스러운 변화가 생긴다면 명령어 파이프라인에 미리 가지고 와서 처리 중이었던 명령어들은 쓸모가 없게됨
이러한 상황을 방지하기 위해 분기 예측 기술을 사용함 ( 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술)
슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프 라인을 포함한 구조
- 슈퍼스칼라 구조로 명령어가 처리 가능한 CPU를 슈퍼스칼라 프로세서 또는 슈퍼스칼라 CPU라고 함
- 이론적으로 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라지지만 파이프라인 위험 등의 문제가 있어 반드시 빨라지지는 않음
- 슈퍼스칼라 방식을 차용한 CPU는 위험을 방지하기 위해 고도로 설계되어야함
비순차적 명령어 처리
- 명령어들을 순차적으로 실행하지 않는 기법
- 명령어의 합법적인 새치기
M(102) <- M(100) + M(101)은 M(100), M(101) 작업이 끝나야 할 처리할 수 있기 때문에 데이터 의존성이 없는 명령어와 순서를 바꾸어 처리함
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 메모리의 주소 공간 (0) | 2022.11.23 |
---|---|
[컴퓨터구조] 메모리 RAM의 특징과 종류 (0) | 2022.11.23 |
[컴퓨터구조] CPU 성능 향상 기법 (0) | 2022.11.22 |
[컴퓨터구조] 명령어 사이클, 인터럽트 (0) | 2022.11.22 |
[컴퓨터구조] 레지스터 (0) | 2022.11.22 |