Tryb Hyper V wpływa na wydajność komputera. Hyper-Threading – co to jest? Jak włączyć funkcję Hyper-Threading? Jak działa Hyper-Threading

„...I jesteśmy dumni i nasz wróg jest dumny
Ręko, zapomnij o lenistwie. Zobaczmy,
kto w końcu ma czyje buty
w końcu zegnie kolana…”
© film "D"Artagnan i trzej muszkieterowie"

Jakiś czas temu autor pozwolił sobie „trochę ponarzekać” na temat nowego paradygmatu Intel Hyper Threading. Trzeba przyznać, że Intel zdziwienie autora nie pozostało niezauważone. Dlatego autorowi zaproponowano pomoc w ustaleniu ( jak delikatnie ocenili menadżerowie korporacji) „prawdziwa” sytuacja z technologią Hyper Threading. Cóż, chęć poznania prawdy można tylko pochwalić. Czyż nie tak, drogi czytelniku? Tak przynajmniej brzmi jeden z truizmów: prawda, że ​​to dobrze. Cóż, postaramy się działać zgodnie z tym zwrotem. Co więcej, rzeczywiście pojawiła się pewna ilość nowych informacji.

Na początek sformułujmy, co dokładnie wiemy o technologii Hyper Threading:

1. Technologia ta ma na celu zwiększenie wydajności procesora. Faktem jest, że według szacunków Intela działa tylko 30% czasu ( Nawiasem mówiąc, jest to dość kontrowersyjna liczba; szczegóły jej obliczeń nie są znane) wszystkich elementów wykonawczych w procesorze. Zgadzam się, to dość obraźliwe. A fakt, że powstał pomysł, aby w jakiś sposób „dodać” pozostałe 70%, wydaje się całkiem logiczny ( Co więcej, sam procesor Pentium 4, w którym zostanie zaimplementowana ta technologia, nie cierpi na nadmierną wydajność na megaherc). Autor zmuszony jest więc przyznać, że pomysł ten jest całkiem słuszny.

2. Istota technologii Hyper Threading polega na tym, że podczas wykonywania jednego „wątku” programu bezczynne urządzenia wykonawcze mogą rozpocząć wykonywanie innego „wątku” programu ( lub „wątki” inny programy). Lub, na przykład, wykonując jedną sekwencję poleceń, poczekaj, aż dane z pamięci wykonają inną sekwencję.

3. Naturalnie, wykonując różne „wątki”, procesor musi w jakiś sposób rozróżnić, które polecenia należą do którego „wątku”. Oznacza to, że istnieje pewien mechanizm ( jakiś znak), dzięki czemu procesor rozróżnia, do którego „wątku” należą polecenia.

4. Jasne jest również, że biorąc pod uwagę niewielką liczbę rejestrów ogólnego przeznaczenia w architekturze x86 ( łącznie 8), każdy wątek ma swój własny zestaw rejestrów. Jednak nie jest to już nowość; to ograniczenie architektoniczne zostało ominięte już od dłuższego czasu za pomocą „zmiany nazwy rejestru”. Innymi słowy, istnieje znacznie więcej rejestrów fizycznych niż logicznych. W procesorze Pentium III jest ich 40. Z pewnością liczba ta w przypadku Pentium 4 jest większa; z wyjątkiem rozważań na temat „symetrii”:-) opinia jest taka, że ​​jest ich około setki. Nie udało się znaleźć wiarygodnych informacji na temat ich liczby. Według niepotwierdzonych jeszcze danych jest ich 256. Według innych źródeł, inna liczba. Generalnie kompletna niepewność... Nawiasem mówiąc, stanowisko Intela ws Ten powód jest całkowicie niezrozumiały :-( Autor nie rozumie, co spowodowało taką tajemnicę.

5. Wiadomo też, że w przypadku, gdy kilka „wątków” zajmuje te same zasoby lub jeden z „wątków” oczekuje na dane, aby uniknąć spadku wydajności, programista musi wstawić specjalną „pauzę” Komenda. Oczywiście będzie to wymagało kolejnej rekompilacji programów.

6. Oczywiste jest również, że mogą zaistnieć sytuacje, w których próby jednoczesnego wykonania kilku „wątków” doprowadzą do spadku wydajności. Przykładowo, ze względu na to, że rozmiar pamięci podręcznej L2 nie jest nieskończony, a aktywne „wątki” będą próbowały załadować pamięć podręczną, możliwe jest, że taka „walka o pamięć podręczną” doprowadzi do ciągłego czyszczenia i ponownego ładowania pamięci podręcznej dane w pamięci podręcznej drugiego poziomu.

7. Intel twierdzi, że optymalizując programy pod tę technologię, zysk wyniesie aż 30%. ( A raczej Intel twierdzi, że w dzisiejszych aplikacjach serwerowych i dzisiejszych systemach aż do 30%) Hmm... To więcej niż wystarczająca zachęta do optymalizacji.

Cóż, sformułowaliśmy pewne funkcje. Spróbujmy teraz przemyśleć pewne implikacje ( w miarę możliwości w oparciu o znane nam informacje). Co możemy powiedzieć? Cóż, po pierwsze, musimy przyjrzeć się bliżej temu, co dokładnie jest nam oferowane. Czy ten ser naprawdę jest „darmowy”? Najpierw zastanówmy się, jak dokładnie nastąpi „jednoczesne” przetwarzanie kilku „wątków”. Swoją drogą, co Intel rozumie pod słowem „wątek”?

Autor ma wrażenie ( prawdopodobnie błędne), co w tym przypadku odnosi się do fragmentu programu, który wielozadaniowy system operacyjny przydziela do wykonania jednemu z procesorów wieloprocesorowego systemu sprzętowego. "Czekać!" uważny czytelnik powie: „to jedna z definicji! Co tu nowego?” I nic w środku dany Autor nie rości sobie w tej kwestii oryginalności. Chciałbym dowiedzieć się, co Intel było „oryginalne” :-). Cóż, przyjmijmy to jako hipotezę roboczą.

Następnie wykonywany jest określony wątek. Tymczasem dekoder poleceń ( nawiasem mówiąc, całkowicie asynchroniczny i nieuwzględniony w notorycznych 20 etapach Net Burst) wykonuje próbkowanie i deszyfrowanie ( ze wszystkimi współzależnościami) W mikroinstrukcje. W tym miejscu należy wyjaśnić, co autor rozumie pod słowem „asynchroniczny” - faktem jest, że wynik „zapadnięcia” poleceń x86 w mikroinstrukcjach następuje w bloku deszyfrującym. Każda instrukcja x86 może zostać zdekodowana na jedną, dwie lub więcej mikroinstrukcji. Jednocześnie na etapie przetwarzania wyjaśniane są współzależności i dostarczane są niezbędne dane poprzez magistralę systemową. W związku z tym szybkość działania tego bloku często będzie zależała od szybkości dostępu do danych z pamięci i w najgorszym przypadku będzie przez nią determinowana. Logiczne byłoby „odwiązanie” go od rurociągu, w którym w rzeczywistości wykonywane są mikrooperacje. Dokonano tego poprzez umieszczenie bloku deszyfrującego zanim pamięć podręczną śledzenia. Co dzięki temu osiągamy? Za pomocą tej „przegrupowania bloków” osiągamy prostą rzecz: jeśli w pamięci podręcznej śledzenia znajdują się mikroinstrukcje do wykonania, procesor działa wydajniej. Naturalnie, to urządzenie działa z częstotliwością procesora, w przeciwieństwie do Rapid Engine. Swoją drogą autor odniósł wrażenie, że ten dekoder to coś w rodzaju przenośnika taśmowego o długości do 10–15 stopni. Zatem od pobrania danych z pamięci podręcznej do uzyskania wyniku najwyraźniej jest około 30 35 etapów ( w tym potok Net Burst, zobacz Zasoby Microdesign z sierpnia 2000 r. Raport dotyczący mikroprocesora, tom 14 Archiwum 8, strona 12).

