[Computer Structure] 명령어 파이프라이닝과 주소 지정 방식⭐⭐

박시은·2023년 12월 1일
0

Computer Structure

목록 보기
15/17
post-thumbnail
post-custom-banner

▶ 명령어 파이프라이닝

  • 정의
    • CPU 처리 속도를 높이기 위해 CPU 내부 하드웨어를 여러 단계로 나누어 명령어를 처리하는 병렬 컴퓨팅 기법이다.

  • 장점
    • 파이프라인을 사용하면 한 명령어의 특정 단계를 처리하는 동안 다른 부분에서는 다른 명령어의 다른 단계를 처리할 수가 있게 되므로 속도가 향상될 수 있다.

▷ 단계별 파이프라이닝

① 2단계 파이프라인

  • 정의
    • 명령어를 실행하는 하드웨어를 인출 단계(Fetch stage)와 실행 단계(excute stage)로 나눈 것을 말한다.

  • 특징
    • 두 단계에 동일한 클록을 가하여 동작 시간을 일치시킨다.
      ① 첫 번째 클록 주기에는 인출 단계가 명령어를 인출하고,
      ② 두 번째 클록 주기에는 인출된 첫 번째 명령어가 실행 단계로 보내져 실행되며, 동시에 인출 단계는 두 번째 명령어를 인출한다. ( 명령어 선인출)
    • 소요 시간이 오래 걸리는 클록 주기로 맞춘다. (클록 : CPU의 속도를 나타내는 단위)

  • 장점
    • 2-단계 파이프라인을 이용하면 명령어 처리 속도가 최대 두 배만큼 빨라진다.
    • 첫 번째 명령어는 2단계의 소요 시간이 걸리긴 하지만, 다음 명령어부터는 한 클럭씩 밖에 걸리지 않아 소요 시간이 줄어든다. (1클럭으로 개선)

  • 문제점
    • 두 단계의 처리 시간이 동일하지 않으면 두 배의 속도 향상을 얻지 못해 파이프라인 효율이 저하된다.
      (소요 시간이 오래 걸리는 클록 주기로 맞추기 때문)
  • 해결책
    • 파이프라인 단계를 세분화하여, 각 단계의 처리 시간을 (거의) 같아지도록 한다.

② 4단계 파이프라인

  • 특징
    • 명령어 하나를 수행하기 위해 4단계를 거쳐야 한다.

  • 구성 단계
    • 명령어 인출(IF) 단계
    • 명령어 해독(ID) 단계
    • 오퍼랜드 인출(OF) 단계
    • 실행(EX) 단계
  • 장점
    • 파이프라인 단계의 수를 증가시켜 전체적으로 속도 향상 개선할 수 있다.
    • 첫 번째 명령어는 4단계의 소요 시간이 걸리긴 하지만, 다음 명령어부터는 한 클럭씩밖에 걸리지 않아 소요 시간이 줄어든다.

▷ 파이프라인의 효율성

  • 파이프라인에 의한 전체 명령어 실행 시간 T
    • 첫 번째 명령어를 실행하는데 k 주기가 걸리고, 나머지 (n - 1) 개의 명령어들은 각각 한 주기씩만 소요

  • 속도 향상률
    • n(명령어)의 숫자가 커질수록 k배에 가까워진다.

  • 파이프라인에 의한 최대 속도 향상률은 파이프라인의 주기수 k이다. (최대 k배만큼 빨라진다.)
    • 즉, 4단계 파이프라이닝을 하면 최대 4배만큼 빨라진다!(저해 요소 배제 시)

  • 예제

  • 파이프라인 효율 저하 요인
    • 모든 명령어들이 파이프라인 단계를 전부 거치지는 않는다.
      • 어떤 명령어에서는 오퍼랜드를 인출할 필요가 없지만, 파이프라인의 하드웨어를 단순화시키기 위해서는 모든 명령어가 네 단계들을 모두 통과하도록 해야 한다.

    • 파이프라인의 클럭은 처리시간이 가장 긴 단계 기준이 된다.

    • 두 단계에서 동시에 기억장치 액세스하는 경우 기억장치 충돌이 일어나 지연이 발생한다.
      • IF 단계와 OF 단계가 동시에 기억장치를 액세스하는 경우이다.

    • 조건 분기 명령어가 실행되면, 미리 인출하여 처리하던 명령어들이 무효화된다.
      • 분기가 발생한 주소로 이동해야하기 때문이다.



