동시 멀티스레딩

Simultaneous multithreading

동시 멀티스레딩(SMT)은 하드웨어 멀티스레딩을 사용하여 슈퍼스케일러 CPU의 전체적인 효율을 향상시키는 기술입니다.시만텍을 통해 여러 독립적인 실행 스레드가 최신 프로세서 아키텍처에서 제공하는 리소스를 더 잘 사용할 수 있습니다.

세부 사항

멀티스레딩이라는 용어는 애매합니다.이는 1개의 CPU 코어로 여러 스레드를 동시에 실행할 수 있을 뿐만 아니라 여러 태스크(페이지 테이블, 작업 상태 세그먼트, 보호 링, I/O 권한 등)도 있기 때문입니다.같은 코어로 동작하고 있지만, 서로 완전히 분리되어 있습니다.멀티스레딩은 프리엠프티브 멀티태스킹과 유사한 개념이지만 최신 슈퍼스칼라 프로세서에서 스레드 수준의 실행으로 구현됩니다.

동시 멀티스레딩(SMT)은 멀티스레딩의 두 가지 주요 구현 중 하나이며, 다른 하나는 임시 멀티스레딩(슈퍼스레딩이라고도 함)입니다.시간적 멀티스레딩에서는 명령의 스레드 하나만 특정 파이프라인 단계에서 동시에 실행할 수 있습니다.동시 멀티스레딩에서는 여러 스레드로부터의 명령어를 임의의 파이프라인 스테이지에서 동시에 실행할 수 있다.이는 기본 프로세서 아키텍처를 크게 변경하지 않고 이루어집니다.주요 추가되는 것은 사이클 내의 여러 스레드에서 명령을 가져오는 기능과 여러 스레드에서 데이터를 저장하는 더 큰 레지스터 파일입니다.동시 스레드 수는 칩 설계자가 결정합니다.CPU 코어당 2개의 동시 스레드가 공통이지만 일부 프로세서는 코어당 최대 8개의 동시 스레드를 지원합니다.

공유 자원에 대한 충돌이 불가피하기 때문에 그 효과를 측정하거나 합의하는 것이 어려울 수 있습니다.그러나 지금까지의 130nm ~ 32nm 인텔 SMT(하이퍼스레딩) 구현에서 병렬 네이티브 워크로드와 관리 워크로드를 사용한 SMT의 에너지 효율을 측정한 결과, 45nm 및 32nm 구현에서는 ATOM [1]프로세서를 순서대로 사용하더라도 SMT는 매우 에너지 효율이 높은 것으로 나타났습니다.최신 시스템에서는 시만텍이 거의 추가 동적 전력 없이 효과적으로 동시성을 활용합니다.즉, 퍼포먼스 향상이 미미하더라도 소비전력을 [2]대폭 절감할 수 있습니다.

일부 연구자들은[who?] 추가 스레드를 캐시와 같은 공유 리소스를 시드하고 다른 단일 스레드의 성능을 개선하기 위해 사전 예방적으로 사용할 수 있다는 것을 보여주며, 이는 SMT가 효율성만 높이는 것이 아니라는 것을 보여준다고 주장합니다.다른[who?] 기업은 SMT를 사용하여 오류 탐지 및 복구를 위해 중복 계산을 제공합니다.

그러나 현재 대부분의 경우 SMT는 메모리 지연 시간을 숨기고 효율성을 높이며 [citation needed]사용된 하드웨어 양당 계산 처리량을 높이는 것입니다.

분류법

프로세서 설계에서는 자원 요건이 적은 온칩 병렬화를 증가시키는 방법이 두 가지가 있습니다.하나는 명령 레벨 병렬화(ILP)를 이용하려고 하는 슈퍼스칼라 기술이고, 다른 하나는 스레드 레벨 병렬화(TLP)를 이용하는 멀티스레딩 접근법입니다.