Powstały zestaw mikrorozkazów, wraz ze wszystkimi współzależnościami, gromadzi się w pamięci podręcznej śledzenia w tej samej pamięci podręcznej, która zawiera około 12 000 mikrooperacji. Według przybliżonych szacunków źródłem takiego oszacowania jest struktura mikrorozkazu P6; faktem jest, że zasadniczo jest mało prawdopodobne, aby długość instrukcji uległa radykalnej zmianie ( Biorąc pod uwagę długość mikrorozkazu wraz z polami usługowymi, wynosi ona około 100 bitów) uzyskuje się rozmiar pamięci podręcznej śledzenia 96 KB do 120 KB!!! Jednakże! Na tym tle pamięć podręczna danych o rozmiarze 8 KB wygląda jakoś asymetrycznie :-)… i blado. Oczywiście wraz ze wzrostem rozmiaru zwiększają się opóźnienia w dostępie ( na przykład po zwiększeniu do 32 KB opóźnienia zamiast dwóch cykli zegara wyniosą 4). Ale czy prędkość dostępu do tej właśnie pamięci podręcznej danych jest naprawdę tak ważna, że ​​zwiększenie opóźnienia o 2 cykle zegara ( na tle całkowitej długości całego przenośnika) sprawia, że ​​takie zwiększenie wolumenu jest nieopłacalne? A może jest to po prostu kwestia niechęci do zwiększania rozmiaru kryształów? Ale potem, przechodząc do 0,13 mikrona, pierwszym krokiem było zwiększenie tej konkretnej pamięci podręcznej ( nie jest to pamięć podręczna drugiego poziomu). Ci, którzy wątpią w tę tezę, powinni pamiętać przejście z Pentium na Pentium MMX dzięki zwiększeniu pamięci podręcznej pierwszego poziomu podwoił się Prawie wszystkie programy uzyskały wzrost wydajności o 10–15%. Co możemy powiedzieć o podwyżce? poczwórny (zwłaszcza biorąc pod uwagę, że prędkości procesora wzrosły do ​​2 GHz, a współczynnik mnożenia z 2,5 do 20)? Według niepotwierdzonych doniesień, w kolejnej modyfikacji rdzenia Pentium4 (Prescott) pamięć podręczna pierwszego poziomu zostanie zwiększona do 16 lub 32 KB. Zwiększy się także pamięć podręczna drugiego poziomu. Jednak w tej chwili wszystko to jest niczym więcej niż plotkami. Szczerze mówiąc, jest to nieco myląca sytuacja. Choć, zróbmy zastrzeżenie, autor w pełni przyznaje, że taki pomysł stoi na przeszkodzie pewnej konkretnej przyczyny. Na przykład pewne wymagania dotyczące geometrii układu bloków lub banalny brak wolnej przestrzeni w pobliżu przenośnika ( jasne jest, że konieczne jest zlokalizowanie pamięci podręcznej danych bliżej jednostki ALU).

Nie rozpraszając się, przyjrzyjmy się procesowi dalej. Rurociąg działa, pozwól obecnym zespołom korzystać z ALU. Oczywiste jest, że FPU, SSE, SSE2 i inne są bezczynne. Nie ma takiego szczęścia, w grę wchodzi funkcja Hyper Threading. Zauważając, że mikrorozkazy są gotowe wraz z danymi dla nowego wątku, jednostka zmieniająca nazwę rejestru przydziela nowemu wątkowi część rejestrów fizycznych. Nawiasem mówiąc, możliwe są dwie opcje: blok rejestrów fizycznych jest wspólny dla wszystkich wątków lub osobny dla każdego. Sądząc po tym, że w prezentacji Hyper Threading firmy Intel blok zmiany nazwy rejestru nie jest wymieniony jako bloki wymagające zmiany, wybrano pierwszą opcję; To dobrze czy źle? Z punktu widzenia technologów jest to oczywiście dobre, bo oszczędza tranzystory. Z punktu widzenia programistów nadal nie jest to jasne. Jeżeli liczba rejestrów fizycznych wynosi w rzeczywistości 128, to przy jakiejkolwiek rozsądnej liczbie wątków nie może dojść do sytuacji „niedoboru rejestru”. Wtedy oni ( mikroinstrukcje) są wysyłane do programu planującego, który w rzeczywistości wysyła je do urządzenia wykonawczego ( jeśli nie jest zajęty) lub „w kolejce”, jeśli ten siłownik nie jest obecnie dostępny. W idealnym przypadku osiąga się zatem bardziej efektywne wykorzystanie istniejących siłowników. W tym czasie sam procesor z punktu widzenia systemu operacyjnego wygląda jak dwa „logiczne” procesory. Hm... Czy naprawdę wszystko jest takie bezchmurne? Przyjrzyjmy się bliżej sytuacji: element wyposażenia ( takie jak pamięci podręczne, Rapid Engine, moduł przewidywania przejścia) są wspólne dla obu procesorów. Przy okazji, dokładność przewidywania przejścia z tego najprawdopodobniej nieznacznie będzie cierpieć. Zwłaszcza jeśli jednocześnie wykonujące się wątki nie są ze sobą połączone. I część ( na przykład planista sekwencji mikrorozkazów MIS rodzaj pamięci ROM zawierającej zestaw zaprogramowanych sekwencji typowych operacji i tablicę zmiany nazw rejestrów RAT) bloki muszą być rozróżniane poprzez różne wątki działające na „różnych” procesorach. Po drodze ( od społeczności cache) wynika z tego, że jeśli dwa wątki są zachłanne na pamięć podręczną ( oznacza to, że zwiększenie pamięci podręcznej daje świetny efekt), To użycie funkcji Hyper Threading może nawet zmniejszyć prędkość. Dzieje się tak, ponieważ w tej chwili zaimplementowano „konkurencyjny” mechanizm walki o pamięć podręczną: „aktywny” w danym momencie wątek wypiera „nieaktywny”. Jednak mechanizm buforowania może najwyraźniej ulec zmianie. Oczywiste jest również, że prędkość ( przynajmniej na razie) zmniejszy się w tych zastosowaniach, w których zmniejszył się w uczciwym SMP. Na przykład SPEC ViewPerf zwykle pokazuje lepsze wyniki w systemach jednoprocesorowych. Dlatego wyniki będą prawdopodobnie niższe w systemie z funkcją Hyper Threading niż bez niej. Właściwie wyniki praktycznych testów Hyper Threading można obejrzeć pod adresem.

