bfiber_1200
Boost.Fiber Specualtive execution
Specualtive execution - 추측 실행
📦 Hardware transactional memory - 하드웨어 트랜잭션 메모리
하드웨어 트랜잭션 메모리의 도움으로 여러 논리 프로세서가 추측적(예를 들어, 명시적인 동기화 없이)으로 임계(critical/臨界) 영역(region)을 실행합니다.
트랜잭션 실행이 성공적으로 완료되면 트랜잭션 영역 내에서 수행된 모든 메모리 작업은 스레드 간 직렬화(inter-thread serialization) 없이 커밋됩니다.
낙관적 실행(optimistic execution)이 실패하면 프로세서는 트랜잭션을 중단하고 수행된 모든 수정 사항을 삭제합니다.
비트랜잭션 코드에서는 단일 잠금이 임계 영역(critical region)에 대한 액세스를 직렬화합니다.
트랜잭션 메모리를 사용하면 여러 논리 프로세서가 트랜잭션을 시작하고 임계 영역 내부의 메모리(데이터)를 업데이트합니다.
일부 논리 프로세서가 동일한 데이터를 업데이트하려고 시도하지 않는 한 트랜잭션은 항상 성공합니다.
⚛ Hardware transactional memory 설명 (chatgpt)
📦 Intel Transactional Synchronisation Extensions (TSX) - Intel TSX(트랜잭션 동기화 확장)
TSX는 Intel이 최신 Intel 프로세서에 하드웨어 트랜잭션 메모리를 구현한 것입니다.
TSX에서 하드웨어는 트랜잭션에서 어떤 캐시라인(cachelines)을 읽고 썼는지 추적합니다.
캐시 라인 크기(64바이트)와 n방향(n-way) 세트 연관 캐시에 따라 트랜잭션의 최대 메모리 크기가 결정됩니다.
예를 들어 트랜잭션이 8방향 세트 연관 캐시가 있는 프로세서에서 9개의 캐시 라인을 수정하는 경우 트랜잭션은 항상 중단됩니다.
• Note 1
htm=tsx 속성이 b2 명령줄에 지정되고 'BOOST_USE_TSX'가 컴파일러에 적용되면 TXS가 활성화됩니다.
• Note 2
부동 소수점 상태가 임계(critical) 영역 내에서 수정되면 TSX 트랜잭션이 중단됩니다.
결과적으로 부동 소수점 연산, 예: 파이버(컨텍스트) 전환 중에는 부동 소수점 관련 레지스터의 저장/로드가 비활성화됩니다.
• Important
TSX는 현재 'MSVC'와 함께 사용할 수 없습니다!
Boost.Fiber는 TSX 지원 스핀록을 사용하여 임계 영역을 보호합니다.
(튜닝 섹션 참조)