[컴퓨터 구조] 22. Pipeline MIPS (6) - 성능 측정

2024. 6. 3. 19:30·CS/컴퓨터 구조
반응형

Single Cycle MIPS 의 성능을 측정할 때, 간단하게 CPU 성능만 측정했던 내용을 복기해보자.

 

CPU Time = 명령어 개수 x CPI x Clock Cycle Time = inst x CPI / f

 

실행시간은 많은 요인들에 의해 결정이 되지만, 간단하게 CPU의 실행시간만 생각하고 위와 같이 계산할 수 있었다.

 

이 내용을 Pipelined MIPS에 적용해보자.

CPU가 어떤 프로그램을 실행시키는데 1000억개의 명령어를 실행해야 한다면, 이 프로그램의 실행 시간은 얼마가 나올까?

 

우선 이상적으로는 CPI는 1에 수렴할 것이다.

왜냐하면 첫번째 명령어를 실행하는데 5 클럭 사이클이 걸렸다고 하면, 그 다음 명령어는 6번째 클럭 사이클에 실행이 완료되고, 그 다음 명령어는 7번째 클럭사이클에 실행이 완료되기 때문이다.

따라서 1000억이라는 매우 많은 명령어를 실행하는 상황에서는 이상적으로 거의 1에 수렴하게 될 것임을 알 수 있다.

물론 현실적으로 stall 이나 flush가 발생하게 되면, CPI가 증가하여 성능에 악영향을 줄 것이다.

(근데 실제로는 우리가 사용하는 장치가 멀티 코어, many 코어로 가고 있기 때문에 CPI가 1보다 작아지기도 한다고 한다.

물론 지금 보는 것처럼 싱글 프로세서로서 코어가 1개라면 CPI는 1이 최선이다.)

 

다시 예제로 돌아와서 이 CPU로 어떤 벤치마크를 실행하는데, 그 벤치마크 프로그램의 어셈블리 구성이 다음과 같았다고 해보자.

 

그리고 load 명령어 중 40%에서는 load-use 케이스가 발생하고, 25% branch 명령어는 예측에 실패한다고 해보자.

load-use 케이스는 1cycle의 추가적인 패널티가 존재했고, branch도 예측에 실패하는 경우 1cycle의 패널티가 있었다.

또한 jump 명령어의 경우, 반드시 분기가 일어나기 때문에 1 cycle의 flush가 항상 일어난다고 해보자.

 

이제 이 가정하에서 평균 CPI를 구해보자. (사실 CPI는 그 자체로 평균의 의미를 갖고 있긴 하지만)

만약 위와 같은 구성에서 stall 이나 flush가 없다면, CPI는 그냥 1이 될 것이다. (전제에서 1에 수렴한다고 하였으므로)

하지만 load use 케이스나 branch 예측 실패와 같은 케이스를 고려하여 다시 CPI를 계산해보면 아래와 같이 계산할 수 있다.

 

Load, Branch 명령어는 stall 이나 flush 가 없을 경우, 1 Cycle에 실행되고, 있으면 2 Cycle에 실행된다.

따라서

 

load 명령어의 CPI 는 1 * 0.6 + 2 * 0.4 = 1.4 가 된다.

branch 명령어의 CPI 는 1 * 0.75 + 2 * 0.25 = 1.25 가 된다.

jump 명령어는 항상 flush 가 발생하므로 2 cycle이 소모된다.

 

이제 평균 CPI를 구하면 아래와 같다.

 

0.25 * load 명령어의 평균 CPI +

0.1 * store +

0.11 * branch 명령어의 평균 CPI +

0.02 * jump 명령어 +

0.52 * R-type

 

= 0.25 * 1.4

+ 0.1 * 1

+ 0.11 * 1.25

+ 0.02 * 2

+ 0.52 * 1

 

= 1.15

 


참고

Exceptions

예외는 CPU 내부에서 발생하는 이벤트이다.

정의되지 않은 OP Code를 실행하거나, 0으로 나누는 연산과 같이 수행할 수 없는 연산, 또는 산술 오버플로우가 발생했을 때 CPU가 발생시키는 이벤트이다. (MIPS는 오버플로우도 예외로 발생시킨다. 아키텍쳐에 따라 오버플로우는 예외로 발생시키지 않기도 한다.)

 

Interrupts

인터럽트는 외부 I/O 디바이스에서 보내는 이벤트(시그널)이다.

예를 들면 키보드 입력, 마우스 이동, 네트워크 카드와 같은 곳에서 보내는 이벤트이다.

원래 하던 일을 멈추고 지금 I/O 장치를 처리하라고 보내는 신호이다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 컴퓨터 구조' 카테고리의 다른 글

[컴퓨터 구조] 24. Cache (2) - Direct-Mapped Cache  (0) 2024.06.04
[컴퓨터 구조] 23. Cache (1) - 개요  (0) 2024.06.03
[컴퓨터 구조] 21. Pipeline MIPS (5) - 회로 개선 (Control Hazard)  (0) 2024.06.02
[컴퓨터 구조] 20. Pipeline MIPS (4) - 회로 개선 (Data Hazard)  (0) 2024.06.02
[컴퓨터 구조] 19. Pipeline MIPS (3) - Datapath & Control  (0) 2024.06.01
'CS/컴퓨터 구조' 카테고리의 다른 글
  • [컴퓨터 구조] 24. Cache (2) - Direct-Mapped Cache
  • [컴퓨터 구조] 23. Cache (1) - 개요
  • [컴퓨터 구조] 21. Pipeline MIPS (5) - 회로 개선 (Control Hazard)
  • [컴퓨터 구조] 20. Pipeline MIPS (4) - 회로 개선 (Data Hazard)
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614) N
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8) N
        • express.js (1)
        • Spring & Spring Boot (7) N
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[컴퓨터 구조] 22. Pipeline MIPS (6) - 성능 측정
상단으로

티스토리툴바