댓글에서 븅신같이 소프트웨어 멀티쓰레드얘기하는새끼들은 재끼고

넌 하드웨어 멀티쓰레드 얘기중인거잖아.

한 코어에서 다중쓰레드가 진행되는거.

씨발 시분할얘기말고 좆 빡대가리새끼들아.
8코어 16쓰레드 할때 16쓰레드가 소프트웨어 쓰레드 얘기겠냐?

여튼 8코어 16쓰레드에 대해 알려줄게.


일단,
하나의 처리기가 명령어를 1클럭당 하나씩 내뱉지 않는다.

보통 2way. 4way로 내뿜는다.

근데 여기서 4웨이라고 4개의 서로다른 소프트웨어쓰레드걸 가져오는게 아니야

똑같은 소프트웨어 쓰레드의 명령어4개씩 가져온다.

그래, 이 개념은 필연적으로
비순차실행을 야기한다.

ILP를 만족하면서 명령어가 비순차적으로 4개씩 들어간다.

근데, 이게 한계가 있는게,
명령어간 의존관계가 생기면
인스트럭션을 못가져옴.

분기예측으로 가져오긴 한다만,
어쨌든 구멍이 생김.

그럼 그동안 처리기가 노느냐?

아니다.

다른 소프트웨어 쓰레드의 인스트럭션을 가져온다.

이때,
파이프라인 안에서 동시에 서로다른 소프트웨어 쓰레드의 명령어들이 존재한다.

이거는 컨텍스트스위치만으로는 표현할수 없음.

파이프라인이 돌려면
레지스터(컨텍스트)들이 전부 고정되어있어야함.


즉, 두개의 컨텍스트 모두를 저장할 레지스터가 필요.


8코어 16쓰레드라 함은,
4웨이(예시임) 코어당 2배의 레지스터
를 의미한다

레지스터가 두배면 걍 코어가 두개인거 아니냐 할 수있는데

인스트럭션 펫쳐나 ALU의 펑셔널유닛은 한개로 공유하기때문임.