댓글에서 븅신같이 소프트웨어 멀티쓰레드얘기하는새끼들은 재끼고
넌 하드웨어 멀티쓰레드 얘기중인거잖아.
한 코어에서 다중쓰레드가 진행되는거.
씨발 시분할얘기말고 좆 빡대가리새끼들아.
8코어 16쓰레드 할때 16쓰레드가 소프트웨어 쓰레드 얘기겠냐?
여튼 8코어 16쓰레드에 대해 알려줄게.
일단,
하나의 처리기가 명령어를 1클럭당 하나씩 내뱉지 않는다.
보통 2way. 4way로 내뿜는다.
근데 여기서 4웨이라고 4개의 서로다른 소프트웨어쓰레드걸 가져오는게 아니야
똑같은 소프트웨어 쓰레드의 명령어4개씩 가져온다.
그래, 이 개념은 필연적으로
비순차실행을 야기한다.
ILP를 만족하면서 명령어가 비순차적으로 4개씩 들어간다.
근데, 이게 한계가 있는게,
명령어간 의존관계가 생기면
인스트럭션을 못가져옴.
분기예측으로 가져오긴 한다만,
어쨌든 구멍이 생김.
그럼 그동안 처리기가 노느냐?
아니다.
다른 소프트웨어 쓰레드의 인스트럭션을 가져온다.
이때,
파이프라인 안에서 동시에 서로다른 소프트웨어 쓰레드의 명령어들이 존재한다.
이거는 컨텍스트스위치만으로는 표현할수 없음.
파이프라인이 돌려면
레지스터(컨텍스트)들이 전부 고정되어있어야함.
즉, 두개의 컨텍스트 모두를 저장할 레지스터가 필요.
즉
8코어 16쓰레드라 함은,
4웨이(예시임) 코어당 2배의 레지스터
를 의미한다
레지스터가 두배면 걍 코어가 두개인거 아니냐 할 수있는데
인스트럭션 펫쳐나 ALU의 펑셔널유닛은 한개로 공유하기때문임.
넌 하드웨어 멀티쓰레드 얘기중인거잖아.
한 코어에서 다중쓰레드가 진행되는거.
씨발 시분할얘기말고 좆 빡대가리새끼들아.
8코어 16쓰레드 할때 16쓰레드가 소프트웨어 쓰레드 얘기겠냐?
여튼 8코어 16쓰레드에 대해 알려줄게.
일단,
하나의 처리기가 명령어를 1클럭당 하나씩 내뱉지 않는다.
보통 2way. 4way로 내뿜는다.
근데 여기서 4웨이라고 4개의 서로다른 소프트웨어쓰레드걸 가져오는게 아니야
똑같은 소프트웨어 쓰레드의 명령어4개씩 가져온다.
그래, 이 개념은 필연적으로
비순차실행을 야기한다.
ILP를 만족하면서 명령어가 비순차적으로 4개씩 들어간다.
근데, 이게 한계가 있는게,
명령어간 의존관계가 생기면
인스트럭션을 못가져옴.
분기예측으로 가져오긴 한다만,
어쨌든 구멍이 생김.
그럼 그동안 처리기가 노느냐?
아니다.
다른 소프트웨어 쓰레드의 인스트럭션을 가져온다.
이때,
파이프라인 안에서 동시에 서로다른 소프트웨어 쓰레드의 명령어들이 존재한다.
이거는 컨텍스트스위치만으로는 표현할수 없음.
파이프라인이 돌려면
레지스터(컨텍스트)들이 전부 고정되어있어야함.
즉, 두개의 컨텍스트 모두를 저장할 레지스터가 필요.
즉
8코어 16쓰레드라 함은,
4웨이(예시임) 코어당 2배의 레지스터
를 의미한다
레지스터가 두배면 걍 코어가 두개인거 아니냐 할 수있는데
인스트럭션 펫쳐나 ALU의 펑셔널유닛은 한개로 공유하기때문임.
ip랑 레지스터는 쓰레드당 하나지만 alu나 캐시는 공유한다 이말임
ㅇㅇ l1캐시도 코어당 한개네
워워 릴랙스 구기상 ㅇㅅㅇ
ㅋㅋㅋ
아 그니까 니 말은 코어가 4웨이면 제어 유닛(니말에 따르면 처리기)이 한방에 4개씩 명령어 처리.(그 4개가 동시에 들어와서 순서 어떻게되는건 지가 알아서 비순차적 뭐시기로 처리.) 근데 한방에 4개씩 처리하면 레지스터가 1개짜리면 코어가 노는 시간이 생겨서 손해인데 레지스터 2개로 해버리면 레지스터엔 계속 데이터 남아서 코어가 놀지 않고 빠릿빠릿하게 4개씩 가져온다는 소리지? 이게 멀티 쓰레드라는거고? 시바 그래도 이해 안되는 거 있음 내가 다시 글 써본다
이거 해결됐니?