Swoją drogą do internetu wyciekła informacja ALU w Pentium 4 16-bitowym. Autor początkowo był bardzo sceptyczny wobec takich informacji - mówią, co myślą zazdrosni ludzie :-). I wtedy publikacja takich informacji w Micro Design Report skłoniła mnie do refleksji: a co jeśli to prawda? I choć informacja na ten temat nie jest bezpośrednio związana z tematyką artykułu, trudno się jej oprzeć :-). O ile autor „rozumie” wystarczająco, chodzi o to, że ALU jest rzeczywiście 16-bitowa. Podkreślam Tylko ALU. Nie ma to nic wspólnego z pojemnością bitową samego procesora. Zatem w pół taktu ( to się nazywa tik, tik) ALU ( podwójna częstotliwość, jak pamiętasz) oblicza tylko 16 bitów. Drugich 16 jest obliczanych w ciągu następnej połowy taktu. Stąd, nawiasem mówiąc, łatwo zrozumieć potrzebę dwukrotnego przyspieszenia ALU - jest to konieczne do terminowego „szlifowania” danych. Zatem w pełnym cyklu zegara obliczane są pełne 32 bity. Faktycznie podobno potrzebne są 2 cykle ze względu na konieczność „sklejenia” i „odklejenia” bitów, jednak kwestia ta wymaga doprecyzowania. Właściwie wykopaliska (o których można napisać osobny wiersz) przyniosły co następuje: każda jednostka ALU jest podzielona na 2 16-bitowe połówki. Pierwszy półcykl przetwarza 16 bitów dwa liczby i formularze przenoszą bity dla pozostałych połówek. Druga połowa kończy w tym momencie przetwarzanie poprzedni liczby. Drugi znacznik, pierwsza połowa procesów ALU wynosi 16 bitów Następny pary liczb i tworzy ich transfery. Druga połowa przetwarza górne 16 bitów pierwsza para liczby i otrzymuje gotowy wynik 32-bitowy. Opóźnienie w otrzymaniu 1 wyniku wynosi 1 cykl zegara, ale wtedy co pół cyklu zegara pojawia się 1 wynik 32-bitowy. Całkiem dowcipny i skuteczny. Dlaczego wybrano ten konkretny model ALU? Podobno przy takiej organizacji Intel upiecze kilka pieczeń na jednym ogniu:

1. Oczywiste jest, że potok o szerokości 16 bitów jest łatwiejszy do przetaktowania niż potok o szerokości 32 bitów, po prostu ze względu na obecność przesłuchów i innych

2. Najwyraźniej Intel uznał, że operacje obliczania liczb całkowitych są wystarczająco częste, aby przyspieszyć jednostkę ALU, a nie, powiedzmy, FPU. Jest prawdopodobne, że przy obliczaniu wyników operacji na liczbach całkowitych używane są tabele lub schematy „akumulowane przez przeniesienie”. Dla porównania jedna tablica 32-bitowa to adresy 2E32, czyli: 4 gigabajty. Dwie 16-bitowe tablice to 2x64kb lub 128 kilobajtów, poczuj różnicę! Akumulacja łączników w dwóch 16-bitowych porcjach następuje szybciej niż w jednej 32-bitowej części.

3. Oszczędza tranzystory i... ciepło. W końcu nie jest tajemnicą, że wszystkie te architektoniczne sztuczki są podgrzewane. Najwyraźniej był dość duży (i być może dom) problem, co warto na przykład Thermal Monitor jako technologia! W końcu taka technologia jako taka nie jest zbyt potrzebna; to znaczy, oczywiście, fajnie, że istnieje. Ale bądźmy szczerzy – do wystarczającej niezawodności wystarczyłaby zwykła blokada. Ponieważ przewidziano tak złożoną technologię, oznacza to, że opcję tę poważnie rozważano, gdy takie zmiany częstotliwości w ruchu były jednym z normalnych trybów pracy. A może ten główny? Nie bez powodu pojawiły się plotki, jakoby Pentium 4 planowano ze znacznie większą liczbą siłowników. Wtedy problem z ciepłem powinien po prostu stać się głównym. A raczej, według tych samych plotek, wydzielanie ciepła powinno być na poziomie 150 W. Następnie bardzo logiczne jest podjęcie działań zapewniających działanie procesora „z pełną wydajnością” tylko w systemach, w których zapewnione jest normalne chłodzenie. Co więcej, większość przypadków pochodzenia „chińskiego” nie wyróżnia się przemyślanym designem pod względem chłodzenia. Hm.... Daleko zaszliśmy :-)

Ale to wszystko jest teoretyzowaniem. Czy są dziś procesory korzystające z tej technologii? Jeść. To jest Xeon ( Prestonia) i XeonMP. Co więcej, ciekawe jest to, że XeonMP różni się od Xeona obsługą do 4 procesorów ( chipsety takie jak IBM Summit obsługują do 16 procesorów, technika jest w przybliżeniu taka sama jak w chipsecie ProFusion) oraz obecność pamięci podręcznej trzeciego poziomu o wielkości 512 KB i 1 MB, zintegrowanej z jądrem. Swoją drogą, dlaczego zintegrowali pamięć podręczną trzeciego poziomu? Dlaczego pamięć podręczna pierwszego poziomu nie jest zwiększona?? Musi być jakiś rozsądny powód... Dlaczego nie zwiększyli pamięci podręcznej drugiego poziomu? Być może powodem jest to, że Advanced Transfer Cache wymaga stosunkowo małych opóźnień. Zwiększanie rozmiaru pamięci podręcznej prowadzi do zwiększonych opóźnień. Dlatego pamięć podręczna trzeciego poziomu dla rdzenia i pamięć podręczna drugiego poziomu są zazwyczaj „reprezentowane” jako magistrala. Tylko opona :-). Postęp jest więc oczywisty – zrobiono wszystko, żeby dane trafiły do ​​rdzenia jak najszybciej ( a jednocześnie szyna pamięci była mniej obciążona).

Cóż, okazuje się, że nie ma szczególnie wąskich gardeł? Dlaczego autor nie będzie mógł „narzekać”? Jeden procesor - a system operacyjny widzi dwa. Cienki! Dwa procesory i system operacyjny widzi 4! Uroda! Zatrzymywać się! Z jakim systemem operacyjnym to działa na 4 procesorach? Systemy operacyjne firmy Microsoft, które rozumieją koszt więcej niż dwóch procesorów zupełnie inny pieniądze. Na przykład 2000 Professional, XP Professional, NT4.0 obsługują tylko dwa procesory. A biorąc pod uwagę, że na razie technologia ta przeznaczona jest na rynek stacji roboczych ( i serwery) i jest dostępny tylko w odpowiednich procesorach - okazuje się po prostu cholernie obraźliwy. Dziś możemy używać procesorów z tą technologią jedynie kupując płytę dwuprocesorową i instalując ją jeden PROCESOR. Im dalej idziesz, tym robi się dziwniej, jak mawiała Alicja w Krainie Czarów... Oznacza to, że osoba chcąca skorzystać z tej technologii jest po prostu zmuszona do zakupu wersji Server i Advanced Server obecnych systemów operacyjnych. Aha, i „darmowy” procesor jest trochę drogi… Warto może dodać, że Intel obecnie aktywnie „komunikuje się” z Microsoftem, próbując powiązać politykę licencyjną z fizyczny edytor. Przynajmniej zgodnie z dokumentem nowe systemy operacyjne Microsoftu będą licencjonowane w oparciu o fizyczny procesor. Przynajmniej Windows XP jest licencjonowany na podstawie liczby fizycznych procesorów.

Oczywiście zawsze możesz zwrócić się do systemów operacyjnych innych producentów. Powiedzmy sobie szczerze – nie jest to zbyt dobre wyjście z obecnej sytuacji… Można więc zrozumieć wahanie Intela, który dość długo zastanawiał się, czy zastosować tę technologię, czy nie.

