Superscalar cpu 는 여러 개의 pipeline 을 두어서 clock 당 여러 개의 instruction 을 동시에 실행하는
instruction level parallelism 을 구현합니다.
그런데 이것은 하나의 task 에 한정이 되는 것인데요
한 cycle 에 동시에 여러 개의 task 에서 instruction 을 가져와 실행하여 thread level parallelism 을 구현하는 것이
SMT ( Simultaneous Multi-Threading ) 입니다.
보통 하드웨어 스레드라고 하는 것이 이것인데요.
intel 은 hyper-threading 이라는 이름으로 SMT 를 구현해서 하나의
cpu core 에서 2 개의 하드웨어 스레드를 실행할 수 있게 하였습니다
이 두 개의 스레드가 동시에 실행될 때 L1 data cache 를 공유하게 되는데
이때 PTE ( Page Table Entry ) 의 present bit 값이 clear 돼있거나, 다른 reserved bits 값이 set 되어있으면
speculative 실행 방법을 통해서 L1 data cache 에 있는 값에 접근할 수 있다고 합니다.
meltdown 의 경우는 kernel space 로의 접근 보호를 무력화 시키지만
L1TF 의 경우는 시스템 내의 모든 물리 주소와 protection domains 에 해당이 되고
그리고 이 방법은 가상화에 사용되는 EPT ( extended page table ) protection mechanism 도 회피하기 때문에
가상머신에도 동일하게 적용된다고 합니다.
AMD cpu 는 적용되지 않는다고 합니다.
[ Understanding L1 Terminal Fault (L1TF) ]
https://www.youtube.com/watch?v=n_pa2AisRUs