Superscalar는 여러 명령을 동시에 실행하는 동시에 스레드 레벨 병렬 처리(TLP)가 하나의 프로세서 칩 내의 여러 스레드에서 명령을 실행하는 것을 의미합니다.칩 내에서 여러 스레드를 지원하는 방법은 여러 가지가 있습니다.즉, 다음과 같습니다.

  • 인터리브 멀티스레딩:서로 다른 스레드로부터의 여러 명령의 인터리빙 문제(일시적 멀티스레딩이라고도 함).인터리브된 문제의 빈도에 따라 세분화된 멀티스레딩과 세분화된 멀티스레딩으로 나눌 수 있습니다.배럴 프로세서와 같은 세분화된 멀티스레딩은 사이클 후에 다른 스레드에 대해 명령을 발행하지만, 세분화된 멀티스레딩은 현재 실행 중인 스레드에 의해 긴 지연 이벤트(페이지 장애 등)가 발생할 때만 다른 스레드에서 명령을 발행하도록 전환됩니다.로우그레인 멀티스레딩은 스레드 간의 컨텍스트스위치가 적기 때문에 일반적입니다.예를 들어 인텔의 Montecito 프로세서는 거친 멀티스레딩을 사용하는 반면 Sun의 UltraSPARC T1은 세밀한 멀티스레딩을 사용합니다.코어당 파이프라인이 1개뿐인 프로세서의 경우 인터리브 멀티스레딩만이 가능한 방법입니다.이는 인터리브 멀티스레딩이 사이클당 최대 1개의 명령을 발행할 수 있기 때문입니다.
  • 동시 멀티스레딩(SMT): 1사이클에 여러 스레드에서 여러 명령을 발행합니다.그러기 위해서는 프로세서가 슈퍼스칼라여야 합니다.
  • 칩 레벨 멀티프로세서(CMP 또는 멀티코어): 2개 이상의 프로세서를 1개의 칩에 통합하고, 각각 스레드를 개별적으로 실행합니다.
  • 멀티스레드/SMT/CMP의 임의의 조합.

이들을 구별하는 중요한 요소는 프로세서가 1사이클에 발행할 수 있는 명령의 수와 명령의 출처가 되는 스레드의 수를 확인하는 것입니다.예를 들어, Sun Microsystems의 UltraSPARC T1은 각 코어가 한 번에 하나의 명령만 발행할 수 있기 때문에 동시 멀티스레딩이 아닌 미세 멀티스레딩 기술과 결합된 멀티코어 프로세서입니다.

과거의 실장

멀티스레딩 CPU는 1950년대부터 존재해 왔지만 동시 멀티스레딩은 1968년 IBM에 의해 ACS-360 [3]프로젝트의 일환으로 처음 연구되었습니다.시만텍과 함께 개발된 최초의 주요 상용 마이크로프로세서는 Alpha 21464(EV8)였습니다.이 마이크로프로세서는 샌디에이고 캘리포니아 대학의 Dean Tullsen, 워싱턴 대학의 Susan Eggers와 Henry Levy와 협력하여 DEC에 의해 개발되었습니다.HP가 DEC를 인수Compaq를 인수하기 직전에 알파 계열의 마이크로프로세서가 단종되었기 때문에 마이크로프로세서는 출시되지 않았습니다.딘 툴슨의 연구는 "노스우드"나 "프레스코트"와 같은 인텔 Pentium 4 마이크로 프로세서의 하이퍼스레드 버전 개발에도 사용되었습니다.

최신 상용 구현

인텔 Pentium 4는 동시 멀티스레딩을 구현한 최초의 최신 데스크톱 프로세서이며, 2002년에 출시된 3.06 GHz 모델 이후 다수의 프로세서에 도입되었습니다.인텔은 이 기능을 하이퍼스레딩 테크놀로지라고 부르며 기본적인 2 스레드 SMT 엔진을 제공합니다.인텔은 SMT 이외의 Pentium 4와 비교하여 최대 30%의[4] 속도 향상을 주장하고 있습니다.퍼포먼스의 향상은 애플리케이션에 따라 크게 다릅니다.단, 프로세서에 완전히 주의를 기울여야 하는2개의 프로그램을 실행하는 경우 하이퍼스레딩을 [5]켜면 어느 한쪽 또는 양쪽의 프로그램이 약간 느려지는 것처럼 보일 수 있습니다.이는 Pentium 4의 재생 시스템이 귀중한 실행 리소스를 묶어 대역폭, 캐시, TLB 등의 리소스에 대한 경합을 증가시키고 버퍼 엔트리의 순서를 변경하며 두 프로그램 간에 프로세서 리소스를 균등하게 함으로써 실행 시간이 증가하기 때문입니다.Pentium 4 Prescott 코어는 리플레이 큐를 취득하여 리플레이 시스템에 필요한 실행 시간을 단축했습니다.이것은 그 퍼포먼스 [6]히트를 완전히 극복하기에 충분했다.

최신 Imagination Technologies MIPS 아키텍처 설계에는 "MIPS MT"[7]라고 불리는 SMT 시스템이 포함되어 있습니다.MIPS MT는 중량감 있는 가상 처리 요소와 경량 하드웨어 마이크로스레드를 모두 지원합니다.Cupertino 기반의 스타트업인 RMI는 MIPS 벤더로서는 최초로 8개의 코어를 기반으로 한 프로세서 SOC를 제공하고 있으며, 각 코어는 4개의 스레드를 실행하고 있습니다.스레드는 사이클마다 다른 스레드를 실행할 수 있는 미세 모드로 실행할 수 있습니다.스레드에 우선순위를 할당할 수도 있습니다.Imagination Technologies MIPS CPU에는 코어당 두 개의 SMT 스레드가 있습니다.