No cóż, nie zapominajmy o dość ważnym wniosku: Korzystanie z funkcji Hyper Threading może prowadzić zarówno do wzrostu, jak i strat wydajności. Cóż, skoro rozmawialiśmy już o przegrywaniu, spróbujmy zrozumieć, co jest potrzebne, aby wygrać: a aby wygrać, konieczne jest, aby wiedzieli o tej technologii:

  1. BIOS płyty głównej
  2. System operacyjny (!!!)
  3. A właściwie sama aplikacja

Zatrzymam się nad tym punktem bardziej szczegółowo; chodzi o to, że BIOS nie jest problemem. O systemie operacyjnym rozmawialiśmy nieco wcześniej. Ale w tych wątkach, które na przykład oczekują danych z pamięci, będziesz musiał wprowadzić specjalne polecenie pauza, aby nie spowalniać procesora; Przecież w przypadku braku danych wątek może blokować niektóre siłowniki. Aby wstawić to polecenie, trzeba będzie przekompilować aplikacje - to nie jest dobrze, ale dzięki Intelowi wszyscy ostatnio zaczęli się do tego przyzwyczajać :-). Zatem głównym ( według autora) wadą technologii Hyper Threading jest konieczność regularnej kompilacji. Główną zaletą tego podejścia jest taka rekompilacja po drodze ( i najprawdopodobniej bardziej zauważalne :-) zwiększy wydajność w „uczciwych” systemach dwuprocesorowych, co można jedynie przyjąć z zadowoleniem. Nawiasem mówiąc, istnieją już badania eksperymentalne, które to potwierdzają w większości przypadków programy zoptymalizowane pod kątem SMP, skorzystaj z funkcji Hyper Threading od 15% do 18%. To jest całkiem dobre. Przy okazji można też zobaczyć, w jakich przypadkach Hyper Threading prowadzi do spadku wydajności.

I na koniec spróbujmy wyobrazić sobie, co mogłoby się zmienić ( poprawić) w dalszym rozwoju tej idei. Jest całkiem oczywiste, że rozwój tej technologii będzie bezpośrednio powiązany z rozwojem rdzenia Pentium 4. Wyobraźmy sobie zatem potencjalne zmiany w rdzeniu. Co dalej w naszym planie? Technologia 0,09 mikrona, lepiej znana jako 90 nm…. Autor jest skłonny wierzyć ( w tym momencie), że rozwój tej rodziny procesorów będzie szedł w kilku kierunkach jednocześnie:

  • Dzięki bardziej „dokładnemu” procesowi technicznemu częstotliwość procesora stanie się jeszcze wyższa.
  • Miejmy nadzieję, że pamięć podręczna danych zostanie zwiększona. Przynajmniej do 32 KB.
  • Zrobią „uczciwą” 32-bitową ALU. To powinno poprawić produktywność.
  • Zwiększ prędkość magistrali systemowej ( jest to jednak już w najbliższej przyszłości).
  • Zrobią dwukanałową pamięć DDR ( ponownie czas oczekiwania jest stosunkowo krótki).
  • Być może wprowadzą analogię technologii x86-64, jeśli ta technologia ( dzięki AMD) zapuści korzenie. Jednocześnie autor z całych sił ma nadzieję, że ten analog będzie kompatybilny z x86-64. Przestań tworzyć rozszerzenia, które są ze sobą niezgodne... Ponownie zainteresuje nas Jerry Sanders, w którym stwierdził, że AMD i Intel porozumiały się w zeszłym roku w sprawie wzajemnego licencjonowania wszystkiego z wyjątkiem magistrali systemowej Pentium4. Czy to oznacza, że ​​Intel wbuduje x86-64 w kolejny rdzeń Pentium4 (Prescott), a AMD wbuduje technologię Hyper Threading w swoje procesory? Interesujące pytanie...
  • Być może liczba siłowników zostanie zwiększona. To prawda, podobnie jak poprzedni, jest to dość kontrowersyjny punkt, ponieważ wymaga prawie całkowitego przeprojektowania jądra - a jest to długi i pracochłonny proces.

Ciekawe czy pomysł Hyper Threading zostanie rozwinięty? Faktem jest, że ilościowo nie ma gdzie się rozwijać; jasne jest, że dwa procesory fizyczne są lepsze niż trzy logiczne. Tak, a pozycjonowanie nie będzie łatwe... Co ciekawe, Hyper Threading może być również przydatny podczas integrowania dwóch ( albo więcej) procesorów na chip. Otóż ​​przez zmiany jakościowe autor ma na myśli to, że obecność takiej technologii w zwykłych desktopach doprowadzi do tego, że tak naprawdę większość użytkowników będzie pracować na maszynach [prawie] dwuprocesorowych, co jest bardzo dobre. To dobrze, bo takie maszyny działają znacznie płynniej i lepiej reagują na działania użytkownika, nawet przy dużym obciążeniu. Z punktu widzenia autora jest to bardzo dobre.

Zamiast posłowia

Autor musi przyznać, że w trakcie pracy nad artykułem jego podejście do Hyper Threading zmieniało się kilkukrotnie. W miarę gromadzenia i przetwarzania informacji nastawienie stawało się albo ogólnie pozytywne, albo odwrotnie :-). Na chwilę obecną możemy napisać co następuje:

Istnieją tylko dwa sposoby poprawy wydajności: zwiększyć częstotliwość i zwiększyć wydajność na zegar. A jeśli cała architektura Pentium4 jest zaprojektowana dla pierwszej ścieżki, to Hyper Threading jest dopiero drugą. Z tego punktu widzenia można to tylko powitać z zadowoleniem. Hyper Threading ma również kilka ciekawych konsekwencji, takich jak: zmiana paradygmatu programowania, upowszechnienie wieloprocesorowości, zwiększenie wydajności procesora. Na tej ścieżce jest jednak kilka „dużych wybojów”, na których ważne jest, aby „nie utknąć”: brak normalnego wsparcia ze strony systemów operacyjnych i, co najważniejsze, konieczność ponownej kompilacji ( a w niektórych przypadkach zmiana algorytmu), aby mogły w pełni wykorzystać technologię Hyper Threading. Ponadto obecność Hyper Threading umożliwiłaby naprawdę równoległe uruchamianie systemu operacyjnego i aplikacji, a nie „kawałki” pojedynczo, jak ma to miejsce obecnie. Oczywiście pod warunkiem, że będzie wystarczająca ilość wolnych siłowników.

Autor pragnie podkreślić swą wdzięczność Maksym Lenia(aka C.A.R.C.A.S.S.) i Ilia Vaitsman(aka Stranger_NN) za wielokrotną i nieocenioną pomoc w pisaniu artykułu.
Chciałbym także podziękować wszystkim uczestnikom forum, którzy wielokrotnie wyrażali cenne uwagi.

Hyper Threading (hiperwątkowość, „hiperwątkowość”, hyper threading - rosyjski) - technologia opracowana przez firmę Intel, umożliwiając rdzeniu procesora wykonywanie więcej niż jednego (zwykle dwóch) wątków danych. Ponieważ stwierdzono, że typowy procesor w większości zadań zużywa nie więcej niż 70% z całej mocy obliczeniowej zdecydowano się zastosować technologię, która pozwala, gdy pewne jednostki obliczeniowe są bezczynne, załadować je pracą z innym wątkiem. Pozwala to zwiększyć wydajność jądra od 10 do 80% w zależności od zadania.

Zrozumienie działania Hyper-Threading .

Załóżmy, że procesor wykonuje proste obliczenia, a jednocześnie blok instrukcji jest bezczynny i SIMD rozszerzenia.

