트랜잭션 동기화 확장
Transactional Synchronization ExtensionsTSX(Transactional Synchronization Extensions New Instructions)라고도 불리는 TSX(Transactional Synchronization Extensions)는 하드웨어 트랜잭션 메모리 지원을 추가하여 잠금 해제를 통해 멀티 스레드 소프트웨어의 실행을 가속화하는 x86 명령 세트 아키텍처(ISA)의 확장입니다.다양한 벤치마크에 따르면 TSX/TSX-NI는 특정 워크로드에서 애플리케이션 실행 속도를 약 40% 향상시키고 초당 데이터베이스 트랜잭션(TPS)[1][2][3][4]을 4~5배 높일 수 있습니다.
TSX/TSX-NI는 2012년 2월에 인텔에 의해 문서화되어 2013년 6월에 Haswell 마이크로아키텍처를 [5][6][7]기반으로 한 일부 인텔 마이크로프로세서로 첫 선을 보였습니다.45xx 미만의 Haswell 프로세서와 R 시리즈 및 K 시리즈(잠금 해제된 멀티플라이어 포함) SKU는 TSX/[8]TSX-NI를 지원하지 않습니다.2014년 8월 인텔은 Haswell, Haswell-E, Haswell-EP 및 초기 Broadwell CPU의 TSX/TSX-NI 구현에 관한 오류를 발표했습니다.이것에 의해, 영향을 받는 CPU의 TSX/TSX-NI 기능은 마이크로 코드 업데이트에 [9][10]의해서 무효가 됩니다.
2016년에는 모든 주요 운영 [11]체제에서 커널 주소 공간 레이아웃 랜덤화(KASLR)를 해제하기 위해 TSX/TSX-NI가 트랜잭션 결함(페이지 결함)을 처리하는 방식을 남용하여 사이드 채널 타이밍 공격이 발견되었습니다.2021년 인텔은 발견된 보안 [12]문제를 완화하기 위해 Skylake에서 Coffee Lake까지의 CPU 세대에서의 TSX/TSX-NI 기능을 무효로 하는 마이크로코드 업데이트를 발표했습니다.
TSX/TSX-NI 에뮬레이션 지원은 인텔 소프트웨어 개발 [13]에뮬레이터의 일부로 제공됩니다.QEMU 포크에서는 [14]TSX/TSX-NI 에뮬레이션도 실험적으로 지원됩니다.
특징들
TSX/TSX-NI는 트랜잭션 실행을 위한 코드 영역을 지정하기 위한 2개의 소프트웨어 인터페이스를 제공합니다.HLE(Hardware Lock Elision)는 TSX/TSX-NI를 지원하지 않는 프로세서와 하위 호환되도록 설계된 명령어 프리픽스 기반 인터페이스입니다.RTM(Restricted Transactional Memory)은 프로그래머에게 [15]뛰어난 유연성을 제공하는 새로운 명령어세트 인터페이스입니다
TSX/TSX-NI를 사용하면 트랜잭션코드 영역의 최적 실행을 실현할 수 있습니다.하드웨어는 여러 스레드에서 충돌하는 메모리 액세스를 모니터링하면서 성공적으로 완료할 수 없는 트랜잭션을 중단하고 롤백합니다.실패한 [15]트랜잭션을 감지하고 처리하기 위한 메커니즘이 제공됩니다.
즉, 트랜잭션 실행을 통한 잠금 이탈은 메모리 트랜잭션을 가능한 한 빠른 경로로 사용하는 반면 느린(폴백) 경로는 여전히 일반 잠금입니다.
하드웨어 잠금 기능
HLE(Hardware Lock Elision)는 2개의 새로운 명령 프레픽스를 추가합니다.XACQUIRE
그리고.XRELEASE
이들 2개의 프레픽스는 기존 opcode를 재사용합니다.REPNE
/REPE
프리픽스(F2H
/F3H
) HLE를 지원하지 않는 프로세서에서는REPNE
/REPE
prefix는 다음 명령에서는 무시됩니다.XACQUIRE
/XRELEASE
유효하기 때문에 하위 [16]호환성이 유효합니다.
그XACQUIRE
프레픽스 힌트는 다음 명령에서만 사용할 수 있습니다.LOCK
접두사:ADD
,ADC
,AND
,BTC
,BTR
,BTS
,CMPXCHG
,CMPXCHG8B
,DEC
,INC
,NEG
,NOT
,OR
,SBB
,SUB
,XOR
,XADD
,그리고.XCHG
.그XCHG
명령어를 사용할 수 있습니다.LOCK
프레픽스도 지정합니다.
그XRELEASE
prefix hint는 상기의 순서와 함께 사용할 수 있습니다.MOV mem, reg
그리고.MOV mem, imm
지침들.
HLE를 사용하면 잠금에 대한 쓰기를 건너뛰어 다른 스레드에서는 잠금이 해제된 것처럼 보이게 함으로써 중요한 섹션을 최적화할 수 있습니다.트랜잭션에 실패하면 에서 실행이 재시작됩니다.XACQUIRE
- 명령어 표시, 그러나 명령어를 마치 명령어처럼 취급한다.XACQUIRE
프리픽스가 존재하지 않았습니다.
제한된 트랜잭션 메모리
Restricted Transactional Memory(RTM; 제한 트랜잭션메모리)는 HLE를 대체하는 구현으로 트랜잭션을 정상적으로 실행할 수 없을 때 실행되는 폴백코드 경로를 프로그래머가 유연하게 지정할 수 있도록 합니다.HLE와 달리 RTM은 지원하지 않는 프로세서와 하위 호환성이 없습니다.하위 호환성을 위해 프로그램은 새로운 명령을 사용하기 전에 CPU에서 RTM 지원을 검출해야 합니다.
RTM 에는, 다음의 3개의 새로운 순서가 추가되어 있습니다.XBEGIN
,XEND
그리고.XABORT
.그XBEGIN
그리고.XEND
명령어는 트랜잭션 코드 영역의 시작과 끝을 표시합니다.XABORT
명령어는 트랜잭션을 명시적으로 중단합니다.트랜잭션 실패는 프로세서를 에 의해 지정된 폴백코드 경로로 리다이렉트 합니다.XBEGIN
명령, 명령에서 반환된 중단 상태EAX
등록하세요.
EAX 레지스터 비트 위치 | 의미. |
---|---|
0 | 에 의해 중단되는 경우 설정XABORT 설명. |
1 | 설정된 경우 트랜잭션은 재시도 시 성공할 수 있습니다.비트 0이 설정되어 있는 경우 이 비트는 항상 클리어됩니다. |
2 | 다른 논리 프로세서가 중단된 트랜잭션의 일부였던 메모리 주소와 충돌한 경우 설정합니다. |
3 | 내부 버퍼가 오버플로 했을 경우에 설정합니다. |
4 | 디버깅 중단점이 적중했을 경우에 설정합니다. |
5 | 중첩된 트랜잭션을 실행하는 동안 중단이 발생한 경우 설정합니다. |
23:6 | 예약 완료. |
31:24 | XABORT 인수(비트 0이 설정되어 있는 경우에만 유효하고, 그렇지 않으면 예약되어 있습니다). |
XTEST
설명
TSX/TSX-NI가 제공하는 새로운 기능XTEST
프로세서가 트랜잭션 영역을 실행하고 있는지 여부를 반환하는 명령입니다.이 명령은 프로세서가 HLE 또는 RTM 또는 둘 다 지원하는 경우 지원됩니다.
TSX 일시 중단 로드 주소 추적
TSX/TSX-NI Suspend Load Address Tracking(TSXLDTRK)은 트랜잭션 영역 내의 코드 섹션의 메모리로부터의 부하 추적을 일시적으로 디세블로 하는 명령 세트 확장입니다.이 기능은 HLE와 RTM을 확장하기 때문에 프로세서에서의 지원을 개별적으로 검출해야 합니다.
TSXLDTRK에는 두 가지 새로운 지침이 추가되었습니다.XSUSLDTRK
그리고.XRESLDTRK
로드 어드레스 트래킹을 각각 일시정지 및 재개합니다.트래킹이 일시 정지되어 있는 동안 메모리로부터의 로드는 트랜잭션 읽기 세트에 추가되지 않습니다.즉, 이러한 메모리 위치가 서스펜드 영역 외부의 트랜잭션 읽기 또는 쓰기 세트에 추가되지 않는 한 다른 스레드에 의해 해당 위치에 쓰기가 실행되어도 트랜잭션이 중단되지 않습니다.트랜잭션 영역 내 코드의 일부에 대한 로드 주소 추적을 일시 정지하면 읽기/쓰기 경합에 대해 추적해야 하는 메모리 양을 줄일 수 있으므로 트랜잭션의 성공 가능성이 높아집니다.
실행
인텔의 TSX/TSX-NI 사양은 트랜잭션 메모리가 프로그래머에게 어떻게 노출되는지를 기술하고 있지만 실제 트랜잭션 메모리 [17]구현에 대한 자세한 내용은 기술하고 있지 않습니다.인텔은 개발자 및 최적화 매뉴얼에서 Haswell이 읽기 세트와 쓰기 세트를 캐시 라인의 세밀도로 유지하고 프로세서의 [18][19][20][21]L1 데이터 캐시 내의 주소를 추적하도록 규정하고 있습니다.또한 인텔은 캐시 [19]일관성 프로토콜을 통해 데이터 경합이 감지된다고 밝혔습니다.
Haswell의 L1 데이터 캐시의 연관성은 8입니다.이것은, 이 실장에서는, 같은 캐시 세트에의 매핑을 9개의 다른 장소에 쓰는 트랜잭션의 실행이 중단되는 것을 의미합니다.단, 마이크로아키텍처 구현으로 인해 동일한 세트에 대한 액세스 수가 감소한다고 해서 중단되지 않는다는 보장은 없습니다.또한 하이퍼스레딩 테크놀로지를 탑재한 CPU 구성에서는 L1 캐시가 같은 코어의 2개의 스레드 간에 공유되기 때문에 같은 코어의 형제 논리 프로세서로 조작하면 [19]삭제가 발생할 수 있습니다.
독립적인 조사에 따르면 Haswell의 트랜잭션 메모리는 트랜잭션 데이터 및 레지스터 체크포인트에 [17]코어별 캐시를 사용하는 지연된 업데이트 시스템일 가능성이 높습니다.즉, Haswell은 캐시 기반 트랜잭션 메모리 시스템을 사용할 가능성이 높으며, 이는 구현 선택의 위험이 훨씬 낮기 때문입니다.한편, 인텔의 Skylake 이후에서는, 이 캐시 베이스의 어프로치와 메모리 오더 버퍼(MOB)를 같은 목적으로 조합하는 것으로, 투기적인 멀티스레딩에 [22]대응한 멀티버전 트랜잭션 메모리를 제공할 수 있습니다.
이력 및 버그
2014년 8월 인텔은 Haswell, Haswell-E, Haswell-EP 및 초기 Broadwell CPU에서의 TSX/TSX-NI 구현에 오류가 있음을 발표하였습니다.[9][10][23]그 결과 마이크로코드 업데이트를 통해 해당 CPU의 TSX/TSX-NI 기능이 비활성화되었습니다.이 버그는 2014년 [24]11월에 vPro 대응 Core M-5Y70 Broadwell CPU의 F-0 스테핑에서 수정되었습니다.
이 버그는 아테네 [25]국립 기술 대학의 전기 및 컴퓨터 공학 대학의 졸업 논문 중에 발견되어 보고되었습니다.
2018년 10월 인텔은 일부 Skylake [26]프로세서에서 발견된 TSX/TSX-NI 메모리 주문 문제를 발표했습니다.마이크로코드 업데이트의 결과 영향을 받는 CPU에서는 HLE 지원이 비활성화되어 인텔 SGX 모드 또는 시스템 매니지먼트 모드(SMM) 외부에서 사용할 경우 퍼포먼스 카운터를 1개 희생함으로써 RTM이 경감되었습니다.퍼포먼스에 영향을 미치는 C를 사용하지 않도록 시스템소프트웨어를 효과적으로 비활성화하거나 퍼포먼스 감시 툴을 갱신해야 합니다.오운터
2021년 6월 인텔은 TSX Asynchronous Abort(TAA)의 취약성을 완화하기 위해 Skylake에서 Coffee Lake 및 Wisky Lake에 이르는 다양한 Xeon 및 Core 프로세서 모델에서 TSX/TSX-NI를 더욱 비활성화시키는 마이크로코드 업데이트를 발표했습니다.메모리 주문에 관한 문제의 이전 경감책은 [27]삭제되었다.디폴트로는 업데이트된 마이크로코드를 사용해도 프로세서는 RTM 지원을 나타내지만 트랜잭션은 항상 중단됩니다.시스템 소프트웨어는 지침에 따라 이 작동 모드와 TSX/TSX-NI에 대한 마스크 지원을 감지하여 응용 프로그램에 의한 TSX/TSX-NI의 탐지를 방지할 수 있습니다.시스템 소프트웨어에서는, RTM 가 완전하게 액티브하게 되어 있는 「지원되고 있지 않은 소프트웨어 개발 모드」도 유효하게 할 수 있습니다만, 이 경우, RTM 의 사용은 앞에서 설명한 문제의 영향을 받기 때문에, 실가동 시스템에서는 이 모드를 유효하게 하지 말아 주세요.일부 시스템에서는 SGX가 활성화되면 RTM을 다시 활성화할 수 없습니다.HLE는 항상 디세이블입니다.
2020년 5월부터 인텔 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼, 제1권, 제2.5장 인텔 명령어셋 아키텍처 및 기능 [18]삭제에 따르면 HLE는 2019년 이후 출시된 인텔 제품에서 제외되었습니다.RTM은 삭제된 것으로 문서화되어 있지 않습니다.그러나 2020년에 출시된 인텔 10세대 Comet Lake와 Ice Lake CPU는 HLE와 RTM을 모두 포함한 TSX/[28][29][30][31][32]TSX-NI를 지원하지 않습니다.Comet Lake 프로세서의 엔지니어링 버전은 여전히 TSX/TSX-NI 지원을 유지하고 있습니다.
2020년 [33]10월부터의 인텔·아키텍처·인스트럭션·세트·프로그래밍·레퍼런스·리비전 41에서는, 새로운 TSXLDTRK 명령·세트 확장이 문서화되어 향후의 Sapire Rapids 프로세서에 포함될 예정입니다.
「 」를 참조해 주세요.
- 고도의 동기화 기능– AMD의 경쟁사 테크놀로지
레퍼런스
- ^ Richard M. Yoo; Christopher J. Hughes; Konrad Lai; Ravi Rajwar (November 2013). "Performance Evaluation of Intel Transactional Synchronization Extensions for High-Performance Computing" (PDF). intel-research.net. Archived from the original (PDF) on 2016-10-24. Retrieved 2013-11-14.
- ^ Tomas Karnagel; Roman Dementiev; Ravi Rajwar; Konrad Lai; Thomas Legler; Benjamin Schlegel; Wolfgang Lehner (February 2014). "Improving In-Memory Database Index Performance with Intel Transactional Synchronization Extensions" (PDF). software.intel.com. Retrieved 2014-03-03.
- ^ "Performance Evaluation of Intel Transactional Synchronization Extensions for High Performance Computing". supercomputing.org. November 2013. Retrieved 2013-11-14.
- ^ "Benchmarks: Haswell's TSX and Memory Transaction Throughput (HLE and RTM)". sisoftware.co.uk. Retrieved 2013-11-14.
- ^ "Transactional Synchronization in Haswell". Software.intel.com. Retrieved 2012-02-07.
- ^ "Transactional memory going mainstream with Intel Haswell". Ars Technica. 2012-02-08. Retrieved 2012-02-09.
- ^ "The Core i7-4770K Review". Tom's Hardware. 2013-06-01. Retrieved 2012-06-03.
- ^ "Intel Comparison Table of Haswell Pentium, i3, i5, and i7 models". intel.com. Retrieved 2014-02-11.
- ^ a b Scott Wasson (2014-08-12). "Errata prompts Intel to disable TSX in Haswell, early Broadwell CPUs". techreport.com. Retrieved 2014-08-12.
- ^ a b "Desktop 4th Generation Intel Core Processor Family, Desktop Intel Pentium Processor Family, and Desktop Intel Celeron Processor Family: Specification Update (Revision 014)" (PDF). Intel. June 2014. p. 46. Retrieved 2014-08-13.
Under a complex set of internal timing conditions and system events, software using the Intel TSX/TSX-NI (Transactional Synchronization Extensions) instructions may observe unpredictable system behavior.
- ^ "Breaking Kernel Address Space Layout Randomization with Intel TSX" (PDF). 2016.
- ^ Gareth Halfacree (2021-06-29). "Intel sticks another nail in the coffin of TSX with feature-disabling microcode update". The Register. Retrieved 2012-10-17.
- ^ Wooyoung Kim (2013-07-25). "Fun with Intel Transactional Synchronization Extensions". Intel. Retrieved 2013-11-12.
- ^ Sebastien Dabdoub; Stephen Tu. "Supporting Intel Transactional Synchronization Extensions in QEMU" (PDF). mit.edu. Retrieved 2013-11-12.
- ^ a b Johan De Gelas (2012-09-20). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions". AnandTech. Retrieved 2013-10-20.
- ^ "Hardware Lock Elision Overview". intel.com. Archived from the original on 2013-10-29. Retrieved 2013-10-27.
- ^ a b David Kanter (2012-08-21). "Analysis of Haswell's Transactional Memory". Real World Technologies. Retrieved 2013-11-19.
- ^ a b "Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C" (PDF). Intel. September 2013. p. 342. Retrieved 2013-11-19.
- ^ a b c "Intel 64 and IA-32 Architectures Optimization Reference Manual" (PDF). Intel. September 2013. p. 446. Retrieved 2013-11-19.
- ^ "Intel TSX implementation properties". Intel. 2013. Retrieved 2013-11-14.
The processor tracks both the read-set addresses and the write-set addresses in the first level data cache (L1 cache) of the processor.
- ^ De Gelas, Johan (September 20, 2012). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions". AnandTech. Retrieved 23 December 2013.
The whole "CPU does the fine grained locks" is based upon tagging the L1 (64 B) cachelines and there are 512 of them to be specific (64 x 512 = 32 KB). There is only one "lock tag" per cacheline.
- ^ David Kanter (2012-08-21). "Haswell Transactional Memory Alternatives". Real World Technologies. Retrieved 2013-11-14.
- ^ Ian Cutress (2014-08-12). "Intel Disables TSX Instructions: Erratum Found in Haswell, Haswell-E/EP, Broadwell-Y". AnandTech. Retrieved 2014-08-30.
- ^ "Intel Core M Processor Family. Specification Update. December 2014. Revision 003. 330836-003" (PDF). Intel. December 2014. p. 10. Retrieved 2014-12-28.
BDM53 1 E-0: X, F-0:, Status: Fixed ERRATA: Intel TSX Instructions Not Available. 1. Applies to Intel Core M-5Y70 processor. Intel TSX is supported on Intel Core M-5Y70 processor with Intel vPro Technology. Intel TSX is not supported on other processor SKUs.
- ^ "HiPEAC info" (PDF). p. 12. Archived from the original (PDF) on 2017-03-05.
- ^ "Performance Monitoring Impact of Intel® Transactional Synchronization Extension Memory Ordering Issue White Paper, June 2021, Revision 1.4" (PDF). Intel. 2021-06-12. p. 5.
The October 2018 microcode update also disabled the HLE instruction prefix of Intel TSX and force all RTM transactions to abort when operating in Intel SGX mode or System Management Mode (SMM).
- ^ "Intel® Transactional Synchronization Extensions (Intel® TSX) Memory and Performance Monitoring Update for Intel® Processors". Intel. 2021-06-12.
- ^ "Intel® Core™ i9-10900K Processor specifications". Intel. 2020. Retrieved 2020-10-10.
- ^ "Intel® Core™ i9-10980HK Processor specifications". Intel. 2020. Retrieved 2020-10-10.
- ^ "Intel® Core™ i7-10810U Processor specifications". Intel. 2020. Retrieved 2020-10-10.
- ^ "Intel® Xeon® W-1290P Processor specifications". Intel. 2020. Retrieved 2020-10-10.
- ^ "Intel® Core™ i7-1068NG7 Processor specifications". Intel. 2020. Retrieved 2020-10-10.
- ^ "Intel® Architecture Instruction Set Extensions Programming Reference" (PDF). Intel. 2020. Retrieved 2020-10-21.
추가 정보
- 인텔 TSX의 하드웨어 잠금 해제에 대한 소프트웨어 기반 개선Afek, Y.; Levy, A.; Morrison, A. (2014). Proceedings of the 2014 ACM symposium on Principles of distributed computing - PODC '14. Software-improved hardware lock elision, p. 212. doi:10.1145/2611462.2611482. ISBN 9781450329446. S2CID 16645370..
외부 링크
- IDF 2012 프레젠테이션 (PDF)
- Linux, Linux Plumbers Conference 2012에 잠금 기능 추가(PDF)
- GNU C 라이브러리(LWN.net, 2013년 1월 30일, Andi Kleen)에서 잠금 해제
- TSX 최적화 가이드, 12장 (PDF)
- 소프트웨어 개발자 매뉴얼, 제1권, 2.5장 (PDF)
- 인텔 트랜잭션 동기화 확장 기능에 대한 웹 리소스
- x86, microcode: BUG: x86_capability를 변경하는 microcode 업데이트, LKML, 2014년 9월 (또 다른 유사한 버그 리포트 있음)
- 인텔 마이크로코드, Gentoo, 2015년 9월 19일