IBM의 Blue Gene/Q는 4-way SMT를 가지고 있습니다.

2004년 5월에 발표된 IBM POWER5는 듀얼 코어 DCM(Dual Core Dual-Chip Module) 또는 쿼드 코어 또는 옥트 코어 MCM(Multi-chip Module)으로 제공되며, 각 코어는 2 스레드 SMT 엔진을 포함합니다.IBM의 구현은 다양한 스레드에 서로 다른 우선 순위를 할당할 수 있고, 보다 세분화되어 있으며, SMT 프로세서가 성능을 향상시키지 않는 워크로드를 보다 효율적으로 실행하기 위해 SMT 엔진을 동적으로 켜고 끌 수 있기 때문에 이전 구현보다 더 정교합니다.이는 IBM이 일반적으로 사용 가능한 하드웨어 멀티스레딩을 두 번째로 구현한 것입니다.2010년에 IBM은 각각 4개의 동시 인텔리전트 스레드가 있는 8개의 코어를 갖춘 POWER7 프로세서를 기반으로 하는 시스템을 출시했습니다.이 경우 스레드화 모드는 해당 시점에 스케줄링된 프로세스 스레드 수에 따라 1개의 스레드, 2개의 스레드 또는 4개의 스레드 간에 전환됩니다.이것에 의해, 코어의 사용이 최적화되어 응답 시간 또는 throughput이 최소가 됩니다.IBM POWER8에는 코어당 8개의 지능형 동시 스레드(SMT8)가 있습니다.

2013년에 z13 프로세서를 시작으로 IBM Z에는 코어당 2개의 스레드(SMT-2)가 있습니다.

많은 사람들이 Sun Microsystems의 UltraSPARC T1(2005년 11월 14일까지 "Niagara"로 알려짐) 및 현재는 코드네임으로 불리고 있는 프로세서 "Rock"(2005년에 발표되었지만 2010년에 많은 지연이 취소됨)가 SMT 및 CMP 기술을 개발하는 데 초점을 맞춘 SPARC의 구현이라고 보고했지만 ACiagaraigaraara는 아닙니다.Sun에서는 이러한 통합 방식을 "CMT"라고 하며 전체 개념을 "스루풋 컴퓨팅"이라고 합니다.Niagara에는 8개의 코어가 있지만 각 코어는 파이프라인 1개뿐이기 때문에 실제로는 세밀한 멀티스레딩을 사용합니다.여러 스레드의 명령이 주기마다 문제 창을 공유하는 시만텍과 달리 프로세서는 라운드 로빈 정책을 사용하여 주기마다 다음 활성 스레드의 명령을 발행합니다.따라서 배럴 프로세서와 더 유사합니다.Sun Microsystems의 Rock 프로세서는 다릅니다.여러 개의 파이프라인이 있는 복잡한 코어를 가지고 있습니다.

Oracle Corporation SPARC T3에는 코어당 8개의 세밀한 스레드가 있습니다.SPARC T4, SPARC T5, SPARC M5, M6 및 M7에는 코어당 8개의 세밀한 스레드가 있으며 이 중 2개를 동시에 실행할 수 있습니다.

Fujitsu SPARC64 VI는 VMT(Vertical Multithreading) SPARC VII를 탑재하고 있으며 이후는 2방향 SMT를 탑재하고 있습니다.

인텔 Itanium Montecito는 거친 세밀한 멀티스레딩과 Tukwila를 사용하며, 그 이후 버전에서는 2-way SMT (듀얼 도메인 멀티스레딩 포함)를 사용합니다.

인텔 Xeon Phi는, 통상의 하이퍼스레딩과는 달리,[8] 하드웨어 베이스의 스레드를 무효로 할 수 없는, 4 웨이 SMT(시간 다중화 멀티스레딩)를 탑재하고 있습니다.2008년에 처음 출시된 인텔 Atom은 명령어 순서 변경, 추측 실행, 레지스터 이름 변경을 지원하지 않고 2-way SMT (하이퍼스레딩으로 판매)를 탑재한 최초의 인텔 제품입니다.인텔은 코어 마이크로아키텍처에 포함되지 않은 후 Nehalem 마이크로아키텍처를 사용한 하이퍼스레딩을 재도입했습니다.

AMD Buldozer 마이크로아키텍처 FlexFPU 및 Shared L2 캐시는 멀티스레드이지만 모듈의 정수 코어는 단일 스레드이기 때문에 일부 SMT [9][10]구현에 불과합니다.

AMD Zen 마이크로아키텍처에는 2방향 SMT가 탑재되어 있습니다.