Moduł adresujący wykrywa to i wysyła tam dane do późniejszych obliczeń. Jeśli dane są specyficzne, bloki te będą wykonywać je wolniej, ale dane nie będą bezczynne. Lub wstępnie je przetworzą w celu dalszego szybkiego przetwarzania przez odpowiedni blok. Daje to dodatkowy wzrost wydajności.

Oczywiście wątek wirtualny nie dociera do pełnoprawnego jądra, ale pozwala to osiągnąć prawie 100% wydajność mocy obliczeniowej, obciążając pracą niemal cały procesor, zapobiegając jego bezczynności. Z tym wszystkim, do wdrożenia technologii HT zajmuje to tylko około 5% dodatkowe miejsce na chipie, a czasami można zwiększyć wydajność 50% . Ten dodatkowy obszar obejmuje dodatkowe bloki rejestrów i przewidywania rozgałęzień, które obliczają strumieniowo, gdzie aktualnie można wykorzystać moc obliczeniową i wysyłają tam dane z dodatkowego bloku adresującego.

Po raz pierwszy technologia pojawiła się na procesorach Pentium 4, ale nie było dużego wzrostu wydajności, ponieważ sam procesor nie miał dużej mocy obliczeniowej. Wzrost był co najwyżej 15-20% , a w wielu zadaniach procesor działał znacznie wolniej niż bez HT.

Kierowco zwolnij procesor ze względu na technologię Hyper Threading, występuje, jeśli:

  • Niewystarczająca pamięć podręczna za to wszystko i cyklicznie uruchamia się ponownie, spowalniając procesor.
  • Dane nie mogą zostać poprawnie przetworzone przez predyktor gałęzi. Występuje głównie z powodu brak optymalizacji dla określonego oprogramowania lub wsparcia ze strony systemu operacyjnego.
  • Może to również nastąpić z powodu zależności danych, gdy np. pierwszy wątek wymaga natychmiastowych danych od drugiego, ale nie jest to jeszcze gotowe, lub czeka na kolejny wątek. Lub dane cykliczne wymagają pewnych bloków do szybkiego przetwarzania i są ładowane innymi danymi. Może istnieć wiele odmian zależności od danych.
  • Jeżeli rdzeń jest już mocno obciążony, a „niewystarczająco inteligentny” moduł przewidywania rozgałęzień nadal wysyła dane spowalniające procesor (dotyczy Pentium 4).

Po Pentium 4, Intel zaczął używać technologii dopiero od Rdzeń i7 pierwsza generacja, pomijając serię 2 .

Moc obliczeniowa procesorów stała się wystarczająca do pełnej implementacji hyperthreadingu bez większych szkód, nawet w przypadku niezoptymalizowanych aplikacji. Później, Hyper Threading pojawił się na procesorach średniej klasy, a nawet budżetowych i przenośnych. Używany we wszystkich seriach Rdzeń I (i3; i5; i7) i na procesorach mobilnych Atom(zupełnie nie). Co ciekawe, dwurdzeniowe procesory z HT, uzyskaj większy wzrost wydajności niż w przypadku procesorów czterordzeniowych Hyper Threading, stać na 75% pełnoprawny czteronuklearny.

Gdzie przydatna jest technologia HyperThreading?

Przyda się w połączeniu z programami profesjonalnymi, graficznymi, analitycznymi, matematycznymi i naukowymi, edytorami wideo i audio, archiwizatorami ( Photoshop, Corel Draw, Maya, 3D’s Max, WinRar, Sony Vegas & itp.). Wszystkie programy korzystające z dużej liczby obliczeń, HT na pewno się przyda. Na szczęście w 90% przypadkach takie programy są dobrze zoptymalizowane pod kątem ich użycia.

Hyper Threading niezastąpiony w systemach serwerowych. Właściwie został częściowo opracowany dla tej niszy. Dzięki HT, możesz znacznie zwiększyć wydajność procesora, gdy istnieje duża liczba zadań. Każdy wątek zostanie odciążony o połowę, co ma korzystny wpływ na adresowanie danych i przewidywanie rozgałęzień.

Wiele gry komputerowe, mają negatywny stosunek do obecności Hyper Threading, dzięki czemu zmniejsza się liczba klatek na sekundę. Wynika to z braku optymalizacji dla Hyper Threading od strony gry. Sama optymalizacja po stronie systemu operacyjnego nie zawsze wystarczy, szczególnie w przypadku pracy z nietypowymi, różnorodnymi i złożonymi danymi.

Na płytach głównych obsługujących HT zawsze możesz wyłączyć technologię hyperthreading.

Witam miłośników komputerów i sprzętu.

Czy chciałbyś mieć w swoim komputerze wydajny procesor, który potrafi wykonywać wiele zadań jednocześnie z błyskawiczną szybkością? Kto by odmówił, prawda? W takim razie sugeruję zapoznanie się z technologią Hyper Threading: czym jest i jak działa, dowiesz się z tego artykułu.


Wyjaśnienie koncepcji

Hyper-threading jest tłumaczony z angielskiego jako „hiper-precyzja”. Technologia ta nie bez powodu zyskała tak głośną nazwę. W końcu system operacyjny zajmuje jeden fizyczny procesor wyposażony w niego jako dwa rdzenie logiczne. W rezultacie przetwarzanych jest więcej poleceń bez wpływu na wydajność.

Jak to jest możliwe? Ze względu na fakt, że procesor:

  • Zapisuje informacje o kilku uruchomionych wątkach jednocześnie;
  • Dla każdego procesora logicznego przypisany jest jeden zestaw rejestrów – bloków szybkiej pamięci wewnętrznej oraz jeden blok przerwań. Ten ostatni odpowiada za sekwencyjne wykonywanie żądań z różnych urządzeń.

Jak to wygląda w praktyce? Załóżmy, że procesor fizyczny przetwarza teraz polecenia z pierwszego procesora logicznego. Ale w tym ostatnim wystąpiła jakaś awaria i na przykład musi czekać na dane z pamięci. Fizyczny nie będzie tracił czasu i od razu przełączy się na drugi procesor logiczny.

O poprawie produktywności

Wydajność procesora fizycznego z reguły nie przekracza 70%. Dlaczego? Często niektóre bloki po prostu nie są potrzebne do wykonania określonego zadania. Na przykład, gdy procesor wykonuje trywialne działania obliczeniowe, blok instrukcji i rozszerzenia SIMD nie są używane. Zdarza się, że wystąpi awaria w module przewidywania rozgałęzień lub podczas dostępu do pamięci podręcznej.

W takich sytuacjach Hyper-threading wypełnia „luki” innymi zadaniami. Zatem skuteczność technologii polega na tym, że użyteczna praca nie jest bezczynna i jest przekazywana nieaktywnym urządzeniom.

Powstanie i wdrożenie

Można uznać, że Hyper-threading obchodził już swoje 15-lecie. Przecież został opracowany w oparciu o technologię super-threading, która została wypuszczona w 2002 roku i najpierw zaczęła pracować w produktach Xeon, a następnie w tym samym roku została zintegrowana z Pentium 4. Prawa autorskie do tych technologii należą do Intela.

HT jest zaimplementowany w procesorach działających na mikroarchitekturze NetBurst, która charakteryzuje się wysokimi częstotliwościami taktowania. Wsparcie technologiczne zostało zaimplementowane w modelach z rodziny Core vPro, M i Xeon. Jednakże seria Core 2 („Duo”, „Quad”) nie jest zintegrowana. Podobną technologię działania zastosowano w procesorach Atom i Itanium.