▶ 주소 지정 방식

  • 정의
    • 연산에 사용될 데이터를 주기억장치의 어떤 위치에서 인출할 것인가를 미리 명령어 형식의 오퍼랜드 주소부에 지정하는 방식

  • 다양한 주소 지정 방식을 사용하는 이유
    • 제한된 수의 명령어 비트들을 이용하여 여러가지 방법으로 오퍼랜드를 지정하고, 더 큰 용량의 기억장치를 사용하기 위함

▷ 즉시 주소 방식

  • 정의
    • 데이터가 명령어에 포함되어 있는 방식
    • 오퍼랜드 필드의 내용이 연산에 사용될 실제 데이터이다. (주소 번지를 지칭하는 것이 아님)
      • ex. LOAD 7인 경우, 7이 번지가 아닌 7값을 로드해라 라는 의미

  • 장점
    • 메모리에 액세스 필요 없어 비교적 빠르다.
      • 그냥 그 수를 넘겨주면 되기 때문이다.

  • 단점
    • 표현 가능한 데이터 크기(사용할 수 있는 수)가 오퍼랜드 필드의 비트 수로 제한된다.
      • 비트 안에서 표현된 수를 세트해주는 것이기 때문이다.

▷ 직접 주소 방식

  • 정의
    • 오퍼랜드 필드의 내용이 유효 주소(EA, Effective Address)가 되는 방식
      • 유효주소 : 데이터(피연산)가 저장된 메모리 실제 주소


  • 장점
    • 데이터 인출을 위해 한 번의 기억장치 액세스만 필요하다. (1번만 참조)
      • 필드에 유효 주소가 바로 있기 때문이다.

  • 단점
    • 표현 가능한 데이터 크기(사용할 수 있는 수)가 오퍼랜드 필드의 비트 수로 제한된다.

▷ 간접 주소 방식

  • 정의
    • 오퍼랜드 필드의 내용이 유효주소를 가리키는 주소를 저장하는 방식 (메모리 처음 접근시 유효주소 x)
      • 즉, 오퍼랜드가 지칭한 메모리 주소로 갔을 때 또 다른 주소 값 지칭한다.
      • mode bit i를 통해 간접인지 직접인지 알 수 있다 : i=0 직접, i=1 간접)


  • 장점
    • 기억장치에 있는 비트만큼 주소를 참조할 수 있기 때문에 더 긴 주소 저장 가능하다.

  • 단점
    • 액세스 시간이 길어진다.

▷ 레지스터 주소 지정 방식

  • 정의
    • 연산에 사용될 데이터가 레지스터에 저장되어 있는 방식

  • 장점
    • 오퍼랜드 필드의 비트 수 적어도 괜찮다.
    • 데이터 인출을 위하여 메모리에 접근하지 않고 레지스터에 바로 접근하므로 속도가 빠르다.
      • 속도: 즉시 > 레지스터 > 직접 > 레지스터 간접 > 간접

  • 단점
    • 데이터 저장 공간이 CPU 내부 레지스터로 제한되어있다.
    • 레지스터 수 자체가 제한되어 있기 때문에 많이 참조할 수 없다.

▷ 레지스터 간접 주소 지정 방식

  • 정의
    • 오퍼랜드 필드(레지스터 번호)가 가리키는 레지스터의 내용을 유효 주소로 사용하여 실제 데이터를 인출하는 방식
      • 레지스터를 거친 다음 간접 주소로 가는 것이다.

▷ 인덱스 주소 지정 방식

  • 정의

    • 인덱스 레지스터의 값과 변위⭐를 더하여 유효 주소를 결정 (실제 데이터가 있는 피연산자를 결정)하는 방식
    • 인덱스 레지스터는 배열의 시작번지를 참조한다.
      • 데이터 배열이 기억장치에 35번부터 저장되어 있고, 인덱스 레지스터의 내용이 345일 경우 아래와 같다.

  • 주요 용도

    • 배열 데이터를 엑세스할 때 인덱스 레지스터가 필요하다.



📎참조

profile
블로그 이전했습니다!
post-custom-banner

0개의 댓글