관리 메뉴

공부 기록장 💻

[컴퓨터구조] CPU 구조와 기능 - 명령어 파이프라이닝(2, 4단계), 명령어 세트 본문

# CS Study/Computer Architecture

[컴퓨터구조] CPU 구조와 기능 - 명령어 파이프라이닝(2, 4단계), 명령어 세트

dream_for 2021. 4. 20. 16:27

 

 

명령어 파이프라이닝(Instruction Pipelining)

CPU의 프로그램 처리 속도를 높이기 위해ㅣ CPU 내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술

 

 

2-단계 명령어 파이프라인(Two-Stage Instruction Pipeline)

 

명령어를 실행하는 하드웨어를 1) 인출 단계(fetch stage), 2) 실행 단계(execute stage) 라는 두 개의 독립적인 파이프 라인 모듈로 분리한 파이프라인 기법이다.

 

- 문제점 : 두 단게의 처리 시간이 동일하지 않으면 두 배의 속도 향상을 얻지 못하고 파이프라인의 효율이 저하된다. (fetch 단계와 execute 단계의 실행 속도 차이가 나므로 싱크가 맞지 않아 하나의 단계가 다른 단게가 끝마칠 때 까지 대기해야 하는 상황 발생)

- 해결책: 파이프라인의 단계 수를 증가 시켜 각 단계의 처리 시간을 같게 한다.

 

 

 

4-단계 명령어 파이프라인(Two-Stage Instruction Pipeline)

 

1) 명령어 인출(instruction fetch) 단계 - 다음 명령어를 기억 장치로부터 인출

2) 명령어 해독(instruction decode) 단계 - 해독기(decoder)를 이용해 명령어 해석

3) 오퍼랜드 인출(operation fetch) 단계 - 기억 장치로부터 오퍼랜드 인출

4) 실행(execution) 단계 - 지정된 연산 수행

 

 

 

파이프라인에 의한 전체 명령어 실행 시간

 

T(1) = k*N (파이프라인 되지 않은 경우 N개의 명령어들을 실행하는 시간)

 

T(k) = k + (N-1)

- k : 파이프 라인 단계 수

- N : 실행할 명령어들의 개수

 

파이프 라인에 의한 속도 향상 Sp = T1 / Tj = k*N / {k+(N-1)}

 

 

 

파이프라인의 효율 저하 요인들

 

1. 모든 명령어들이 거치치 않아도 되는 파이프라인 단계들을 모두 통과해야 함

2. 파이프라인의 클록은 처리 시간이 가장 오래 걸리는 단게를 기준으로 결정됨

3. IF 단계와 OF 단계가 동시에 기억장치를 액세스 하는 경우(동시에 fetch단계), 기억장치 충돌에 의해 시간 지연 발생

4. 조건 분기(conditional branch) 명령어가 실행되면, 미리 인출하여 처리하던 명령어들이 무효화됨

    (ex) goto 문과 같은 JUMP 연산)

 

 

분기 발생에 의한 성능 저하의 최소화 방법

 

1. 분기 예측(branch prediction)

2. 분기 목적지 선인출(prefetch branch target)

3. 루프 버퍼(loop buffer) 사용

4. 지연 분기(delayed branch)

 

상태 레지스터(status register) : 조건 분기 명령어가 사용할 조건 플래그들을 저장하는 레지스터

- 부호, 영, 올림수, 동등, 오버플로으, 인터럽트, 슈퍼바이저 플래그

 

 


슈퍼 스칼라(superscalar)

 

CPU의 처리 속도 향상을 위해 내부에 두 개, 그 이상의 명령어 파이프라인을 포함시킨 구조

- m-way 슈퍼 스칼라 (파이프라인 n개)

 

 

듀얼 코어, 멀티 코어

- CPU 코어(core): 명령어 실행에 필요한 CPU 내부의 핵심 하드웨어 모듈

- 멀티 코어 프로세서 (multi-core processor)

 

프로그램 실행에 있어 각 코어는 더 높은 독립성을 가지며, 멀티태스킹(multi-tasking) 혹은 멀티스레딩(multi-threading) 을 가능케함

 

 


 

명령어 세트(Instruction Set)

 

특정 CPU를 위해 정의되어 있는 명령어들의 집합

- 마이크로프로세서가 기능을 이해하고 실행할 수 있는 기계어 명령어 집합

- 마이크로프로세서 CPU의 각 제조사마다 제공, 사용하는 기게어 명령어가 다르기 때문에, 컴파일러가 명령어를 해독해야한다.

 

명령어 세트 설계를 위해 결정되어야 할 사항들

1. 연산 종류(operation repertoire) : CPU가 수행할 연산들의 수와 종류, 복잡도

2. 데이터 형태(data type) : 연산을 수행할 데이터들의 형태, 데이터의 길이(비트수), 수의 표현 방식

3. 명령어 형식(instruction format) : 명령어의 길이, 오퍼랜드 필드의 수와 길이

4. 주소 지정 방식(addressing node) : 오퍼랜드의 주소를 지정하는 방식

 


연산의 종류

 

- 데이터 전송

- 산술/논리 연산

- 입출력(I/O)

- 프로그램 제어

  • 명령어 실행 순서를 변경하는 연산들
  • 분기(branch), 서브루틴 호출(subroutine call)

 


 

명령어 형식

 

명령어의 구성 요소들

- 연산 코드(Operation Cpde): 수행될 연산 지정

- 오퍼랜드(Operand) :  연산을 수행하는데 필요한 데이터 혹은 데이터의 주소

  • CPU 레지스터, 주기억장치, I/O 장치에 오퍼랜드 저장되어 있음

- 다음 명령어 주소(Next Instruction Address) : 다음 명령어를 인출할 위치 지정

- 명령어 형식(instruction format) : 명령어 내 필드들의 수와 배치 방식, 각 필드의 비트 수

- 필드(field): 명령어의 각 구성 요소들에 소요되는 비트들의 그룹

- 명령어의 길이 : 단어(word)의 길이

 


주소 지정 방식

 

 

주소 지정 방식 종류

 

1) 직접 주소 지정 방식(Direct Addressing Mode)

 

2) 간접 주소 지정 방식(Indirect Addressing Mode)

 

3) 묵시적 주소 방식(IImplied Addressing Mode)

 

4) 즉시 주소 지정 방식(Immediate Addressing Mode)

 

5)레지스터 주소 지정 방식

 

6) 레지스터 간접 주소 지정 방식

 

7) 변위 주소 지정 방식(Displacement Addressing)

 

8) 상대 주소 지정 방식(Relative Addressing Mode)

 

9) 인덱스 주소 지정 방식 (Indexed Addressing Mode)

 

10)  베이스-레지스터 주소 지정 방식

 

 

728x90
반응형
Comments