Jak to włączyć? Musisz mieć nie tylko jeden z powyższych procesorów, ale także system operacyjny obsługujący tę technologię i BIOS, który ma opcję włączania i wyłączania HT. Jeśli nie, zaktualizuj BIOS.

Plusy i minusy Hyper-threadingu

Być może na podstawie powyższych informacji doszedłeś już do wniosku o niektórych zaletach tej technologii. Dodam do nich jeszcze kilka słów:

  • Stabilna praca kilku programów równolegle;
  • Skrócony czas reakcji podczas surfowania po Internecie lub pracy z aplikacjami.

Jak rozumiesz, w maści była mucha. Wzrost wydajności może nie nastąpić z następujących powodów:

  • Niewystarczająca pamięć podręczna. Na przykład 4-rdzeniowe procesory i7 mają 8 MB pamięci podręcznej, ale jest taka sama liczba rdzeni logicznych. Dostajemy tylko 1 MB na rdzeń, co nie jest wystarczające dla większości programów do wykonywania zadań obliczeniowych. Z tego powodu produktywność nie tylko stoi w miejscu, ale nawet spada.

  • Zależność danych. Załóżmy, że pierwszy wątek natychmiast wymaga informacji od drugiego, ale nie jest jeszcze gotowy lub znajduje się w kolejce w innym wątku. Zdarza się również, że dane cykliczne potrzebują pewnych bloków, aby szybko wykonać zadanie, ale są już zajęte inną pracą.
  • Przeciążenie jądra. Zdarza się, że rdzeń może być już przeciążony, ale pomimo tego moduł predykcyjny nadal wysyła do niego dane, w efekcie czego komputer zaczyna zwalniać.

Gdzie potrzebna jest funkcja Hyper-threading?

Technologia będzie przydatna podczas korzystania z programów wymagających dużych zasobów: edytorów audio, wideo i zdjęć, gier, archiwizatorów. Należą do nich Photoshop, Maya, 3D's Max, Corel Draw, WinRar itp.

Ważne jest, aby oprogramowanie było zoptymalizowane do pracy z Hyper-threadingiem. W przeciwnym razie mogą wystąpić opóźnienia. Faktem jest, że programy uważają rdzenie logiczne za fizyczne, więc mogą wysyłać różne zadania do tego samego bloku.

Czekamy aż odwiedzisz mój blog.

W lutym 2002 roku zadebiutowała zastrzeżona technologia Intela Hyper-Threading. Co to jest i dlaczego stało się dziś niemal powszechne? Odpowiedź na to pytanie i inne zostaną omówione w tym materiale.

Historia powstania technologii HT

Pierwszym procesorem do komputerów stacjonarnych obsługującym logiczną wielowątkowość był Pentium czwartej generacji. Hyper-Threading to technologia, która w tym przypadku umożliwiła przetwarzanie dwóch strumieni danych jednocześnie na jednym rdzeniu fizycznym. Co więcej, układ ten montowany był w gnieździe procesora PGA478, pracował w 32-bitowym trybie obliczeniowym, a jego częstotliwość taktowania wynosiła 3,06 GHz. Wcześniej można go było znaleźć tylko w urządzeniach z procesorami serwerowymi z serii XEON.

Po osiągnięciu pomyślnych wyników w tej niszy, Intel zdecydował się rozszerzyć HT na segment komputerów stacjonarnych. Następnie w ramach PGA478 wypuszczono całą rodzinę takich procesorów. Po debiucie gniazda LGA775 o NT chwilowo zapomniano. Ale wraz z rozpoczęciem sprzedaży LGA1156, w 2009 roku otrzymał on drugi wiatr. Od tego czasu stał się obowiązkowym atrybutem rozwiązań procesorowych firmy Intel, zarówno w segmencie ultra-wydajności, jak i w budżetowych systemach komputerowych.

Koncepcja tej technologii

Istotą technologii Intel Hyper-Threading jest to, że poprzez minimalne zmiany w układzie urządzenia mikroprocesorowego programiści zapewniają, że na poziomie systemu i oprogramowania kod jest przetwarzany w dwóch wątkach na jednym fizycznym rdzeniu. Wszystkie elementy modułu obliczeniowego pozostają niezmienione, dodano jedynie specjalne rejestry i przeprojektowany kontroler przerwań.

Jeśli z jakiegoś powodu fizyczny moduł obliczeniowy zacznie stać bezczynnie, wówczas uruchamiany jest na nim drugi wątek programu, podczas gdy pierwszy czeka na odebranie niezbędnych danych lub informacji. Oznacza to, że jeśli wcześniej przestoje w działaniu części obliczeniowej chipów były dość częste, Hyper-Threading prawie całkowicie eliminuje tę możliwość. Przyjrzyjmy się poniżej, czym jest ta technologia.

Na poziomie sprzętowym

Podczas korzystania z funkcji Hyper-Threading stawiane są zwiększone wymagania sprzętowe. Płyta główna, BIOS i procesor muszą go obsługiwać. Przynajmniej w gnieździe procesora PGA478 na taką kompatybilność trzeba było zwrócić szczególną uwagę. Nie wszystkie zestawy logiczne systemu w tym przypadku były zorientowane na wykorzystanie NT, podobnie jak urządzenia procesorowe. I nawet jeśli tak pożądany skrót był obecny w nomenklaturze płyty głównej, nie oznaczało to wcale, że chipy zostały poprawnie zainicjowane z tego powodu, że konieczna była aktualizacja BIOS-u.

Sytuacja w tym przypadku zmieniła się diametralnie od czasu LGA1156. Ta platforma obliczeniowa została pierwotnie zaprojektowana do wykorzystania technologii Hyper-Threading. Użytkownicy nie napotkali zatem w tym przypadku większych problemów z wykorzystaniem tego ostatniego. To samo dotyczy kolejnych gniazd procesorów, takich jak LGA1155, LGA1151 i LGA1150.

Podobnym brakiem problemów z wykorzystaniem HT mogły pochwalić się wysokowydajne gniazda LGA1366, LGA2011 i LGA2011-v3. Na domiar złego bezpośredni konkurent Intela, firma AMD, wdrożyła bardzo podobną technologię logicznej wielozadaniowości – SMT – w najnowszej generacji swoich procesorów dla AM4. Wykorzystuje niemal identyczną koncepcję. Jedyna różnica jest w nazwie.

Główne komponenty od strony oprogramowania

Należy zaznaczyć, że nawet jeśli NT będzie w pełni wspierany zasobami sprzętowymi, to nie zawsze będzie działać pomyślnie na poziomie oprogramowania. Na początek system operacyjny musi być w stanie pracować jednocześnie z kilkoma rdzeniami obliczeniowymi. Dzisiejsze, przestarzałe wersje oprogramowania systemowego MS-DOS lub Windows 98 nie mają tej funkcji. Ale w przypadku systemu Windows 10 nie pojawiają się żadne problemy, a ten system operacyjny jest już początkowo przeznaczony dla takich zasobów sprzętowych komputera osobistego.

Teraz zastanówmy się, jak włączyć funkcję Hyper-Threading w systemie Windows. Aby to zrobić, na komputerze musi być zainstalowane całe niezbędne oprogramowanie sterujące. Z reguły jest to specjalne narzędzie z płyty CD płyty głównej. Posiada specjalną zakładkę, w której w czasie rzeczywistym można zmieniać wartości w BIOS-ie. To z kolei prowadzi do tego, że zawarta w nim opcja Hyper-Threading przechodzi do pozycji Włączone i aktywowane są dodatkowe wątki logiczne, nawet bez ponownego uruchamiania systemu operacyjnego.

