IT 지식

프로세서는 무조건 빠른 게 좋을까?

OIIUOI 2022. 8. 6. 01:21

프로세서는 인출, 해석, 실행 사이클을 계속 반복 수행한다. 우선 메모리에서 다음에 처리할 명령어를 인출한다. 보통은 다음 메모리 위치에 저장된 명령어지만 GOTO나 IFZERO가 명시하는 위치에 있는 명령어일 수도 있다. 이어서 가져온 명령어를 해석한다. 즉, 명령어가 무슨 일을 하는지 파악하고 명령어를 수행하는 데 필요한 모든 준비를 마치는 것을 의미한다. 다음으로는 명령어를 실행한다. 명령어 실행은 메모리에서 정보를 가져오고, 산술 연산이나 논리 연산을 수행하며, 그 결과를 저장하는 일련의 작업을 명령어에 따라 적절하게 조합함으로써 이루어진다. 그러고 나서 인출 단계로 되돌아간다. 실제 프로세서의 인출, 해석, 실행 사이클에는 전체 과정이 빨리 돌아가게 하는 정교한 메커니즘이 사용되지만, 이 사이클의 핵심도 루프에 불과하다

 실제 컴퓨터에는 모형 컴퓨터보다 많은 명령어가 있지만, 기본 명령어의 유형은 같다. 그러나 실제 컴퓨터에는 데이터를 옮기고 산술 연산을 수행하거나 다양한 크기와 종류의 수로 연산하고, 비교 또는 분기하고 컴퓨터의 나머지 부분을 제어하는 방법이 더 많다. 일반적으로 프로세서에는 수십 개에서 수백 개의 명령어가 있고, 명령어와 데이터는 여러 개의 메모리 위치를 차지한다. 실제 프로세서에는 누산기가 여러 개 있어서 초고속 메모리 역할을 하는 누산기에 중간 결과를 하나 이상 담을 수 있다.

 실제 프로그램은 앞서 나왔던 모형 컴퓨터 예제에 비하면 방대하며, 흔히 명령어 수백만 개로 이루어진다. 2부에서 그런 프로그램이 어떻게 작성되는지 살펴볼 것이다

 컴퓨터 아키텍처는 프로ㅔ서 설계와 더불어 프로세서와 컴퓨터 나머지 부분 간의 연결 방식 설계를 다루는 분야다. 대학에서 컴퓨터 아키텍처는 흔히 컴퓨터 과학과 전기 공학 및 전자 공학의 경계에 있는 하위 분야다. 

 컴퓨터 아키텍처 분야의 주요 관심사 중 하나는 명령어 집합이다. 명령어 집합이란 프로세서가 제공하는 명령어 레퍼토리를 뜻한다. 폭넓고 다양한 종류의 계산이 처리되도록 많은 수의 명령어가 있는 것이 좋을까? 반대로 작성하기 쉽고 더 빨리 실행되도록 더 적은 수의 명령어가 있는 것이 좋을까? 컴퓨터 아키텍처는 기능성, 속도, 복잡도, 전력 소모 정도, 프로그램 가능성 등 상충하는 요구 간 복잡한 트레이드오프를 수반한다. 폰 노이만의 말을 다시 인용해 보자. "일반적으로 산술 장치의 내부 자원 운영은 빠른 연산 속도에 대한 욕구와 (중략) 기계의 단순성 또는 저비용에 대한 욕구 사이의 절충으로 결정된다."

 프로세서는 메모리를 비롯한 컴퓨터의 나머지 부분과 어떻게 연결되어 있을까? 프로세서 속도는 매우 빨라서 명령어 한 개를 1나노초보다 훨씬 더 짧은 시간 내에 수행한다. 그에 비해 메모리는 몹시 느리다. 데이터와 명령어를 메모리에서 인출하는 데 10-20 나노초 정도 걸린다. 물론 절대적으로는 빠르지만, 프로세서 관점에서는 느리다. 데이터가 도착하기를 기다릴 필요가 없다면 프로세서는 명령어 수십 개를 실행하고도 남을 시간이기 때문이다.

 현대 컴퓨터 아키텍처는 카시라는 고속 메모리를 몇 개 사용한다. 캐시는 프로세서와 메모리 사이에 있고 최근 사용된 명령어와 데이터를 담고 있다. 캐시에서 찾을 수 있는 정보에 접근하는 편이 메모리에서 정보가 오기를 기다리는 것보다 빠르다. 

 

