동시 멀티스레딩 - 위키백과, 우리 모두의 백과사전 동시 멀티스레딩 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 동시 멀티스레딩 ( Simultaneous multithreading, SMT ) 은 하드웨어 멀티스레딩을 지원하는 슈퍼스칼라 CPU의 전반적인 효율성을 개선하기 위한 기술이다. SMT는 하나의 실행에 여러 개의 독립 스레드를 허용함으로써 현대의 프로세서 아키텍처가 제공하는 자원을 더 잘 활용할 수 있다. 목차 1 개요 2 용어 3 기능 변화의 역사 4 현대의 상용 기술로의 도입 5 단점 6 같이 보기 7 참조 8 외부 링크 개요 [ 편집 ] 멀티스레딩은 선점형 멀티태스킹과 개념이 비슷하지만, 현대의 슈퍼스칼라 프로세서에서 스레드 수준의 실행 단계로 제공된다. 동시 멀티 스레딩, 곧 SMT는 두 개의 주요 멀티스레딩 기능 가운데 하나이다. 나머지 하나는 시간적 멀티스레딩 ( temporal multithreading ) 이며 이것은 특정 시간대에 제공된 파이프라인 단계에서 여러 명령어를 지닌 하나의 스레드만 실행할 수 있다. 동시 멀티스레딩에서는 하나 이상의 스레드로부터의 명령어들을 특정 시간대에 제공된 파이프라인 단계에서 실행할 수 있다. 이는 기본 프로세서 구조에 큰 변화
많으면 하나의 명령어만 만들어낼 수 있기 때문에 인터리빙 멀티스레딩만 사용할 수 있다. 동시 멀티스레딩 ( SMT ) : 사이클 하나의 여러 개의 스레드로부터 여러 개의 명령어를 만들어낸다. 이때 프로세서는 슈퍼스칼라여야 한다. 칩 수준 멀티스레딩 ( CMP, 멀티코어 ) : 두 대 이상의 프로세서가 한 칩에 내장되어 있으며 각각은 스레드를 독립적으로 실행한다. 멀티스레딩 / SMT / CMP를 합친 어떠한 것 이들을 구별하는 주 요인은 사이클 하나에 얼마나 많은 명령어를 프로세서가 만들어낼 수 있는지를, 또 명령어들로부터 얼마나 많은 스레드가 나오는지를 살펴보는 것이다. 이를테면 썬 마이크로시스템즈의 울트라스팍 T1 ( 2005년 12월 14일까지는 나이아가라 - Niagara - 로 알려져 있었음 ) 은 각 코어가 한 번에 하나의 명령어만 만들어낼 수 있었으므로 동시 멀티스레딩이 아닌 세밀한 멀티스레딩 기술을 갖춘 멀티코어 프로세서이다. 기능 변화의 역사 [ 편집 ] 멀티스레딩 CPU는 1950년대 이후부터 나왔지만 IBM은 1968년에 처음으로 동시 멀티스레딩을 연구하였다. SMT를 채용한 최초의 상용 마이크로프로세서는 알파 21464 ( EV8 )
를 지원하는 방법에는 여러가지가 있다. 인터리빙 멀티스레딩 : 각기 다른 스레드로부터 여러 개의 명령어를 인터리빙으로 처리하여 만들어내며 이를 시간적 멀티스레딩이라고도 한다. 그 다음에는 세밀한 멀티스레딩이나 세밀하지 않은 멀티스레딩으로 나뉘며 이는 인터리빙을 만들어내는 주기에 따라 달라진다. 곧 배럴 프로세서에서와 같은 세밀 ( fine - grain ) 한 멀티스레딩은 모든 사이클이 끝난 뒤에 여러 개의 스레드를 위한 명령어를 만들어내지만 세밀하지 않은 ( coarse - grain ) 멀티스레딩은 현재 실행 중인 스레드가 조금 긴 레이턴시 이벤트 ( 페이지 실패 등 ) 를 일으키면 다른 스레드로부터 명령어를 만들어내도록 전환하기만 한다. 세밀하지 않은 멀티스레딩은 스레드 간에서 덜 문맥 교환적인 환경에 더 일반적이다. 이를테면 인텔의 몬테시토 프로세서는 세밀하지 않은 멀티스레딩을 이용하지만 썬의 울트라스팍 T1은 세밀한 멀티스레딩을 이용한다. 이러한 프로세서에는 하나의 코어에 하나의 파이프라인만 있으며, 사이클마다 많으면 하나의 명령어만 만들어낼 수 있기 때문에 인터리빙 멀티스레딩만 사용할 수 있다. 동시 멀티스레딩 ( SMT ) : 사이클
지만 IBM은 1968년에 처음으로 동시 멀티스레딩을 연구하였다. SMT를 채용한 최초의 상용 마이크로프로세서는 알파 21464 ( EV8 ) 였다. 이 마이크로프로세서는 캘리포니아 대학교 샌디에이고의 딘 툴센 ( Dean Tullsen ), 워싱턴 주립대의 행크 레비 ( Hank Levy ) 와 수잔 에거스 ( Susan Eggers ) 와 협력하여 DEC가 개발하였다. 이 마이크로프로세서는 HP가 DEC를 인수한 컴팩을 인수하기 직전에 알파 계열의 마이크로프로세서가 단종된 뒤로 출시된 적이 없다. 딘 툴센의 작품은 노스우드 ( Northwood ) 와 [UNK] ( Prescott ) 과 같은 하이퍼스레딩 ( HTT ) 버전의 인텔 펜티엄 4 마이크로프로세서를 개발하는 데에도 사용되었다. 현대의 상용 기술로의 도입 [ 편집 ] 인텔 펜티엄 4는 2002년에 3. 06 GHz 모델을 기점으로 출시된 동시 멀티스레딩을 채용한 최초의 현대 데스크톱 프로세서였으며 그 뒤로도 그들의 수많은 프로세서에 도입되었다. 인텔은 이 기술을 하이퍼스레딩 기술 ( HTT ) 로 불렀으며 두 개의 스레드가 기본인 SMT 엔진을 제공한다. 인텔은 SMT를 채용하지 않은 펜티엄 4와
스레딩에서는 하나 이상의 스레드로부터의 명령어들을 특정 시간대에 제공된 파이프라인 단계에서 실행할 수 있다. 이는 기본 프로세서 구조에 큰 변화를 주지 않아도 이용할 수 있다. : 특별히 요구되는 것으로는 한 사이클 안에서 여러 스레드로부터 명령어를 호출할 수 있는 능력과, 여러 개의 스레드로부터 온 데이터를 보유할 수 있는 더 큰 레지스터 파일이 있다. 동시 스레드의 수는 칩 설계자가 결정하지만 칩이 복잡한 까닭으로 현실적으로는 대부분의 SMT에서 최대 두 개까지로 제한을 받는다. 그러나 울트라스팍 T2 ( UltraSPARC T2 ) 와 같은 경우 많으면 8개의 스레드를 코어 하나에서 처리할 수 있는 것이 있기는 하다. 이 기술이 효율성을 위한 해결책인데다가 공유 자원 상에 충돌이 일어나는 정도가 심하다 보니 이러한 해결책에 대한 효력을 측정하거나 이를 준수하는 것이 쉽지는 않을 수 있다. 어떠한 연구가들은 특별한 스레드를 사용하여 캐시와 같은 공유 자원을 적극 공급할 수 있으며 여기에서 다른 단일 스레드의 성능을 높일 수 있다는 사실을 입증하였다. 또, 이러한 사실을 통하여 SMT는 효율성을 위한
위치 [ 00 ] 에 접근하고 스레드 B가 메모리 위치 [ 01 ] 에 접근한다면 특히 현대의 모든 프로세서 기준에서 캐시 라인이 2바이트를 넘어서는 곳에서 캐시 간 트랜잭션이 일어난다. 최신 MIPS 아키텍처 설계에는 MIPS MT라는 SMT 시스템을 갖추고 있다. MIPS MT는 무거운 가상 처리 요소와 가벼운 하드웨어 마이크로스레드를 위하여 제공된다. RMI ( 쿠퍼티노 기반 시작 ) 는 8개의 코어 기반 프로세서 SOC를 제공하는 최초의 MIPS 업체이다. 이 스레드는 각기 다른 스레드가 각 사이클에서 실행할 수 있는 세밀한 모드에서 실행할 수 있다. 이러한 스레드에는 우선 순위를 할당할 수 있다. 2004년 5월에 발표한 IBM 파워5는 듀얼 코어 DCM, 쿼드 코어, 옥타 코어 MCM으로 출시되었으며 각 코어에는 두 개의 스레드 SMT 엔진을 포함하고 있다. IBM이 추가한 이 기능은 이전의 것보다 더 복잡한데, 이를테면 다양한 스레드에 여러 우선 순위를 매길 수 있으며 더 세밀할뿐 아니라 SMT 엔진을 유동적으로 켜고 끌 수 있어서 SMT 프로세서가 성능을 높이지 못할만한 곳에서 작업량을 더 잘 처리할 수 있게 되었다. 많은 사람들이 썬 마이크로
기술 ( HTT ) 로 불렀으며 두 개의 스레드가 기본인 SMT 엔진을 제공한다. 인텔은 SMT를 채용하지 않은 펜티엄 4와 동일한 기준에 비해 최대 30 % 의 성능 향상이 있다고 주장한다. 성능 향상은 응용 프로그램에 따라 매우 큰 차를 보이지만 어떠한 프로그램은 도리어 HTT가 켜져 있을 때 대역, 캐시, 변환 색인 버퍼. 재정렬 버퍼 엔트리와 같은 자원에 크게 집중한다면 속도가 느려지기도 한다. 이는 일반적으로 잘 작성되지 않은 데이터 접근 루틴에서 비롯하며 이 경우 멀티프로세서 시스템에서 높은 레이턴시의 캐시 간 트랜잭션 ( 캐시 트래싱 - cache trashing ) 이 일어난다. 멀티프로세서, 멀티코어 설계가 만연하기 전에 작성한 프로그램들은 단일 CPU 시스템이 하나의 캐시에 스스로 늘 일관적이었기 때문에 일반적으로 캐시 접근을 최적화하지 못하였다. 멀티코어 시스템에서 각 CPU나 코어는 일반적으로 저만의 캐시를 갖추고 있으며 시스템 상의 다른 CPU / 코어의 캐시와 상호 연결함으로써 캐시 일관성을 유지한다. 스레드 A가 메모리 위치 [ 00 ] 에 접근하고 스레드 B가 메모리 위치 [ 01 ] 에 접근한다면 특히 현대의 모든 프로세서 기준에서 캐시 라인이 2바이트를 넘어서는 곳에서
는 이와는 다르며 하나 이상의 파이프라인을 갖춘 더 복잡한 코어를 갖추고 있다. 2008년에 출시한 인텔 아톰은 명령어 재정렬, 추론적 실행 ( speculative execution ), 레지스터 이름 변경을 지원하지 않는, SMT ( 하이퍼스레딩으로 광고 ) 를 채용한 최초의 인텔 제품이다. 인텔은 SMT를 코어 마이크로아키텍처부터 없앤 뒤로 네할렘 마이크로아키텍처에 하이퍼스레딩을 다시 도입하였다. 단점 [ 편집 ] 동시 멀티스레딩은 어느 공유 자원 가운데 하나라도 성능 상 병목 현상이 있다면 성능을 높일 수 없다. 사실 어떠한 응용 프로그램들은 동시 멀티스레딩을 사용할 때 더 느리게 동작한다. 소프트웨어 개발자들이 동시 멀티스레딩을 그들이 개발하는 응용 프로그램에 사용하는 것이 좋은지 나쁜지를 여러 환경에서 시험하고 성능 하락이 있으면 멀티스레딩을 사용하지 않게 하도록 하는 특별한 논리를 삽입하여야 하는 것에 상당한 부담을 느낀다는 비평이 있다. 현재 쓰이는 운영 체제는 이러한 목적을 위한 것이나 여러 우선 순위에 있는 프로세스가 다른 데에서 자원을 탈취하지 못하게 하기 위한 편리한 API가 충분하지 않다. [ 2 ] 동시 멀티스레딩에는 보안 문제도 있다. 캐시의 쓰임을
트 50비트 60비트 64비트 128비트 256비트 512비트 가변 실행 명령어 파이프라인 버블 피연산자 포워딩 비순차적 명령어 처리 레지스터 리네이밍 모의 실행 분기 예측 메모리 의존성 예측 하자드 병렬 레벨 비트 비트 직렬 워드 명령어 파이프라이닝 스칼라 슈퍼스칼라 태스크 스레드 프로세스 데이터 벡터 메모리 멀티스레딩 시간적 동시 ( SMT ) ( 하이퍼스레딩 ) SpMT 선점 협력형 클러스터 멀티스레드 ( CMT ) 하드웨어 스카웃 플린 분류 SISD SIMD ( SWAR ) SIMT MISD MIMD SPMD 어드레싱 모드 CPU 성능 초당 명령 수 ( IPS ) 클럭당 명령어 처리 횟수 ( IPC ) 명령어 당 사이클 ( CPI ) 플롭스 ( FLOPS ) 초당 트랜잭션 수 ( TPS ) SUPS 전성비 계산 차수 캐시 성능 측정 및 메트릭 코어 카운트 싱글 코어 프로세서 멀티 코어 매니코어 프로세서 유형 중앙 처리 장치 ( CPU ) GPGPU AI 가속기 시각 처리 장치 ( VPU ) 벡터 프로세서 배럴 프로세서 스트림 프로세서 디지털 신호 처리 장치 ( DSP ) 입출력 프로세서 / DMA 컨트롤러 네트워크 프로세서 베이스밴드 프로세서 물리 처리 장치 ( PPU ) 코프로세서 안전한 암호 보조 처리기 주문형 반도체 FPGA FPOA 복합 프로그래머블 논리 소자 마이크로컨트롤러 마이크로
프로세서 베이스밴드 프로세서 물리 처리 장치 ( PPU ) 코프로세서 안전한 암호 보조 처리기 주문형 반도체 FPGA FPOA 복합 프로그래머블 논리 소자 마이크로컨트롤러 마이크로프로세서 모바일 프로세서 노트북 프로세서 초저전압 프로세서 멀티 코어 매니코어 프로세서 타일 프로세서 멀티칩 모듈 ( MCM ) 칩 스택 멀티칩 모듈 단일 칩 체제 ( SoC ) 멀티프로세서 시스템 온 칩 ( MPSoC ) 프로그래밍 가능 단일 칩 체제 ( PSoC ) 네트워크 온 칩 ( NoC ) 구성 요소 실행 장치 ( EU ) 산술 논리 장치 ( ALU ) 주소 생성 장치 ( AGU ) 부동 소수점 장치 ( FPU ) 로드 스토어 유닛 ( LSU ) 분기 예측 유니파이드 레저베이션 스테이션 배럴 시프터 언코어 Sum addressed decoder ( SAD ) 프론트 사이드 버스 백사이드 버스 노스브리지 사우스브리지 가산기 곱셈기 복호화 주소 디코더 멀티플렉서 멀티플렉서 레지스터 캐시 메모리 관리 장치 ( MMU ) IOMMU 통합 메모리 컨트롤러 ( IMC ) 전원 관리 장치 ( PMU ) 변환 색인 버퍼 ( TLB ) 스택 엔진 레지스터 파일 프로세서 레지스터 하드웨어 레지스터 메모리 버퍼 레지스터 ( MBR ) 프로그램 카운터 마이크로코드 ROM 데이터패스 제어 장치 인스트럭션 유닛 재배열 버퍼 버퍼 쓰기 버퍼 코프로세서 전자 개폐기 전자 회로
동시 멀티스레딩(Simultaneous multithreading, SMT)은 하드웨어 멀티스레딩을 지원하는 슈퍼스칼라 CPU의 전반적인 효율성을 개선하기 위한 기술이다. SMT는 하나의 실행에 여러 개의 독립 스레드를 허용함으로써 현대의 프로세서 아키텍처가 제공하는 자원을 더 잘 활용할 수 있다.