Które rdzenie odpowiadają poszczególnym „procesorom” poniżej?
Zakładając, że mamy Core 1, 2, 3 i 4, CPU4 i CPU5 reprezentują rdzeń 3.
Czy (powiedzmy) procesor 6 i procesor 7 poniżej stanowią jeden rdzeń; HT i prawdziwy rdzeń?
Nie ma różnicy między nimi - oba mają fizyczny interfejs sprzętowy do procesora, interfejs logiczny jest zaimplementowany sprzętowo (więcej informacji znajduje się w arkuszu danych procesora Intel Core Processor, tom 1 ). Zasadniczo każdy rdzeń ma dwie oddzielne jednostki wykonawcze, ale dzieli między nimi niektóre wspólne zasoby. Dlatego w niektórych przypadkach hiperwątkowanie może faktycznie obniżyć wydajność.
Jeśli na przykład procesor 6 reprezentuje prawdziwy rdzeń, a procesor 7 rdzeń HT, czy wątek przypisany tylko do procesora CPU7 otrzyma tylko resztki zasobów prawdziwego rdzenia? (zakładając, że rdzeń wykonuje inne zadania)
Patrz wyżej. Wątek przypisany TYLKO CPU6 lub TYLKO CPU7 będzie działał z dokładnie taką samą prędkością (zakładając, że wątek działa tak samo, a pozostałe rdzenie procesora są w stanie bezczynności). System Windows wie o procesorach z obsługą HT, a harmonogram procesów uwzględnia te rzeczy.
Czy hyperthreaded jest zarządzany całkowicie w procesorze, tak że wątki są wewnętrznie żonglowane? Jeśli tak, to czy dotyczy to zakresu procesora, czy zakresu podstawowego? Przykład: jeśli CPU 6 i 7 reprezentują jeden rdzeń, czy nie ma znaczenia, do którego procesu jest przypisany, ponieważ CPU przypisze zasoby odpowiednio do działającego wątku?
Obie. Sam sprzęt nie planuje, na których rdzeniach uruchamiane są programy, takie jest zadanie systemu operacyjnego. Sam procesor jest jednak odpowiedzialny za współdzielenie zasobów między rzeczywistymi jednostkami wykonawczymi, a Intel decyduje, w jaki sposób można napisać kod, aby uczynić to tak wydajnym, jak to możliwe.
Zauważam, że długo działające procesy jednowątkowe są dość często odbijane wokół rdzeni, przynajmniej według menedżera zadań. Czy to oznacza, że przypisanie procesu do jednego rdzenia nieco poprawi wydajność (unikając przełączników kontekstu i unieważnienia pamięci podręcznej itp.)? Jeśli tak, to czy mogę wiedzieć, że nie przypisuję do „tylko wirtualnego rdzenia”?
Jest to normalne zachowanie i nie, przypisanie go do jednego rdzenia nie poprawi wydajności. Biorąc to pod uwagę, jeśli z jakiegoś powodu chcesz upewnić się, że pojedynczy proces jest wykonywany tylko na jednym fizycznym rdzeniu, przypisz go do dowolnego pojedynczego procesora logicznego.
Powód, dla którego proces „odbija się”, wynika z harmonogramu procesu. Jest to normalne zachowanie i najprawdopodobniej zmniejszysz wydajność, ograniczając liczbę rdzeni, na których proces może być wykonywany (niezależnie od liczby wątków), ponieważ program planujący procesy musi teraz pracować ciężej, aby wszystko działało zgodnie z nałożonymi ograniczeniami. Tak, w większości przypadków kara ta może być nieistotna, ale najważniejsze jest, jeśli nie masz ku temu powodu, nie rób tego !