컴퓨터 설계자들은 프로세서가 더 빨리 작동하도록 만들기 위해 여러 가지 아키텍처 기법을 동원한다. 인출과 실행 단계가 겹치도록 프로세서를 설계해서 명령어 여러 개가 다양한 단계에 걸쳐 진행되도록 만들 수 있다. 이를 파이프라이닝이라고 하며, 자동차가 조립 라인을 따라 이동하는 것과 개념적으로 비슷하다. 명령어 한 개가 완료되는 데는 여전히 같은 시간이 걸리지만, 여러 개의 명령어를 동시에 처리하므로 전체적인 처리 속도는 빨라진다. 또 다른 기법은 명령어들이 서로 간섭하거나 의존하지 않는다면 다수의 명령어를 병렬적으로 실행하는 방법이다. 차량 생산에 비유하자면 병렬 조립 라인을 사용하는 것과 비슷하다. 명령어들이 상호 작용하지 않는다면 가끔 명령어의 순서를 바꿔 실행하는 일도 가능하다.

 그 밖에도 프로세서 여러 개가 동시에 작업하도록 하는 기법도 있다. 오늘날 노트북과 휴대전화에서 표준으로 사용되는 기술이다. 2015년에 제조된 내 컴퓨터에 있는 인텔 프로세서는 단일 집적회로 칩에 코어가 두 개 있지만, 요즘은 단일 칩에 더 많은 프로세서 코어를 담거나, 컴퓨터마다 두 개 이상의 칩을 넣는 경향이 크다. 집적 회로의 선폭이 작아질수록 칩에 트랜지스터를 더 많이 넣을 수 있는데, 보통 더 많은 코어와 캐시 메모리를 넣는 데 사용된다. 개별 프로세서는 더 이상 빨라지지 않지만, 더 많은 코어를 쓸 수 있어서 실질적인 연산 속도는 꾸준히 증가하고 있다.

 사용 분야에 따라 프로세서를 설계할 때 다양한 종류의 트레이드오프가 이루어진다. 오랜 기간 동안 프로세서는 전력과 물리적 공간이 비교적 넉넉한 데스크톱 컴퓨터에서 주로 사용되어 왔다. 전력이 충분하고 팬으로 열을 분산시킬 방법이 있었기에, 설계자들은 프로세서가 가능한 한 빨리 작동하도록 만드는 데 집중할 수 있었다. 하지만 노트북이 등장하면서 트레이드오프의 양상이 크게 바뀌었다. 물리적 공간이 협소한 데다가, 전원이 연결되지 않은 노트북은 무겁고 비싼 배터리에서 전력을 공급받아야 하기 때문이다. 다른 조건이 같다는 가정하에 노트북용 프로세서는 데스크톱용 프로세서보다 더 느리고 전력을 더 적게 쓰는 경향이 있다.

 휴대전화, 태블릿 PC와 기타 휴대성 높은 기기는 크기, 무게, 전력에 제약이 훨씬 심히다. 여기서는 기존 설계를 약간 수정하는 것으로는 불충분하다. 데스크톱과 노트북용 프로세서에는 인텔과 그 주된 경쟁자인 AMD가 지배적인 공급자이지만, 휴대전화와 태블릿 PC는 대부분 'ARM'이라는 프로세서 설계를 사용한다. ARM 프로세서 설계는 전력을 적게 사용하도록 특별히 설계된 방식으로, 영국 회사인 Arm 홀딩스에서 라이선스를 관리한다.

 

 프로세서 간에 속도를 비교하는 것은 어려울 뿐만 아니라 그다지 의미도 없다. 산술 연산 같은 기본적인 작업조차 일대일로 비교하기 어려울 만큼 서로 다른 방식으로 처리되기도 한다. 예를 들어, 어떤 프로세서는 두 수를 더하고 다른 위치에 결과를 저장하기 위해 모형 프로세서처럼 세 개의 명령어가 필요하다. 다른 프로세서는 두 개의 명령어만 필요하고, 또 다른 프로세서는 그 연산을 단일 명령어로 처리한다. 하나의 프로세서가 몇 개의 명령어를 병렬적으로 처리하거나 겹쳐서 실행함으로써 명령어 처리가 단계적으로 진행되도록 할 수도 있을 것이다. 프로세서가 전력 소모를 낮추고자 빠른 실행 속도를 포기하기도 하며, 심지어 전력이 배터리에서 공급되는지 아닌지에 따라 속도를 동적으로 조정하기도 한다. 일부 프로세서는 고속 코어와 저속 코어의 조합으로 구성되며, 코어 유형별로 서로 다른 작업을 할당하기도 한다. 그러므로 어떤 프로세서가 다른 것보다 '빠르다'는 주장은 조심스럽게 받아들여야 한다. 요구사항에 따라 차이가 있을 수 있다.

 

'IT 지식' 카테고리의 다른 글

소프트웨어와 알고리즘과 초콜릿 케이크 레시피  (0) 2022.08.09
캐시가 뭔가요?  (0) 2022.08.06
HDD와 SSD의 차이  (0) 2022.08.04
프로세서 속도와 심장 박동수  (0) 2022.08.04
컴퓨터의 논리와 구조  (0) 2022.07.10