Instruktor: W tej
lekcji omówimy funkcje procesora.
Obejmuje to takie rzeczy jak wielowątkowość,
symetryczne wieloprzetwarzanie,
pojedynczy rdzeń kontra wielordzeniowy i wsparcie wirtualizacji.
Pierwszą rzeczą, którą
omówimy, jest wielowątkowość, określana również jako SMT lub
jednoczesna wielowątkowość lub hiperwątkowość, w zależności
od zakupionego procesora.
Hyper-threading to termin używany przez
firmę Intel w odniesieniu do tego procesu.
Bardziej ogólnym terminem jest SMT, czyli
symultaniczna wielowątkowość.
Teraz, gdy mamy do czynienia z
wątkami, jest to koncepcja pojedynczego strumienia
instrukcji wysyłanego przez aplikację do procesora.
Obecnie większość aplikacji została zaprojektowana do uruchamiania pojedynczego
procesu w jednym wątku.
Oznacza to, że oprogramowanie robi wszystko
w sposób seryjny.
Tak więc, jeśli dałbym ci instrukcję
pięciu różnych rzeczy do zrobienia,
zrobiłbyś je w kolejności: pierwsza,
druga, trzecia, czwarta i piąta.
A jeśli każdy z nich zająłby ci 10
minut, to w sumie byłoby to 50 minut.
Ale gdybym mógł pozwolić ci na wielowątkowość i wykonywanie
tych rzeczy poza kolejnością
lub wykonywanie ich w tym samym czasie, mógłbyś
wtedy robić więcej niż jedną rzecz na raz, wysyłając te rzeczy do
różnych wątków lub różnych strumieni.
Na przykład, powiedzmy,
że chcę, abyś zapisał
coś prawą ręką,
a w tym samym czasie stuknął w biurko
lewą ręką.
Możesz wykonywać obie te czynności
jednocześnie, ponieważ masz
do dyspozycji dwa wątki lub dwie ręce.
Na tym polega idea wielowątkowości.
Intel i inni producenci opracowali więc sposób na
umożliwienie oprogramowaniu komunikowania
się z ich procesorami i uruchamiania
wielu równoległych wątków w tym samym czasie
w ramach jednego procesora.
Pozwala to na uruchomienie
tych wątków przez ten procesor i skrócenie
czasu bezczynności procesora w oczekiwaniu
na następną akcję.
W ten sposób możemy zasadniczo spróbować
zwiększyć nasze możliwości i
przesłać więcej rzeczy przez
procesor oraz spróbować wykonać więcej rzeczy
w tym samym czasie.
To świetne rozwiązanie, ale działa tylko do pewnego momentu,
a oprogramowanie musi być w stanie to wykorzystać
i zrozumieć, aby móc powiedzieć systemowi, że chcesz
używać wielu wątków w tym samym czasie.
Jest to duże ograniczenie, gdy
mamy do czynienia z czymś takim jak hyper-threading.
Innym sposobem na ominięcie
tego problemu jest symetryczne przetwarzanie wieloprocesorowe (SMP).
SMP to tradycyjny sposób, w jaki robiły
to stacje robocze i serwery,
ponieważ posiadały one wiele procesorów.
Aby to zrobić, musisz mieć płytę
główną z dwoma lub czterema gniazdami procesorów, a następnie
zainstalować dwa lub cztery procesory
na tej płycie głównej.
W takim przypadku wszystkie procesory muszą
być tego samego typu i prędkości, aby
mogły ze sobą współpracować.
A system operacyjny musi rozumieć, jak korzystać
z więcej niż jednego procesora.
Domyślnie większość systemów operacyjnych tego nie robiła.
W związku z tym, aby móc obsługiwać wiele procesorów,
trzeba było mieć system operacyjny oparty na serwerze,
taki jak Windows Server 2019.
Z tego powodu SMP lub symetryczne przetwarzanie wieloprocesorowe nie było
zbyt przydatne w komputerach stacjonarnych i laptopach.
Zamiast tego większość komputerów stacjonarnych i laptopów
musiała polegać na hiperwątkowości procesorów
Intela lub jednoczesnej wielowątkowości (SMT), jeśli
używasz procesora AMD.
Tak więc hiperwątkowość i SMT działały naprawdę dobrze
przez długi czas, ale w końcu wciąż osiągaliśmy limit
ilości rzeczy, które chcieliśmy przetworzyć,
mając do tego tylko jeden procesor.
Ponieważ większość systemów operacyjnych
nie wiedziała, jak obsługiwać
wiele gniazd lub wiele procesorów na danej płycie
głównej, producenci zaczęli tworzyć tak zwane
pakiety wielordzeniowe.
Kiedy mówię o pakiecie,
mam na myśli procesor, fizyczny układ scalony.
Zamiast posiadać dwa fizyczne pakiety
lub dwa fizyczne chipy w dwóch różnych gniazdach
na płycie głównej, producenci
postanowili stworzyć pojedynczy
pakiet, który działał jako pojedynczy procesor.
Ale wewnątrz tego pakietu znajdowało
się w rzeczywistości wiele procesorów lub wiele procesorów.
Oznaczało to, że dla płyty głównej wyglądał
jak jeden fizyczny procesor, ponieważ tak było, ale wewnątrz
niego znajdowało się wiele
rdzeni lub rdzeni jednostki centralnej.
Dzięki temu każdy system operacyjny może komunikować
się z tym pojedynczym procesorem lub pakietem procesora, a następnie
sam pakiet procesora może rozdzielić
te instrukcje między wewnętrzne
rdzenie wielordzeniowe wewnątrz tego procesora.
Pomyśl o tym w ten sposób.
Masz dom z czterema sypialniami.
Jeśli ktoś podchodzi do drzwi wejściowych i mówi: potrzebuję
łóżka na noc, to naprawdę nie obchodzi
go, które z tych czterech dostanie, o ile będzie
miał łóżko na noc.
I tak, wchodzisz frontowymi drzwiami, zabierasz
ich do jednego pokoju i pokazujesz im tylko jeden pokój.
Zasadniczo to właśnie robi ten wielordzeniowy procesor.
Gdy nowi ludzie wchodzą przez drzwi, zabiera
ich do pojedynczego pokoju i pozwala im tam spać przez
noc lub przetwarzać dane, a następnie wysyła ich z powrotem.
Wszystko to jest obsługiwane
przez osobę stojącą przy drzwiach wejściowych,
którą w tym przypadku jest pakiet wielordzeniowy.
A następnie umieszcza je w indywidualnym przedziale
lub indywidualnym podprocesorze, którego potrzebuje do wykonania tej pracy.
Taka jest idea pakietu wielordzeniowego.
Większość z nas słyszała już o tym wcześniej, ponieważ
w swoim systemie prawdopodobnie
masz procesor wielordzeniowy.
Prawdopodobnie masz procesor dwurdzeniowy, co
oznacza, że masz dwa procesory w jednym układzie scalonym, lub masz
procesor czterordzeniowy, co oznacza,
że masz cztery procesory w jednym układzie
scalonym.
Lub masz procesor hexa, co oznacza,
że masz sześć rdzeni w jednym chipie.
Lub masz procesor Octa, co oznacza,
że masz osiem rdzeni w jednym układzie.
Na przykład, w moim komputerze stacjonarnym mam ośmiordzeniowy procesor,
który jest jednym fizycznym układem, ale wewnątrz niego znajduje
się osiem podprocesorów.
Jest to więc procesor ośmiordzeniowy
lub wielordzeniowy.
Poza wielordzeniowością i hiperwątkowością,
można też łączyć te dwie funkcje, więc każdy z tych
procesorów w pakiecie, na przykład w moim systemie,
ma ośmiordzeniowy rdzeń, który
składa się z ośmiu procesorów.
Wewnątrz tego jednego pakietu znajduje
się osiem procesorów, a każdy
z tych ośmiu procesorów może również obsługiwać
hiperwątkowość.
Oznacza to, że mam 16 wątków z ośmioma procesorami, co daje
mi mnóstwo możliwości przetwarzania na tej
konkretnej maszynie.
W porządku, więc w tym momencie rozmawialiśmy o trzech
z czterech rzeczy, które chcieliśmy omówić w tej lekcji.
Mówiliśmy już o hiperwątkowości
i jednoczesnej wielowątkowości, znanej jako SMT.
Rozmawialiśmy o symetrycznym przetwarzaniu wieloprocesorowym
lub posiadaniu wielu procesorów w gniazdach, a następnie
rozmawialiśmy o idei procesorów wielordzeniowych, w których
masz pojedynczy procesor, który ma w
sobie wiele procesorów, niezależnie od tego, czy
jest ich dwa, cztery, sześć czy osiem.
Ostatnią rzeczą, o której musimy porozmawiać, jest wirtualizacja.
Wirtualizacja jest kolejną cechą procesorów, ale tak naprawdę nie
odnosi się do trzech, o których właśnie
rozmawialiśmy.
Trzy, o których właśnie rozmawialiśmy,
dotyczyły tego, jak uzyskać większą wydajność z pojedynczego
chipu lub wielu chipów.
Ale kiedy mówimy o wirtualizacji,
mówimy o możliwości emulowania sprzętu,
który tak naprawdę nie istnieje.
W rzeczywistości można
to osiągnąć za pomocą technologii wirtualizacji
Intela, znanej jako VT lub wirtualizacji AMD,
znanej jako AMD-V.
Obecnie oba te rozwiązania zapewniają rozszerzenia procesora
do obsługi wirtualizacji, która jest określana jako
wirtualizacja wspomagana sprzętowo.
I to prawdopodobnie
nasuwa pytanie, czym jest wirtualizacja?
Cóż, wirtualizacja to zdolność komputera do
udawania, że działa na wielu innych komputerach wewnątrz
siebie.
Teraz wygląda to tak, że mogę mieć
jednego laptopa, takiego jak mój MacBook.
A w tym MacBooku mam jeden system operacyjny, macOS.
Teraz, gdybym chciał uruchomić system Windows lub Linux,
musiałbym ponownie sformatować komputer i zainstalować
to oprogramowanie.
To byłoby naprawdę niewygodne.
Ale dzięki wirtualizacji nie muszę tego robić.
Zamiast tego mogę uruchomić
program taki jak VMware, Virtualbox lub Parallels i wewnątrz
tego oprogramowania mogę
stworzyć wirtualny komputer.
Mogę powiedzieć, że chcę mieć jeden procesor,
dwa procesory lub cztery procesory.
I mogę mu powiedzieć, ile pamięci chcę
i ile pamięci masowej chcę.
I stworzy ten wirtualny komputer,
który istnieje tylko w oprogramowaniu.
Teraz, gdy uruchamiam w nim nowy system operacyjny,
taki jak Windows, mogę powiedzieć, że jest to procesor dwurdzeniowy.
Posiada cztery gigabajty pamięci RAM i 50-gigabajtowy dysk twardy.
Wszystko to istnieje tylko w oprogramowaniu.
Ale kiedy instaluję system Windows na tej maszynie wirtualnej,
system Windows myśli, że jest to pełny komputer.
Uważa, że ma pełne dwa procesory, pełne cztery
gigabajty pamięci i pełny 50-gigabajtowy
dysk twardy.
Windows myśli, że
ma cały ten fizyczny sprzęt i właśnie na
to pozwala nam wirtualizacja.
Pozwala nam wirtualizować komputer
i udostępniać wirtualny sprzęt
oraz uruchamiać wiele systemów
operacyjnych na jednym fizycznym hoście.
Teraz, oprócz VT i AMD-V, istnieje również drugi poziom
sprzętowej obsługi wirtualizacji,
którego można szukać w niektórych nowoczesnych
procesorach.
W systemach Intel jest to znane jako EPT, czyli rozszerzona
tabela stron.
W przypadku procesorów AMD nazywa
się to szybkim indeksowaniem wirtualizacji lub RVI.
Oba te elementy są uważane za funkcje translacji adresów
drugiego poziomu lub SLAT wirtualizacji oprogramowania, które
są następnie oparte i obsługiwane przez procesor sprzętowy,
aby umożliwić lepsze zarządzanie pamięcią wirtualną
i zapewnić zwiększoną wydajność, jeśli chodzi o korzystanie z pamięci
wewnątrz maszyny wirtualnej.
Więcej o wirtualizacji będziemy mówić
w osobnych lekcjach, ale na razie
chcę tylko, abyś zrozumiał,
że niektóre procesory mają taką możliwość w swoim zestawie
procesorów, a procesory, które
mają taką możliwość, takie jak te obsługujące
VT firmy Intel lub AMD-V firmy AMD, zapewnią lepszą wydajność podczas wirtualizacji niż te, które jej
nie obsługują.
Jeśli więc zamierzasz zbudować
maszynę i chcesz używać jej do wirtualizacji,
na przykład serwera, na którym
będzie działać wiele innych wirtualnych
serwerów, upewnij się, że wybrane procesory
mają VT lub AMD-V, aby mogły obsługiwać bezpośrednią sprzętową akcelerację
wirtualizacji, ponieważ zapewni to znacznie lepsze
wrażenia i znacznie lepszą wydajność niż w przypadku konieczności
wirtualizacji oprogramowania.