CPU(Central Processing Unit)란?
CPU는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인 컴퓨터의 제어 장치 혹은 그 기능을 내장한 칩이다. CPU는 외부에서 정보를 입력받아 기억하고 컴퓨터 프로그램의 명령어를 해석하여 연산하고 외부로 출력하는 역할을 한다. 쉽게 말해 컴퓨터의 두뇌와 같은 역할을 한다.
CPU는 기계어로 쓰인 컴퓨터 프로그램의 명령어를 해석하여 실행한다. CPU의 기본 구성은 명령어를 저장하는 역할을 하는 프로세서 레지스터, 연산을 담당하는 ALU, 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부와 내부 버스 등이 있다.
CPU의 성능은 프로그램 로드 속도와 프로그램이 얼마나 원활하게 실행되는지에 큰 영향을 미친다. 이러한 CPU의 성능을 측정하는 방법은 몇 가지 있는데, 그 중 하나를 알아보자.
CPU Time
CPU는 매초 다양한 프로그램의 많은 명령을 처리한다. Clock Rate는 초당 실행하는 사이클 수를 GHz(기가헤르츠) 단위로 측정한 것이다. 여기서 "사이클"은 기술적으로는 내부 발진기에 의해 동기화된 펄스를 의미하지만, 여기서는 CPU 속도를 이해하는데 도움이 되는 기본적인 단위로 생각하자.
Clock Rate가 3.2GHz인 CPU는 초당 32억 번의 사이클을 실행할 수 있다. 하나의 클럭 사이클에서 다수의 명령이 완료될 수도 있고, 하나의 명령이 여러 클럭 사이클에 걸쳐 처리될 수도 있기 때문에, Clock Rate만을 이용해 CPU의 성능을 판단할 수 없다. 일반적으로 Clock Rate가 높을 수록 CPU 속도가 빠르지만 Clock Rate는 동일한 CPU 브랜드와 세대에서 비교하는 것이 좋다.
CPU Time = Clock Cycles * Clock Cycle Time
CPU에게 주어진 일을 처리하는데 걸리는 시간을 CPU Time이라고 한다. 이러한 CPU Time이 작을 수록 CPU의 성능이 좋은 것으로 판단할 수 있다. CPU Time을 구하는 공식은 위와 같다. 이를 쉽게 설명하기 위해 어떤 계단을 전부 오르는 데 걸리는 시간을 CPU Time이라고 하자. 이때 Clock Cycles는 계단을 오른 횟수 , Clock Cycle Time은 계단을 한 번 오를 때 걸리는 시간이다.
예를 들어 100개의 계단을 10번만에 올랐는데, 한 번 오를 때 2초가 걸렸다고 하자. 총 걸린 시간은 20초이다. 이때 계단을 한 번 오를 때 10개씩 오르게 된다.
계단을 빠르게 오르기 위해서는 어떤 게 필요할까? 계단을 오르는 횟수는 줄이고, 계단을 한 번 오르는 시간을 줄여야 한다. 즉, Clock Cycles와 Clock Cycle Time을 모두 줄여야 한다. 하지만 이는 쉽지 않은 일이다.
예를 들어 100개의 계단을 이제는 5번 만에 오르고, 한 번 오를 때 1초가 걸리도록 노력한다고 해보자. 이제 계단을 한 번 오를 때 20개씩 올라야 하는데, 예전(2초) 보다 더 빠르게 오를 수가 있을까?
즉, Clock Cycles와 Clock Cycle Time은 Trade-Off가 존재한다. 어느 하나를 줄이면 어느 하나는 늘어나게 되는 것이다.
(참고로 위 예시는 이해를 돕기 위한 것이지, 정확한 예시는 아니다)
IC(Instruction Count)와 CPI (Cycles Per Instruction)
Clock Cycles = Instruction Count * Cycles Per Instruction
Clock Cycles는 IC(명령어의 개수)*CPI(명령어 당 cycle 개수)로 나타낼 수 있다. 즉, 명령이 많고 명령 하나 당 필요한 Cycle이 많을 수록 Clock Cycle이 커지게 된다.
위 공식을 CPU Time에 대입하면,
CPU Time = Clock Cycles * Clock Cycle Time
CPU Time = IC * CPI * Clock Cycle Time
위와 같다. 따라서 CPU Time은 명령을 줄이고, 명령 하나 당 필요한 Cycle을 줄이고, Cycle Time을 줄이면 작아진다. 물론 쉬운 일이 아니다.
CPU Time과 Clock Rate
Clock Rate = Clock Cycles/CPU Time
Clock Rate는 위와 같은 공식을 가지고 있다. 이를 이용해 여러 가지 변형이 가능하다.
Clock Cycles = CPU Time * Clock Rate
CPU Time = Clock Cycles/Clock Rate
CPU Time = (IC * CPI)/Clock Rate
위와 같이 다양하게 응용이 가능하다.
참고
https://www.intel.co.kr/content/www/kr/ko/gaming/resources/cpu-clock-speed.html
'Computer Science > [컴퓨터 아키텍처]' 카테고리의 다른 글
[컴퓨터 아키텍처] 부동소수점(Floating Point)이란? (0) | 2022.03.24 |
---|---|
[컴퓨터 아키텍처] 리틀 엔디안(Little-endian) 과 빅 엔디안(Big -endian)이란? (0) | 2022.03.23 |
[컴퓨터 아키텍처] CISC란? RISC란? CISC와 RISC 차이 (0) | 2022.03.22 |