VISC 아키텍처[11][12][13][14] 가상 소프트웨어 레이어(변환 레이어)를 사용하여 글로벌프런트 엔드에 명령어1 스레드를 디스패치하고 명령어를 가상 하드웨어 스레드로 분할한 후 개별 가상 코어로 디스패치합니다.그런 다음 이러한 가상 코어는 모든 물리적 코어의 사용 가능한 리소스로 전송할 수 있습니다.여러 가상 코어가 스레드를 단일 물리 코어의 순서 변경 버퍼에 푸시할 수 있습니다.이 버퍼는 여러 스레드릿에서 부분 명령과 데이터를 동시에 실행 포트를 통해 분할할 수 있습니다.각 가상 코어는 상대 출력의 위치를 추적합니다.이러한 형태의 멀티스레딩은 단일 스레드가 CPU의 모든 리소스를 사용할 수 있도록 함으로써 단일 스레드의 성능을 향상시킬 수 있습니다.리소스 할당은 거의 단일 사이클의 지연 시간 수준에서 동적으로 이루어집니다(개별 애플리케이션 요구에 따라 할당 변경에 따라 1~4 사이클).따라서 두 개의 가상 코어가 리소스를 놓고 경합하는 경우 할당될 리소스를 결정하는 적절한 알고리즘이 있습니다.

단점들

프로세서의 설계와 아키텍처에 따라서는, 공유 자원의 어느쪽이든 퍼포먼스의 [15]보틀 넥이 되는 경우, 동시 멀티스레딩을 실시하면 퍼포먼스가 저하하는 일이 있습니다.여러 상황에서 동시 멀티스레딩이 애플리케이션에 좋은지 나쁜지 테스트하고 성능이 떨어지면 끄는 추가 논리를 삽입해야 하는 것은 소프트웨어 개발자들에게 상당한 부담이라는 비판도 나온다.현재 운영체제는 이 목적을 위해 편리한 API 호출이 부족하여 우선순위가 다른 프로세스가 [16]서로 리소스를 빼앗는 것을 방지합니다.

또한 특정 동시 멀티스레딩 구현에 대한 보안 문제도 있습니다.NetBurst 베이스 프로세서의 인텔 하이퍼스레딩에는, 캐시의 [17]사용 상황을 감시하는 것에 의해서, 같은 프로세서내에서 동작하는 다른 애플리케이션으로부터 암호 키를 훔치는 취약성이 있습니다.또한 Black Hat [18]2018에서 설명한 HT 구현에 대한 정교한 기계 학습 악용도 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ ASPLOS'11
  2. ^ ASPLOS'11
  3. ^ Smotherman, Mark (25 May 2011). "End of IBM ACS Project". School of Computing, Clemson University. Retrieved January 19, 2013.
  4. ^ Marr, Deborah (February 14, 2002). "Hyper-Threading Technology Architecture and Microarchitecture" (PDF). Intel Technology Journal. 6 (1): 4. doi:10.1535/itj. Retrieved 25 September 2015.
  5. ^ "CPU performance evaluation Pentium 4 2.8 and 3.0".
  6. ^ "Replay: Unknown Features of the NetBurst Core. Page 15". Replay: Unknown Features of the NetBurst Core. xbitlabs.com. Archived from the original on 14 May 2011. Retrieved 24 April 2011.
  7. ^ "MIPS MT ASE description".
  8. ^ Barth, Michaela; Byckling, Mikko; Ilieva, Nevena; Saarinen, Sami; Schliephake, Michael (18 February 2014). Weinberg, Volker (ed.). "Best Practice Guide Intel Xeon Phi v1.1". Partnership for Advanced Computing in Europe.
  9. ^ "AMD Bulldozer Family Module Multithreading". wccftech. July 2013.
  10. ^ Halfacree, Gareth (28 October 2010). "AMD unveils Flex FP". bit-tech.
  11. ^ "Soft Machines unveils VISC virtual chip architecture bit-tech.net".
  12. ^ Cutress, Ian (12 February 2016). "Examining Soft Machines' Architecture: An Element of VISC to Improving IPC". AnandTech.
  13. ^ "Next Gen Processor Performance Revealed". VR World. February 4, 2016. Archived from the original on 2017-01-13.
  14. ^ "Architectural Waves". Soft Machines. 2017. Archived from the original on 2017-03-29.
  15. ^ "Replay: Unknown Features of the NetBurst Core. Page 15". Replay: Unknown Features of the NetBurst Core. xbitlabs.com. Archived from the original on 14 May 2011. Retrieved 24 April 2011.
  16. ^ 하이퍼스레딩이 얼마나 좋습니까?
  17. ^ 하이퍼스레딩은 유해하다고 생각됨
  18. ^ TLBled:CPU 캐시 보호가 충분하지 않은 경우
일반

외부 링크