+ 한국항공대학교 길현영 교수님의 컴퓨터구조론 과목 내용을 정리한 글입니다.
컴퓨터의 성능 정의
성능: 기계 따위가 지닌 성질이나 기능.
고성능: 뛰어난 성질/기능, 저성능: 낮은 성질/
기능
=> 구매 시 선택의 기준이 된다.
ex) 민간 항공사의 여객기 구매 기준: 탑승인원, 비행거리, 속도
컴퓨터의 성능은 컴퓨터 기기 선택의 요소이다.
ex) 속도, 가격, 외양, 전력소모, 발영, 유지보수 비용 등
그 중 속도는 가장 많이 보는 객관적인 요소이다.
따라서 이제부터 컴퓨터의 성능 = 컴퓨터의 속도로 간주한다.
속도로 봐도 컴퓨터 성능의 정의는 사용자에 따라 달라진다.
ex) 한 번에 한 잔을 5분 만에 뽑아내는 커피머신 A vs 한 번에 두 잔을 7분 만에 뽑아내는 커피머신 B
개인 관점: 단일 프로그램 실행시간 => 응답시간 (Response Time)
동의어: 반응시간, 실행시간, 수행시간, 지연시간 소요시간
웹 서버 관리자(카페 사장) 관점: 주어진 시간 내 높은 작업 수행량 => 처리율(Throughput)
(여러가지 요청 처리)
이제부터 컴퓨터 성능 = 응답시간으로 정의한다.
그러나, 응답시간과 처리율은 상호연계관계임을 잊지 말아야한다.
(응답시간 단축 => 처리량 개선, but 처리량 개선은 응답시간에 영향을 미치지 못한다.)
ex) 컴퓨터의 프로세서의 속도를 더 빠르게 개선, 컴퓨터 시스템에 프로세서 한 개 추가
응답시간이란?
- 하나의 프로그램을 처리하는데 소요되는 시간
- 시스템이나 실행 단위에 입력이 주어지고 시스템이 반응하기까지의 걸린 시간
- 프로세서(CPU)의 처리시간 뿐만 아니라, 입출력시간, OS 수행시간 등도 포함한다.
- Time Sharing System의 경우, 다른 프로그램의 실행시간도 포함한다.
이제부터 컴퓨터 성능 = CPU 실행시간으로 정의한다.
- CPU 실행시간: CPU가 하나의 프로그램을 수행하는 데 순수하게 사용된 시간이다.
컴퓨터의 성능이 좋다(높다) = CPU 실행시간이 짧다. (반비례 관계)
=> 성능이 n배 향상되었다. -> CPU실행시간이 1 / n배 짧아졌다.
ex) 두 컴퓨터 x와 y에 대해, x의 성능이 y의 성능보다 좋다면
성능 비교 정량화 ex) 컴퓨터 M2는 M1보다 성능이 n배 좋다.
=> 컴퓨터 M1에 대한 컴퓨터 M2의 성능(향상)비율 (performance ratio)는 n이다.
암달의 법칙
시스템의 일부분을 개선하는 경우, 전체 시스템에서 얻을 수 있는 최대 성능 향상을 구할 때 사용한다.
(시스템 성능 향상의 한계를 지적할 때 사용)
시스템 병렬화 같은 방법으로 도모한 성능 향상은 시스템의 순차적 부분에 필요한 시간에 의해 제한한다.
예제) 하나의 프로그램이 싱글 코어 프로세서를 사용하면 20시간이 소요된다.
1시간 소요되는 부분은 병령화할 수 없고 (한계), 19시간 소요되는 부분은 (무한)병렬화할 수 있다면 성능 향상은?
(단, 병렬화된 부분을 처리하는 데 사용되는 프로세서의 수는 제한이 없다고 가정한다.)
=> 20배
[해설] 무한 개의 프로세서를 이용하면 병렬화 가능한 시간은 최소시간(0)으로 줄일 수 있으나, 병렬화가 불가능한 1시간은 성능향상과 관계없이 1시간이 걸린다.
M1은 성능 향상 전 기계, M2는 일부 성능 향상 후 기계
시스템의 일부분 f는 병렬화, 또는 하드웨어의 개선으로 성능을 n배 향상하고, 나머지 부분 (1 - f)는 그대로 두었다고 가정하자.
m은 m1의 실행 시간 (성능 향상 전 기계의 실행 시간)
암달의 법칙 문제 풀이
문제 1
부동소수점 연산의 수행이 50%를 차지하는 프로그램이 있을 때, 다음 물음에 답하라
1 - 1. 부동소수점 연산을 위해 하드웨어를 2배 빠르게 만든다면 수행시간이 얼마나 향상 되는가?
=> 시스템 전체 성능 향상 s를 구하는 식에 n = 2, f = 1/2을 대입 => s = 1.33
1 - 2. 이 프로그램을 2배 빠르게 수행하려면 부동소수점 연산을 위한 하드웨어를 얼마나 개선해야 하는가?
=> 시스템 전체 성능 향상 s를 구하는 식에 s = 2, f = 1/2을 대입 => n = ∞ (무한)
(방정식이 풀리지 않는다면, 무한을 의심하자!!)
+ 사실 n을 무한이 증가시켜도 2배가 될 수 없고, 2배에 가까워진다. (성능 향상의 한계)
CPU 성능 (CPU 실행시간) 분석
Clock (Tick-Tock): 명령어 수행시간 단위
대부분의 현대 컴퓨터는 클락(Clock)을 갖고 있다.
- 컴퓨터의 Clock은 regular periodic waveform의 전기 신호이다.
- Clock을 을 통해 CPU는 정해진 시간에 맞춰 프로그램을 수행한다.
- 시스템 내 모든 이벤트들은 이 Clock 신호에 따라 제어되고 synchronize된다.
=> 여러가지 부품들이 언제 움직여야 하는지를 정한다. (CPU가 지휘)
- Clock 속도가 빠르면, 정해진 기간동안 CPU 내부 일을 많이 할 수 있다.
클록 속도 or 클록률 (Clock rate or speed)
=> 1초 당 0과 1의 신호가 한 번씩 실행되는 주기가 몇 번 반복했는지 (cycles per second)
단위로 Hz를 사용한다. (주기적으로 반복되는 모든 현상에 일반적으로 사용 가능)
1Hz = 1번/초, 1KHz = 10^3번/초, 1MHz = 10^6번/초, 1GHz = 10^9번/초 진동한다.
사이클 시간 (Clock cycle)
=> 0과 1의 신호가 한 번 실행되는데 몇 초가 걸렸는지 (= 1 / Clock rate)
단위로 sec를 사용한다. (10^-9 sec = 1 ns)
=> 클록 속도와 사이클 시간은 반비례(역수)이다.
CPU 성능에 영향을 주는 요소
- CPU 실행시간: C × 명령어당 평균 시간 또는 명령어 개수 × 각 명령어당 실행 시간을 모두 더한 시간
1. 하나의 프로그램에 포함된 명령어의 개수 (C) - 양
해야할 일의 크기로, 컴퓨터에게는 프로그램의 크기를 의미한다.
일반적으로 수행할 명령어의 개수가 많으면 오래 걸린다.
2. 하나의 명령어를 실행할 때 필요한 클락 사이클 수 (CPI, Cycle Per Instruction) - 컴퓨터 시점의 시간
명령어마다 다르기 때문에, 각 명령어당 CPI를 사용하거나 평균 CPI로 사용한다.
=> 하나의 명령어를 실행할 때, 0과 1의 신호가 반복되는 평균 개수
3. 하나의 클락 사이클에 소요되는 시간 (Clock Cycle) - 인간의 시간으로 바꾸는 과정
=> 어느 하나의 요소도 독립적으로 성능을 결정할 수 없다.
(서로 연관되어있다. 한 가지 요소를 변경하면 다른 요소가 변경될 수 있다.)
=> 문제 상황에서 Clock Cycle이 주어질 때도, Clock rate가 주어질 수도 있다!
=> 단위를 통해 식을 증명할 수 있다.
=> 문제 상황에서 프로그램 / 초가 주어질 수도 있다!
성능 관련요소에 영향을 미치는 요인들
컴퓨터 성능에 대한 완벽하고 믿을 만한 척도는 CPU 실행시간이다.
명령어 개수만 줄이면 되는가?, 평균 CPI만 줄이면 되는가?, 사이클 시간만 줄이면 되는가?
=> X
1. 실행되는 명령어 개수는 알고리즘과 명령어 집합 구조에 영향을 받는다.
알고리즘이 간결하고 효율적이면, 수행할 명령어 수가 감소한다.
ex) 정렬 알고리즘들, 길찾기 알고리즘
하나의 명령어가 수행하는 일이 많으면, 명령어 수가 감소한다. 그러나 CPI가 증가할 수 있다.
=> 코드를 짧게 한다고 해서 컴퓨터가 하는 일이 달라지지 않을 수 있다.
ex) 덧셈 명령어만 존재하는 기계 vs 덧셈과 곱셈 명령어(덧셈 여러 번 사용)가 존재하는 기계 => 성능은 같다.
2. 평균 CPI 성능은 알고리즘, 명령어 집합 구조와 컴퓨터 구성에 영향을 받는다.
단순한 명령어는 복잡하고 강력한 명령어보다 CPI가 감소한다. 그러나 명령어 수가 증가할 수 있다.
ex) 난파 선박에서 보내는 모스부호(CPI ↓, 명령어 수 ↑) vs 한글 문자 (CPI ↑, 명령어 수 ↓)
CPU 내 연산 병렬화 등 효율적 컴퓨터 구성은 평균 CPI가 감소한다.
3. 클럭 사이클 시간은 명령어 집합 구조, 컴퓨터 구성 및 개발 수준에 영향을 받는다.
복잡한 명령어들은 클럭 사이클 시간 증가를 유도한다.
CPU 내 데이터 경로를 짧게 하거나 연산 병렬화시키는 것은 클럭 사이클 시간을 감소시킨다.
더 빠른 회로 기술이나 패키징 밀도를 높이면, 클럭 사이클 시간을 감소시킨다.
즉, 각 요소는 서로 독립적이지 않다.
벤치마크와 성능 평가 척도
벤치마크
성능을 평가하기 위하여 작업 부하로 선택된 프로그램의 모음이다.
ex) SPEC 벤치마크 (대표적): 비영리단체(중립적)인 SPEC에서 개발하여 제공하는 벤치마크
- 계산 집약적인 작업 부하를 위한 SPEC CPU2006, 메일 서버를 위한 SPECmail2009 등
평가 척도: CPU를 위한 CPI, 클록 속도, MIPS, MFLOPS 등 (문제 출제)
MIPS: 단위 시간(1초)에 수행한 명령어 개수를 100만으로 나눈 값
MFLOPS: 1초에 실행한 부동소수점 연산의 수를 100만으로 나눈 값
이 외에도 CPU/메모리시스템 등의 성능 평가 척도 (SPECratio), 기호 조작 및 논리 추론 능력 기반의 AI 컴퓨터의 성능 평가 척도 (KLIPS, Kilo Logical Inferences per Second) 등이 있다.
그러나 어떤 성능 적도도 컴퓨터 시스템의 공급자에 의해 왜곡이 가능하다.
'Computer Science > Computer Architecture' 카테고리의 다른 글
[Computer Architecture] 명령어 집합 (1) (0) | 2023.09.22 |
---|---|
[Computer Architecture] 명령어 집합 구조 (0) | 2023.09.18 |
[Computer Architecture] 컴퓨터의 발전 (종류) (2) | 2023.09.09 |
[Computer Architecture] 컴퓨터의 발전 (역사) (2) | 2023.09.04 |
[Computer Architecture] 컴퓨터 정보의 표현과 저장 (2) | 2023.09.04 |