멀티 코어(multi-core) 프로세서의 원리

 

10억 개 정도의 트랜지스터 뒤에서 잘 동작하는 마이크로프로세서만 있으면 칩에 넣을 수 있는 가장 어려운 소프트웨어라 할지라도 그 요구사항을 기대 이상으로 만족시켜 주리라 생각할 것이다. 그러나 컴퓨팅에서 충분하다라는 것은 없다. 따라서 프로세서에 트랜지스터를 더 넣기가 어려울 경우에는 컴퓨터에 프로세서를 더 많이 설치하면 된다. 멀티코어 프로세서는 두 대의 컴퓨터를 서로 연결해 메모리와 전력, 입력/출력을 같이 사용하는 것과 같다.

2~10개 사이의 프로세서 코어가 있는 장비가 표준 품목이며 그 수는 점점 더 늘어날 것이다.

 

디자인은 다르지만 전형적인 쿼드 코어(quad-core)프로세서는 네 개의 실행 코어(execution core)를 하 나의 다이(die)나 실리콘 칩에 결합한다.

다른 디자인에서는 코어를 두 개의 다이에 분산시키기도 한다. 어떤 방식이든 코어는 모든 마이크로프로세서의 핵심이자 소프트웨어의 명령 실행을 많이 처리하는 부분이다.

 

멀티프로세서 컴퓨터를 사용해 빠른 속도를 비롯한 여러 장점을 얻으려면 운영체제가 컴퓨터에 멀티 코어 프로세서가 있는지 인식하고 이를 구별해낼 줄 알며, 하이퍼스레딩(hyper-threading)을 처리할 수 있어야 한다. 마찬가지로 소프트웨어 응용 프로그램, 게임, 유틸리티는 재작성해야만 멀티 코어를 사용할 수 있다.

이러한 소프트웨어를 스레드(thread) 또는 멀티스레드(multi-thread)라고 한다. 예를 들어 4자리 숫자로 된 열을 추가하는 소프트웨어는 1의 자릿수, 10의 자릿수, 100의 자릿수, 1000의 자릿수를 추가하는 4개의 스레드로 작업을 나눌 수 있다.

하위에 속하는 작업은 다른 코어로 할당된다.

 

하위 작업이 코어를 끝내면 운영체제는 스레드를 하나로 합쳐서 실행에 필요한 코어 중 하나로 보낸다.

 

응용 소프트웨어 프로그램이 멀티 코어에 준비되어 있지 않더라도 운영체제는 멀티 코어를 활용할 수 있다. 소프트웨어를 작동시킬 코어를 선택하고 코어와 프로그램 사이에 친화도를 설정한다. 그런 다음 남아 있는 코어와 작업 사이에도 친화도를 만든다. 두 번째 코어는 디스크 최적화와 같은 백그라운드 작업을 처리할 수 있고, 세 번째 코어는 다운로드를 관리하며, 네 번째 코어는 인터넷에서 재생되는 비디오를 렌더링할 수도 있다. 작업 시간이나 종료 시각은 다른 코어의 진행에 전혀 영향을 받지 않는다.

 

운영체제는 다른 코어로 전달되는 요구사항과 더불어 해당 작업을 시간차 대기열(time-staggered queue)에 넣는다. 각각의 작업은 컴퓨터의 서로 다른 클록에서 해당 코어로 들어가므로 서로 충돌하거나 접근하는 지역에서 정체될 가능성이 작다.

 

각각의 프로세서 코어는 완벽히 구별되지 않는다

온다이(on-die) 그래픽 프로세서, 메모리 캐시 등과 같이 리소스의 접근을 공유할 수 있다

운영체제는 각각의 코어가 리소스에 접근하는 방법을 정할 수 있다

예를 들어, 코어 하나만 동작할 경우 운영체제는 이 코어로 더 많은 공유 캐시를 할당한다.


+ Recent posts