Technologia umożliwiająca

Wielu początkujących użytkowników dość często, już na początkowym etapie użytkowania nowego komputera, zadaje sobie jedno ważne pytanie dotyczące Hyper-Threading: jak to włączyć? Istnieją dwa możliwe sposoby rozwiązania tego problemu. Jednym z nich jest użycie BIOS-u. W takim przypadku musisz wykonać następujące czynności:

  • Po włączeniu komputera inicjujemy procedurę wejścia do BIOS-u. Aby to zrobić, wystarczy przytrzymać przycisk DEL, gdy pojawi się ekran testowy (w niektórych przypadkach konieczne będzie przytrzymanie klawisza F2).
  • Po pojawieniu się niebieskiego ekranu, za pomocą klawiszy nawigacyjnych przejdź do zakładki ZAAWANSOWANE.
  • Następnie znajdujemy na nim element Hyper-Threading.
  • Przeciwnie, musisz ustawić wartość na Włączone.

Kluczową wadą tej metody jest konieczność ponownego uruchomienia komputera osobistego w celu wykonania tej operacji. Prawdziwą alternatywą jest użycie narzędzia konfiguracyjnego płyty głównej. Metodę tę opisano szczegółowo w poprzedniej sekcji. W tym przypadku wchodzenie do BIOS-u wcale nie jest konieczne.

Wyłączenie NT

Analogicznie do metod włączania NT, istnieją dwa sposoby dezaktywacji tej funkcji. Jedno z nich można wykonać jedynie podczas inicjalizacji systemu komputerowego. To z kolei nie jest do końca wygodne w praktyce. Dlatego eksperci wybierają drugą metodę, która polega na wykorzystaniu narzędzia komputerowego na płycie głównej. W pierwszym przypadku wykonywane są następujące manipulacje:

  1. Ładując komputer elektroniczny, wchodzimy do podstawowego układu wejścia-wyjścia (jego druga nazwa to BIOS) zgodnie z wcześniej opisaną metodą.
  2. Za pomocą klawiszy kursora przechodzimy do pozycji menu Zaawansowane.
  3. Następnie musisz znaleźć pozycję menu Hyper-Threading (w niektórych modelach płyt głównych może być oznaczona jako HT). Przeciwnie, za pomocą przycisków PG DN i PG UP ustaw wartość na Disabled.
  4. Zapisujemy wyburzone zmiany za pomocą klawisza F10.
  5. Wyjdź z BIOS-u i uruchom ponownie komputer osobisty.

W drugim przypadku, korzystając z narzędzia diagnostycznego płyty głównej, nie ma potrzeby ponownego uruchamiania komputera. To jest jego kluczowa zaleta. Algorytm w tym przypadku jest identyczny. Różnica polega na tym, że korzysta z preinstalowanego specjalnego narzędzia od producenta płyty głównej.

Wcześniej opisano dwa główne sposoby wyłączania Hyper-Threading. Chociaż drugi z nich jest nominalnie uważany za bardziej złożony, jest bardziej praktyczny z tego powodu, że nie wymaga ponownego uruchomienia komputera.

Modele procesorów obsługujące NT

Początkowo, jak wspomniano wcześniej, obsługa Hyper-Threading była zaimplementowana tylko w urządzeniach z procesorami serii Pentium 4 i tylko w wersji PGA478. Jednak w ramach platform obliczeniowych LGA1156 i późniejszych, technologia omawiana w tym materiale została zastosowana w prawie wszystkich możliwych modelach chipów. Z jego pomocą procesory Celeron zmieniły się z rozwiązania jednordzeniowego na rozwiązanie dwuwątkowe. Z kolei Penrium i i3 mogły za jego pomocą przetworzyć już 4 strumienie kodu. Otóż ​​flagowe rozwiązania serii i7 potrafią jednocześnie pracować z 8 procesorami logicznymi.

Dla przejrzystości przedstawiamy zastosowanie NT w aktualnej platformie obliczeniowej firmy Intel - LGA1151:

  • Procesory serii Celeron nie obsługują tej technologii i posiadają tylko 2 jednostki obliczeniowe.
  • Chipsy liniowe Pentium są wyposażone w 2 rdzenie i cztery wątki. W rezultacie NT w tym przypadku jest w pełni obsługiwany.
  • Mocniejsze urządzenia procesorowe z gamy modeli Core i3 mają podobny układ: 2 moduły fizyczne mogą pracować w 4 wątkach.
  • Podobnie jak większość budżetowych układów Celeron, Core i5 nie jest wyposażony w obsługę HT.
  • Flagowe rozwiązania i7 obsługują także HT. Tylko w tym przypadku zamiast 2 rzeczywistych rdzeni są już 4 jednostki przetwarzające kod. Te z kolei mogą już pracować w 8 wątkach.

Hyper-Threading – czym jest ta technologia i jakie jest jej główne przeznaczenie? Jest to logiczna wielozadaniowość, która pozwala, poprzez minimalne modyfikacje sprzętu, zwiększyć wydajność całego systemu komputerowego.

W jakich przypadkach najlepiej zastosować tę technologię?

W niektórych przypadkach, jak zauważono wcześniej, NT zwiększa prędkość, z jaką procesor przetwarza kod programu. Hyper-Threading może działać skutecznie tylko z gorącym oprogramowaniem. Typowymi przykładami są kodery wideo i audio, profesjonalne pakiety graficzne i archiwizatory. Ponadto obecność takiej technologii może znacznie poprawić wydajność systemu serwerowego. Ale dzięki jednowątkowej implementacji kodu programu obecność Hyper-Threading jest wyrównana, to znaczy otrzymujesz zwykły procesor, który rozwiązuje jedno zadanie na jednym rdzeniu.

Zalety i wady

Technologia Intel Hyper-Threading ma pewne wady. Pierwszym z nich jest zwiększony koszt procesora. Jednak większa prędkość i ulepszony układ chipów krzemowych w każdym przypadku zwiększą cenę procesora. Ponadto zwiększona powierzchnia podstawy półprzewodnikowej urządzenia procesorowego prowadzi do wzrostu zużycia energii i temperatury. Różnica w tym przypadku jest niewielka i nie przekracza 5%, ale nadal istnieje. W tym przypadku nie ma innych istotnych niedociągnięć.

Teraz o korzyściach. Zastrzeżona technologia NT firmy Intel nie wpływa na wydajność i wydajność, to znaczy taki komputer nie będzie w stanie spaść poniżej określonego progu. Jeśli oprogramowanie doskonale obsługuje przetwarzanie równoległe, nastąpi pewien wzrost szybkości i oczywiście produktywności.

Testy pokazują, że w niektórych przypadkach wzrost może osiągnąć 20%. Najbardziej zoptymalizowanym oprogramowaniem w tym przypadku są różne transkodery treści multimedialnych, archiwizatory i pakiety graficzne. Ale w grach nie wszystko jest tak dobrze. Te z kolei potrafią pracować w 4 wątkach, przez co flagowe chipy nie są w tym przypadku w stanie przebić rozwiązań procesorowych średniej półki.

Nowoczesna alternatywa od AMD

Technologia Hyper-Threading nie jest dziś jedyną tego typu. Ma realną alternatywę. Wraz z wypuszczeniem platformy AM4, AMD zaoferowało jej godnego konkurenta w postaci SMT. Na poziomie sprzętowym są to identyczne rozwiązania. Jedynie flagowiec Intela potrafi obsłużyć 8 wątków, a czołowy układ AMD potrafi obsłużyć 16. Już ta okoliczność wskazuje, że bardziej obiecujące jest to drugie rozwiązanie.

