전문가칼럼

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

하이퍼쓰레딩(Hyper-Threading)

전문가칼럼
DBMS별 분류
Etc
작성자
dataonair
작성일
2002-04-01 00:00
조회
13620





하이퍼쓰레딩(Hyper-Threading)

이성호/인텔코리아 인터넷솔루션그룹 팀장


인텔은 최근 인텔 제온 칩 출시와 함께 IA-32 아키텍처의 새로운 기술인 하이퍼쓰레딩(Hyper-Threading)을 선보였다. 이 기술은 멀티프로세서(MP) 시스템 운영이 가능한 운영체제에서 멀티쓰레드 애플리케이션을 실행할 때 IA-32 프로세서의 성능을 향상시키는데 중요한 역할을 한다.

오늘날 시스템에서 사용되는 거의 모든 운영체제는 수행해야 할 작업을 프로세스와 쓰레드로 분할해 독립적으로 스케줄하고 프로세서로 보내 실행되도록 한다. DB엔진, 과학용 계산 프로그램, 엔지니어링 워크스테이션 툴, 멀티미디어 프로그램과 같은 고성능 애플리케이션에서도 이와 같은 작업 분할이 이뤄진다. 운영체제뿐만 아니라 애플리케이션도 처리 능력 향상을 위해 DP(Dual Processor) 혹은 MP(Multi Processor) 환경에서 실행되도록 설계돼 있다. 이 경우 대칭형 멀티프로세싱(SMP)을 이용, 프로세스와 쓰레드가 여러 개의 프로세서 상에서 실행되도록 보내진다.

인텔이 선보인 하이퍼쓰레딩 테크놀로지는 최신 운영체제, 서버 및 워크스테이션용 애플리케이션들의 멀티 쓰레드 특성을 활용해 자사 넷버스트 마이크로 아키텍처 상의 가용 실행 자원을 효과적으로 이용함으로써 IA-32 프로세서 성능을 향상시키도록 설계됐다.

하이퍼쓰레딩 테크놀로지를 사용할 경우 하나의 물리적 프로세서가 2개의 서로 다른 코드 스트림(쓰레드)을 동시에 실행할 수 있다. 구조적으로 하이퍼쓰레딩 테크놀로지가 적용된 하나의 IA-32 프로세서는 마치 2개의 논리적 프로세서로 구성된 것처럼 작동하며 2개의 논리적 프로세서가 각각 하나의 완전한 IA-32 프로세서 구조를 갖는다. 컴퓨터가 초기화되면 각각의 논리적 프로세서는 동일 칩 상의 다른 논리적 프로세서와 상관없이 개별적으로 중단될 수 있고 특정 쓰레드를 실행하라는 명령을 수행할 수도 있다.

최근 발표된 인텔 제온 프로세서처럼 물리적으로 2개의 인텔 프로세서를 사용하는 기존의 듀얼프로세서(DP) 시스템과 달리 하이퍼쓰레딩 테크놀로지를 사용하는 프로세서 안의 2개의 논리적 프로세서들은 실행 엔진, 캐시, 시스템 버스 인터페이스, 펌웨어 등을 포함하는 프로세서 코어의 실행 자원을 공유한다.

하이퍼쓰레딩 테크놀로지는 운영체제 및 고성능 애플리케이션에서 발견되는 프로세스와 쓰레드 레벨의 병렬 구조를 활용한다. 이러한 구성은 하나의 쓰레드가 한개의 논리 프로세서에서 실행될 수 있도록 한다. 양쪽 쓰레드로부터 받은 명령은 프로세서 코어에서 실행되도록 동시에 보내진다. 프로세서 코어는 2개의 쓰레드를 동시에 실행하는데 이때 하나의 클럭 주기 동안 최대한 많은 명령을 실행할 수 있도록 명령을 비순차적으로 스케줄링 한다(out-of-order instruction scheduling).

