해결된 질문
작성
·
279
0
안녕하세요.
코어와 하이퍼스레드간의 명령어 처리개수에 대해 궁금한점이 있어서 질문드립니다.
빠른 CPU를 위한 설계기법 챕터에서 하드웨어 스레드라고 설명주신 하이퍼스레드기술이 적용된 CPU는 4코어 8스레드의 경우, 8개의 명령어를 한 번에 처리할 수 있다고 말씀을 주셨습니다.
근데 제가 기존에 알고있던 하이퍼스레드의 경우 CPU내의 다양한 유닛들 (ALU, FPU 등) 중 잉여자원이 있을시 이를 끌어다가 대신 활용하는 방식으로 알고있습니다.
즉 경우에 따라서 자원이 남아있다면 사용할 것이고 부족하다면 사용하지 못할텐데 ( 설령 자원이 있더라도 유닛의 목적과 다른 기능을 한다면 정상적인 성능을 뽑아낼지도 의문이긴 합니다. ) 이를 8개의 명령어를 처리할 수 있다고 봐도될지 궁금합니다.
질문을 좀 정리하면
제가 이해한 방식이 하이퍼스레딩, 즉 하드웨어 스레드가 맞는걸까요 ?
하이퍼 스레드가 적용된 4코어 8스레드 CPU의 경우 8개의 명령어가 아닌 '최대' 8개의 명령어까지 처리할 수 있다고 보면될까요 ?
2번 항목에 의해 8개의 명령어를 처리할 수 있다고 했을때 8코어 8스레드와 동일한 수준으로 봐도 될지 궁금합니다.
답변 1
0
음.. 단순히 '잉여자원이 남아있을시 이를 끌어다가 대신 활용하는 방식'만으로 정의하기에는 다소 부족해보입니다.
왜냐하면 하이퍼스레딩 자체가 CPU의 설계 기술이기 때문입니다
그 대표 예시로써 레지스터 세트가 두 개 이상 있는 설계를 든 것이구요.
말씀하신대로 명령어를 처리할 기반 부품이 여러 개 있다면 잉여자원이 너 많이 남아 빠르게 많은 명령어를 처리할 수는 있을 것 같습니다.
첨언하자면 말씀하신 '잉여자원이 남아있을시 이를 끌어다가 대신 활용하는 방식'은
명령어 병렬처리 기법에 조금 더 가까워보입니다.
'자원이 남아있다면 사용할 것이고 부족하다면 사용하지 못할텐데' 이 부분은 추후 학습하실 파이프라이닝 위험과 유사해보이고요 🙂
감사합니다.