Dlatego Intel jest zmuszony pilnie dostosować swoje plany wypuszczenia produktów i zaoferować zupełnie nowe rozwiązania procesorowe, które mogą konkurować z nowicjuszami z AMD. Tylko dzisiaj nie zostały one jeszcze przearanżowane. Dlatego jeśli potrzebujesz niedrogiej platformy komputerowej, lepiej wybrać LGA1151 firmy Intel. Jeśli potrzebujesz zwiększenia wydajności, lepszym rozwiązaniem będzie AM4 firmy AMD.

Był czas, kiedy konieczna była ocena wydajności pamięci w kontekście technologii Hyper-threading. Doszliśmy do wniosku, że jego wpływ nie zawsze jest pozytywny. Kiedy pojawił się kwant wolnego czasu, pojawiła się chęć kontynuowania badań i rozpatrywania zachodzących procesów z dokładnością cykli i bitów zegara maszynowego, przy użyciu oprogramowania własnej konstrukcji.

Platforma w trakcie badań

Obiektem eksperymentów jest laptop ASUS N750JK z procesorem Intel Core i7-4700HQ. Częstotliwość taktowania 2,4 GHz, zwiększona w trybie Intel Turbo Boost do 3,4 GHz. Zainstalowano 16 gigabajtów pamięci RAM DDR3-1600 (PC3-12800), działającej w trybie dwukanałowym. System operacyjny – Microsoft Windows 8.1 64-bitowy.

Rys.1 Konfiguracja badanej platformy.

Procesor badanej platformy zawiera 4 rdzenie, które po włączeniu technologii Hyper-Threading zapewniają sprzętową obsługę 8 wątków lub procesorów logicznych. Oprogramowanie sprzętowe platformy przesyła te informacje do systemu operacyjnego za pośrednictwem tabeli ACPI MADT (Multiple APIC Opis Table). Ponieważ platforma zawiera tylko jeden kontroler pamięci RAM, nie ma tabeli SRAT (tablicy powinowactwa zasobów systemowych), która deklarowałaby bliskość rdzeni procesora do kontrolerów pamięci. Oczywiście badany laptop nie jest platformą NUMA, ale system operacyjny w celu ujednolicenia traktuje go jako system NUMA z jedną domeną, na co wskazuje linia NUMA Nodes = 1. Fakt, który jest dla nas fundamentalny eksperymentów polega na tym, że pamięć podręczna danych pierwszego poziomu ma rozmiar 32 kilobajty dla każdego z czterech rdzeni. Dwa procesory logiczne współdzielące jeden rdzeń korzystają ze wspólnej pamięci podręcznej L1 i L2.

Operacja w trakcie badań

Zbadamy zależność szybkości odczytu bloku danych od jego rozmiaru. W tym celu wybierzemy najbardziej produktywną metodę, czyli odczyt 256-bitowych operandów za pomocą instrukcji AVX VMOVAPD. Na wykresach oś X pokazuje rozmiar bloku, a oś Y pokazuje prędkość odczytu. W pobliżu punktu X, który odpowiada rozmiarowi pamięci podręcznej L1, spodziewamy się punktu przegięcia, ponieważ wydajność powinna spaść po opuszczeniu przez przetworzony blok limitów pamięci podręcznej. W naszym teście, w przypadku przetwarzania wielowątkowego, każdy z 16 inicjowanych wątków pracuje z osobnym zakresem adresów. Aby kontrolować technologię Hyper-Threading w aplikacji, każdy wątek wykorzystuje funkcję API SetThreadAffinityMask, która ustawia maskę, w której jeden bit odpowiada każdemu procesorowi logicznemu. Pojedyncza wartość bitowa pozwala na użycie określonego procesora przez dany wątek, wartość zerowa tego zabrania. Dla 8 procesorów logicznych badanej platformy maska ​​11111111b pozwala na wykorzystanie wszystkich procesorów (włączona Hyper-Threading), maska ​​01010101b pozwala na użycie jednego procesora logicznego w każdym rdzeniu (Hyper-Threading jest wyłączona).

Na wykresach zastosowano następujące skróty:

MBPS (megabajty na sekundę)prędkość odczytu bloku w megabajtach na sekundę;

CPI (zegary na instrukcję)liczba cykli zegara na instrukcję;

TSC (licznik znaczników czasu)Licznik cykli procesora.

Uwaga: Szybkość zegara rejestru TSC może nie odpowiadać szybkości zegara procesora podczas pracy w trybie Turbo Boost. Należy to wziąć pod uwagę przy interpretacji wyników.

Po prawej stronie wykresów przedstawiony jest szesnastkowy zrzut instrukcji składających się na ciało pętli docelowej operacji wykonywanej w każdym z wątków programu, czyli pierwsze 128 bajtów tego kodu.

Doświadczenie nr 1. Jeden wątek



Ryc.2 Czytanie pojedynczego wątku

Maksymalna prędkość wynosi 213563 megabajtów na sekundę. Punkt przegięcia występuje w bloku o rozmiarze około 32 kilobajtów.

Doświadczenie nr 2. 16 wątków na 4 procesorach, funkcja Hyper-Threading wyłączona



Ryc.3 Czytanie w szesnastu wątkach. Liczba używanych procesorów logicznych wynosi cztery

Funkcja Hyper-Threading jest wyłączona. Maksymalna prędkość wynosi 797598 megabajtów na sekundę. Punkt przegięcia występuje w bloku o rozmiarze około 32 kilobajtów. Zgodnie z oczekiwaniami, w porównaniu do odczytu jednym wątkiem, prędkość wzrosła około 4 razy, w przeliczeniu na liczbę pracujących rdzeni.

Doświadczenie nr 3. 16 wątków na 8 procesorach, z włączoną funkcją Hyper-Threading



Ryc.4 Czytanie w szesnastu wątkach. Liczba używanych procesorów logicznych wynosi osiem

Funkcja Hyper-Threading jest włączona. Maksymalna prędkość wynosi 800 722 megabajtów na sekundę; w wyniku włączenia Hyper-Threading prawie się nie zwiększyła. Dużym minusem jest to, że punkt przegięcia występuje przy rozmiarze bloku około 16 kilobajtów. Włączenie Hyper-Threading nieznacznie zwiększyło prędkość maksymalną, ale spadek prędkości występuje teraz przy połowie rozmiaru bloku - około 16 kilobajtów, więc średnia prędkość znacznie spadła. Nie jest to zaskakujące, każdy rdzeń ma własną pamięć podręczną L1, podczas gdy procesory logiczne tego samego rdzenia ją współdzielą.

wnioski

Badana operacja skaluje się całkiem dobrze na procesorze wielordzeniowym. Powody: każdy rdzeń zawiera własną pamięć podręczną L1 i L2, docelowy rozmiar bloku jest porównywalny z rozmiarem pamięci podręcznej, a każdy wątek działa z własnym zakresem adresów. Do celów akademickich stworzyliśmy te warunki w teście syntetycznym, uznając, że aplikacje w świecie rzeczywistym zwykle są dalekie od idealnej optymalizacji. Jednak włączenie Hyper-Threading nawet w tych warunkach miało negatywny wpływ; przy niewielkim wzroście prędkości szczytowej nastąpił znaczny spadek szybkości przetwarzania bloków o rozmiarze od 16 do 32 kilobajtów.
informacje o mobie