이처럼 하이퍼쓰레딩 테크놀로지가 명령의 처리량을 증가시키는 것은 △인텔 넷버스트 마이크로 아키텍처 디자인과 △전형적인 멀티쓰레드 코드에서 보이는 IA-32 명령어 혼용 형태 때문이다.

eceo200204007_01.gif

<그림1> 기존 이중 프로세서 시스템 구성도

eceo200204007_02.gif

<그림2> 하이퍼쓰레디 시스템 구성도


멀티쓰레드 코드의 병렬 처리 기능

하이퍼쓰레딩 테크놀로지에 쓰인 인텔 넷버스트 마이크로 아키텍처는 단일 명령 스트림을 실행할 경우 최적의 성능이 제공되도록 설계됐다. 하지만 아무리 최적화된 코드라 해도 각 클럭 주기 동안 가용 실행 유닛이 모두 사용되는 것은 아니다. IA-32 명령어들이 뒤섞여 있는 전형적인 코드를 실행할 때 평균적으로 인텔 넷버스트 마이크로 아키텍처의 실행 자원 중 단지 35% 만이 사용된다.

하이퍼쓰레딩 테크놀로지는 실행 자원을 보다 효율적으로 사용하기 위해 멀티쓰레드 코드에 포함돼 있는 병렬성을 이용해 프로세서 코어에 두번째 실행 쓰레드를 제공한다. 이에 따라 나타나는 2개의 쓰레드는 명령 스케줄러 상호간의 의존성이 적은 명령 풀을 제공, 프로세서 코어의 가용 실행 자원을 많이 사용할 수 있도록 한다. 그 결과 멀티쓰레드 코드를 실행할 때 물리 프로세서의 명령 처리율이 증가된다.

소프트웨어의 경우 하이퍼쓰레딩 테크놀로지를 사용하는 IA-32 프로세서는 기존 DP 플랫폼에 있는 2개의 물리 프로세서와 유사하게 2개의 별도 IA-32 프로세서로 보이게 된다. 따라서 기존 DP 및 MP 시스템에서 실행되도록 설계된 운영체제 및 애플리케이션 소프트웨어는 수정을 거치지 않고 하이퍼쓰레딩 테크놀로지가 적용된 1개 혹은 그 이상의 IA-32 프로세서를 장착한 플랫폼에서 실행될 수 있다. 이 경우 2개 이상의 물리 프로세서로 보내지던 복수의 쓰레드는 하이퍼쓰레딩 테크놀로지를 사용하는 1개 혹은 그 이상의 IA-32 프로세서에 있는 논리 프로세서들로 보내진다.

펌웨어(BIOS) 차원에서 멀티프로세서(MP) 플랫폼에서 하이퍼쓰레딩 테크놀로지를 사용하는 복수의 프로세서를 초기화하는 기본 절차는 기존 MP 플랫폼에 대한 절차와 매우 유사하다. DP 및 MP 플랫폼에서 실행되도록 설계된 운영체제는 CPUID 명령을 사용해 하이퍼쓰레딩 테크놀로지를 사용하는 IA-32 프로세서의 존재를 탐지할 수 있다. 멀티프로세서 규격 버전 1.4(Multiprocessor Specification Version 1.4)에서 물리적 프로세서를 작동시키는 메카니즘과 똑같은 메카니즘이 하이퍼쓰레딩 테크놀로지가 적용된 IA-32 프로세서의 논리 프로세서에도 그대로 적용된다.

하이퍼쓰레딩 테크놀로지를 사용하는 프로세서는 멀티쓰레드 운영체제 및 애플리케이션 코드를 실행할 때 그것을 사용하지 않는 일반 IA-32 프로세서에 비해 최고 30%의 성능 향상이 가능하다. MP 시스템에 적용하는 경우 성능은 일반적으로 시스템의 물리적 프로세서 수에 비례하여 향상된다. 하지만 모든 MP 시스템에서와 마찬가지로 성능의 향상은 애플리케이션의 성격에 대한 의존도가 높다.


제공 : DB포탈사이트 DBguide.net