오류 및 함정

2023. 3. 28. 16:10·컴퓨터 구조/Ch1. 컴퓨터 추상화 및 관련 기술
Reference :
- 컴퓨터 구조 및 설계 MIPS EDITION [6판] / David A. Patterson / 한빛에듀
- 건국대학교 컴퓨터구조 강의 / 박능수 교수님
- https://developbear.tistory.com/ (김베어의 개발일지)

오류(Fallacy) : 많은 사람들이 공통적으로 잘못 알고 있는 부분

함정(Pitfall) : 흔히들 저지르기 쉬운 실수

 

오류 : 이용률이 낮은 컴퓨터는 전력 소모가 작다.

보통 서버의 CPU이용률은 대부분이 10%와 50% 사이이고 이용률이 100%인 경우는 전체 시간의 1%도 되지 않는다.

그러나 2012년에 가장 좋은 결과가 나오도록 특별히 제작된 컴퓨터도 작업 부하가 겨우 10%일 때 사용 전력이 33%나 된다.


Amdahl의 법칙 (Amdahl's law)

함정 : 컴퓨터의 한 부분만 개선하고 그 개선된 양에 비례해서 전체 성능이 좋아지리라고 기대하는 것

 

자주 생기는 일을 빠르게 하라는 위대한 아이디어에 필연적으로 따라오는

'성능을 개선하려는 노력이 얼마나 효과가 있는지는 그 사건이 얼마나 많이 발생하는지와 관련이 있다'는 사실이

하드웨어 설계자와 소프트웨어 설계자를 괴롭혀왔다.

 

개선 후의 프로그램 실행시간(=성능)은 Amdahl의 법칙을 통해 알 수 있다.

 

Amdahl의 법칙이란,

어떤 개선책으로부터 얻을 수 있는 성능의 증가는 개선된 부분이 얼마나 많이 사용되느냐에 따라 제한된다는 법칙이다.

 

개선 후 실행시간 = 개선에 의해 영향을 받는 실행시간 / 개선의 크기 + 영향을 받지 않는 실행시간

 

 

즉, 성능을 아무리 높여도 해당 개선책에 영향을 받지 않는 영역이 존재하기 때문에 한계가 있다는 것이다.

 

 

(예제 문제)

총 수행시간 100초에서 80초를 곱연산에 사용하는 시스템이 있다고 하자.

 

1. 해당 시스템의 수행 시간을 4배 빠르게 하고 싶다면 곱셈 연산의 속도를 몇 배 증가시켜야 하는가?

 

여기서 곱연산에 영향을 받는 부분은 80초, 곱연산에 영향을 받지 않는 부분은 100-80 = 20초이다.

시스템의 수행 시간을 4배 빠르게 하려면 총 수행시간은 100/4 = 25초가 되어야 할 것이다.

 

Amdahl의 법칙,

'개선 후 실행시간 = 개선에 의해 영향을 받는 실행시간 / 개선의 크기 + 영향을 받지 않는 실행시간'에 따라 식을 작성한다면

25 = 80/SpeedUp + 20

 

SpeedUp = 16이 되어야 하기 때문에, 곱셈 연산의 속도는 16배 빨라져야 하는 것이다.

 

 

2. 그렇다면 해당 시스템의 수행 시간을 5배 이상 빠르게 할 수 있는가?

 

시스템의 수행 시간을 5배 빠르게 하려면 총 수행시간은 100/5 = 20초가 되어야 할 것이다.

 

하지만 Amdahl의 법칙에 의해 식을 작성한다면

20 = 80/SpeedUp + 20, 80/SpeedUp = 0이 되어야 한다.

 

따라서 아무리 성능을 향상시켜도 해당 시스템의 수행 시간을 5배 이상 빠르게 할 수 없다는 한계가 있다.


MIPS (Million Instructions per Second)

함정 : 성능식의 일부분을 성능의 척도로 사용하는 것

 

우리는 앞에서 CPI, 클럭 속도나 명령어 개수 중 하나만 가지고 성능을 예측하는 방법은 위험하다는 것을 배웠다.

빈번하게 발생하는 또 하나의 오류는 세 가지 인자들 중에서 두 개만을 사용하여 성능을 비교하는 것이다.

 

실제로 실행시간 대신 성능 척도로 사용하자고 제안된 거의 모든 대안은 결국 왜곡된 결과나 틀린 해석을 유발하였다.

 

실행 시간 대신 쓸 수 있는 척도로 MIPS(millions instructions per second)가 있다.

프로그램의 실행 속도를 백만 개의 명령어 단위로 나타낸 것이다.

 

MIPS = 명령어 개수 / (실행시간 × 10^6)

 

 

MIPS는 명령어 실행 속도이므로 실행시간의 역수로 성능을 표시한다.

즉, 빠른 컴퓨터일수록 높은 MIPS 값을 갖는다.

 

 

하지만 컴퓨터의 성능을 비교하는 기준으로 MIPS를 사용하는 데에는 다음의 3가지 문제점이 존재한다.

 

1. 단순히 명령어를 실행하는 속도를 나타낼 뿐이지, 그 명령어 하나가 얼마나 많은 일을 수행하는지는 반영하지 못한다.

    즉, 명령어 집합이 다르면 명령어 개수가 달라지기 때문에 단순히 MIPS 값으로만 성능을 비교할 수는 없다.

 

2. 같은 컴퓨터에서도 어떤 프로그램을 실행하느냐에 따라 MIPS 값은 달라진다.

 

3. 많은 명령어를 실행하지만 빠른 명령어를 사용하는 프로그램으로 바꾸는 경우, 컴퓨터 성능과는 반대로 MIPS 값은 작아진다.

 

 

(예시 문제)

 

 

1. MIPS 관점에서는 어떤 코드 순열이 더 빠른가?

 

2. 실행시간 관점에서는 어떤 코드 순열이 더 빠른가?

 

 


MIPS는 절대적인 시간을 나타내는 것이 아니며,

상대적으로 단위시간 당 몇개의 명령어를 많이 실행하느냐를 나타내는 지표이다.

 

MIPS와 CPI는 상대적인 정보가 적기 때문에

이것만으로 절대적인 성능 평가를 하는 것은 불가능하다. (모든 조건이 동일할 때에는 가능)

 

따라서 실행시간만이 흠잡을 데 없이 유효한 성능 척도임을 잊지 말아야한다.

저작자표시 (새창열림)

'컴퓨터 구조 > Ch1. 컴퓨터 추상화 및 관련 기술' 카테고리의 다른 글

7. 현저한 변화 : 단일프로세서에서 멀티프로세서로의 변화  (0) 2023.03.28
6. 전력 장벽  (0) 2023.03.28
[Ch1. 컴퓨터 추상화 및 관련 기술] 5. 성능 *중요*  (2) 2023.03.15
[Ch1. 컴퓨터 추상화 및 관련 기술] 4. 케이스를 열고  (0) 2023.03.15
[Ch1. 컴퓨터 추상화 및 관련 기술] 3. 프로그램 밑의 세계  (0) 2023.03.15
'컴퓨터 구조/Ch1. 컴퓨터 추상화 및 관련 기술' 카테고리의 다른 글
  • 7. 현저한 변화 : 단일프로세서에서 멀티프로세서로의 변화
  • 6. 전력 장벽
  • [Ch1. 컴퓨터 추상화 및 관련 기술] 5. 성능 *중요*
  • [Ch1. 컴퓨터 추상화 및 관련 기술] 4. 케이스를 열고
smile blog
smile blog
건국대 첨단바이오공학부 & 컴퓨터공학부 BT & IT 기술로 희망을 꿈 꿉니당
  • smile blog
    스마일 블로그
    smile blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (837) N
      • 일상 생각들 (4) N
        • 일상 (4) N
      • 학과에 대해 (4)
        • 첨단바이오공학부 (4)
        • 컴퓨터공학부 (0)
      • -------- 프로젝트 -------- (0)
      • [DS] 토이 프로젝트 (1)
      • [Web, Game, XR] 토이 프로젝트 (11)
      • 경진대회 (1)
      • -------- 진로 -------- (0)
      • 생물정보학자 (19)
        • 데이터 과학이란? (0)
        • 되는 방법 (9)
        • 책 추천 (2)
        • 인강 (1)
        • 대학 (2)
        • 회사 (1)
        • 학원 (2)
        • 학회 (2)
      • 디지털 헬스케어 (72)
        • 방법 (8)
        • 생각들 (10)
        • 공부법 (4)
        • 책 추천 (2)
        • 학원 (2)
        • 참고 (2)
        • 대학 (3)
        • 회사 (3)
        • 인강 (2)
        • 게임 엔진들 (1)
        • 게임 프로그래머 개론 (2)
        • 게임 프로그래머 취업 전략 가이드 (7)
        • 취업 서류 (1)
        • 애정하는 게임들 (4)
        • XR 테크니컬 아티스트 (9)
        • 영화, 애니메이션 테크니컬 디렉터 (12)
      • -------- 기초 학문 -------- (0)
      • 생명과학 이야기 (2)
        • 대학 강의 (2)
      • 화학 이야기 (0)
      • 컴퓨터과학 이야기 (0)
      • 통계학 이야기 (0)
      • 수학 이야기 (1)
        • 공학 수학 (1)
      • 영어 이야기 (1)
      • 심리학 이야기 (7)
        • 현대인과 정신건강 (7)
      • -------- 컴퓨터 언어 -------- (0)
      • Python (3)
        • 나도코딩의 파이썬 입문 (1)
        • 파이썬 관련 정보 (1)
      • SQL (0)
      • C 언어 (32)
        • 혼자 공부하는 C언어 요약 (1)
        • [책 정리] 혼자 공부하는 C언어 (31)
      • C++ (33)
        • 명품 C++ 프로그래밍 요약 (1)
        • [책 정리] 명품 C++ 프로그래밍 (27)
        • C++ STL (0)
        • 뇌를 자극하는 C++ STL (5)
      • -------- 생명과학 -------- (0)
      • 생화학 (8)
        • 대학 강의 (8)
      • 분자세포생물학 (6)
        • 대학 강의 (6)
      • 유전자치료공학 (4)
        • 대학 강의 (4)
      • 생명정보학 (7)
        • 대학 강의 (7)
      • 약리학 (2)
        • 대학 강의 (2)
      • -------- 컴퓨터과학 -------- (0)
      • 자료구조와 알고리즘 (8)
        • 자료구조와 알고리즘의 정의 (3)
        • [책 정리] C언어로 쉽게 풀어쓴 자료구조 요약 (1)
        • [인강] 자료구조와 알고리즘 (2)
        • 코딩 테스트 대비하기! (1)
      • 컴퓨터 회로 (0)
      • 컴퓨터 구조 (43)
        • 컴퓨터 구조와 운영체제 요약 (1)
        • ---------------------------------------- (0)
        • [전공 책 정리] 컴퓨터 구조 및 설계 (1)
        • Ch1. 컴퓨터 추상화 및 관련 기술 (8)
        • Ch2. 명령어 : 컴퓨터 언어 (11)
        • Ch3. 컴퓨터 연산 (8)
        • Ch4. 프로세서 (11)
        • Ch5. 메모리 계층구조 (3)
        • Ch6. 병렬 프로세서 : 클라이언트에서 클라우드까지 (0)
      • 시스템 프로그래밍 (15)
        • [책 정리] 시스템 프로그래밍 유닉스 & 리눅스 (0)
        • [인강] 리눅스 시스템 프로그래밍 (2)
        • 리눅스에서 코딩이란? (8)
        • 대학교 강의 정리 (5)
      • 운영체제 (0)
      • 컴퓨터 네트워크 (37)
        • 모두의 네트워크 요약 (1)
        • [책 정리] 모두의 네트워크 (10)
        • ---------------------------------------- (0)
        • [전공 책 정리] 컴퓨터 네트워킹 하향식 접근 8판 (1)
        • Ch1. 컴퓨터 네트워크와 인터넷 (7)
        • Ch2. 애플리케이션 계층 (7)
        • Ch3. 트랜스포트 계층 (8)
        • Ch4. 네트워크 계층 : 데이터 평면 (3)
        • Ch5. 네트워크 계층 : 제어 평면 (0)
        • Ch6. 링크 계층과 근거리 네트워크 (0)
        • Ch7. 무선 및 이동 네트워크 (0)
        • Ch8. 컴퓨터 네트워크 보안 (0)
      • 데이터베이스 (1)
      • -------- 데이터과학 -------- (0)
      • 데이터 사이언스 (8)
        • 인강 (8)
      • 데이터 분석 (2)
        • 인강 (2)
      • 머신러닝 (2)
        • 대학 수업 (2)
      • 인공지능 (11)
        • 대학교 강의 정리 (10)
        • 인공지능 관련 정보 (1)
      • -------- +a -------- (0)
      • Visual Studio Community (7)
        • 설치법 (1)
        • 단축키 (1)
        • 오류 (5)
      • Visual Studio Code (0)
      • 노션 (1)
      • 깃허브 (7)
        • 깃허브 사용법 (5)
        • 유니티, 언리얼 & 깃허브 (1)
        • 깃허브 주의사항 (1)
      • 챗GPT 활용법 (0)
      • 기타 feat. 프로그래밍 (7)
        • 프로그래머로 살아남기 (5)
        • 코딩 vs 프로그래밍 (1)
        • 애플 비전 프로 (1)
      • 메타버스 (5)
      • -------- 예술 -------- (0)
      • 음악 (1)
      • 미술 (0)
      • -------- XR -------- (0)
      • 유니티 이야기 (23)
        • 레트로의 유니티 게임 프로그래밍 에센스 요약 (4)
        • 유니티 관련 정보 (1)
        • 유니티 디버깅 (13)
        • 유니티 인강 (3)
        • 대학교 게임 프로그래밍 강의 (2)
      • 언리얼 이야기 (0)
        • 인생 언리얼 교과서 요약 (0)
      • 컴퓨터 그래픽스 (6)
        • OpenGL (6)
      • 가상현실 & 증강현실 (4)
        • 유니티 vr (4)
      • HCI 와 UI UX (7)
        • [책 정리] HCI 개론 (6)
      • -------- Design -------- (0)
      • 캐릭터 (1)
        • 모델링 (0)
        • 리깅 (1)
      • 포토샵 (3)
      • 3ds Max (7)
      • Maya (9)
        • 블로그 (1)
        • 인강 (6)
        • 대학교 (2)
      • Blender (14)
        • 책 (1)
        • 인강 (7)
        • 기타 (3)
        • 대학교 (3)
      • 아트 작업물들 (2)
      • 에셋 사이트 (1)
      • -------- 건강관리 -------- (0)
      • 건강관리 ft. 정현 (12)
        • 목 디스크 (2)
        • 눈 관리 (2)
        • 일상생활 습관 (6)
        • 일상생활 꿀팁 (2)
        • 사무직 꿀팁 (0)
      • 헬스의 정석 ft. 정현 (28)
        • 헬스와 건강 (8)
        • 헬스 구체화 정보 (6)
        • 헬스 유튜버 (1)
        • 헬스 서적 (1)
        • 도전 바디프로필! (11)
        • 헬스장 패션 (1)
      • -------- etc -------- (0)
      • 진로 관련 잡다한 글들 (34)
        • 진도율 (9)
        • 진로 관련 글들 (15)
        • 학교 강의 관련 글들 (10)
      • 인생 꿀 Tip (23)
        • 컴퓨터 초기 설정 (9)
        • 원격 데스크톱 (1)
        • 노트북 발열 (1)
        • 전자기기 (2)
        • 중고기기 팔기 (1)
        • 아이패드 필기 어플 (1)
        • 에어팟 (1)
        • 커피 (1)
        • 맥북 (1)
        • lg 그램 (1)
        • 검색엔진에서 내 티스토리 검색 (1)
        • hELLO 다크 모드 없애기 (1)
        • 인터넷 연결 문제 (1)
        • 키보드 문제 해결 (1)
      • 유튜브 (3)
      • 청춘 그리고 추억 (1)
      • 인생 계획표 (2)
        • 2024년 2학기 (1)
        • 2024년 여름방학 (0)
        • 2024년 1학기 (0)
        • 2023년 겨울방학 (1)
      • 다양한 글들 (98)
        • C++ STL (6)
        • Win32 API (24)
        • PushPush 게임 (13)
        • 컴퓨터구조 (1)
        • 자료구조와 알고리즘 (50)
        • 게임의 정의 (3)
        • 영상 회사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Dream
    • 코딩을 시작한 이유
    • 나를 소개합니다!
    • 블로그 공부법
    • IT & 가치 있는 일들
  • 인기 글

  • 태그

    컴퓨터 네트워크
    생명공학
    첨단바이오공학부
    인공지능
    코딩
    생명과학
    리눅스
    의생명정보알고리즘
    unity
    C++
    스택
    의생명공학과
    생물정보학
    명령어
    포인터
    의생명공학
    건국대
    심리학
    배열
    함수
    C언어
    알고리즘
    자료구조
    블렌더
    유니티
    연산자
    AI
    데이터사이언스
    데이터과학
    컴퓨터구조
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
smile blog
오류 및 함정
상단으로

티스토리툴바