WEBVTT

00:00.000 --> 00:00.990
Instruktor: W tej

00:00.990 --> 00:03.390
lekcji omówimy funkcje procesora.

00:03.390 --> 00:05.340
Obejmuje to takie rzeczy jak wielowątkowość,

00:05.340 --> 00:07.050
symetryczne wieloprzetwarzanie,

00:07.050 --> 00:10.950
pojedynczy rdzeń kontra wielordzeniowy i wsparcie wirtualizacji.

00:10.950 --> 00:12.180
Pierwszą rzeczą, którą

00:12.180 --> 00:15.840
omówimy, jest wielowątkowość, określana również jako SMT lub

00:15.840 --> 00:19.200
jednoczesna wielowątkowość lub hiperwątkowość, w zależności

00:19.200 --> 00:21.480
od zakupionego procesora.

00:21.480 --> 00:23.040
Hyper-threading to termin używany przez

00:23.040 --> 00:24.780
firmę Intel w odniesieniu do tego procesu.

00:24.780 --> 00:27.000
Bardziej ogólnym terminem jest SMT, czyli

00:27.000 --> 00:29.340
symultaniczna wielowątkowość.

00:29.340 --> 00:31.050
Teraz, gdy mamy do czynienia z

00:31.050 --> 00:33.870
wątkami, jest to koncepcja pojedynczego strumienia

00:33.870 --> 00:37.350
instrukcji wysyłanego przez aplikację do procesora.

00:37.350 --> 00:40.770
Obecnie większość aplikacji została zaprojektowana do uruchamiania pojedynczego

00:40.770 --> 00:42.150
procesu w jednym wątku.

00:42.150 --> 00:44.340
Oznacza to, że oprogramowanie robi wszystko

00:44.340 --> 00:45.720
w sposób seryjny.

00:45.720 --> 00:47.250
Tak więc, jeśli dałbym ci instrukcję

00:47.250 --> 00:48.930
pięciu różnych rzeczy do zrobienia,

00:48.930 --> 00:50.730
zrobiłbyś je w kolejności: pierwsza,

00:50.730 --> 00:53.250
druga, trzecia, czwarta i piąta.

00:53.250 --> 00:55.260
A jeśli każdy z nich zająłby ci 10

00:55.260 --> 00:57.510
minut, to w sumie byłoby to 50 minut.

00:57.510 --> 01:00.240
Ale gdybym mógł pozwolić ci na wielowątkowość i wykonywanie

01:00.240 --> 01:01.650
tych rzeczy poza kolejnością

01:01.650 --> 01:03.981
lub wykonywanie ich w tym samym czasie, mógłbyś

01:03.981 --> 01:07.050
wtedy robić więcej niż jedną rzecz na raz, wysyłając te rzeczy do

01:07.050 --> 01:09.360
różnych wątków lub różnych strumieni.

01:09.360 --> 01:11.130
Na przykład, powiedzmy,

01:11.130 --> 01:12.450
że chcę, abyś zapisał

01:12.450 --> 01:13.500
coś prawą ręką,

01:13.500 --> 01:15.900
a w tym samym czasie stuknął w biurko

01:15.900 --> 01:17.070
lewą ręką.

01:17.070 --> 01:18.570
Możesz wykonywać obie te czynności

01:18.570 --> 01:19.830
jednocześnie, ponieważ masz

01:19.830 --> 01:22.020
do dyspozycji dwa wątki lub dwie ręce.

01:22.020 --> 01:23.970
Na tym polega idea wielowątkowości.

01:23.970 --> 01:26.700
Intel i inni producenci opracowali więc sposób na

01:26.700 --> 01:28.860
umożliwienie oprogramowaniu komunikowania

01:28.860 --> 01:30.720
się z ich procesorami i uruchamiania

01:30.720 --> 01:33.061
wielu równoległych wątków w tym samym czasie

01:33.061 --> 01:35.610
w ramach jednego procesora.

01:35.610 --> 01:37.050
Pozwala to na uruchomienie

01:37.050 --> 01:39.420
tych wątków przez ten procesor i skrócenie

01:39.420 --> 01:41.340
czasu bezczynności procesora w oczekiwaniu

01:41.340 --> 01:43.080
na następną akcję.

01:43.080 --> 01:45.030
W ten sposób możemy zasadniczo spróbować

01:45.030 --> 01:46.680
zwiększyć nasze możliwości i

01:46.680 --> 01:48.006
przesłać więcej rzeczy przez

01:48.006 --> 01:50.550
procesor oraz spróbować wykonać więcej rzeczy

01:50.550 --> 01:52.410
w tym samym czasie.

01:52.410 --> 01:55.140
To świetne rozwiązanie, ale działa tylko do pewnego momentu,

01:55.140 --> 01:57.570
a oprogramowanie musi być w stanie to wykorzystać

01:57.570 --> 02:00.060
i zrozumieć, aby móc powiedzieć systemowi, że chcesz

02:00.060 --> 02:02.790
używać wielu wątków w tym samym czasie.

02:02.790 --> 02:04.140
Jest to duże ograniczenie, gdy

02:04.140 --> 02:06.630
mamy do czynienia z czymś takim jak hyper-threading.

02:06.630 --> 02:08.400
Innym sposobem na ominięcie

02:08.400 --> 02:13.320
tego problemu jest symetryczne przetwarzanie wieloprocesorowe (SMP).

02:13.320 --> 02:15.570
SMP to tradycyjny sposób, w jaki robiły

02:15.570 --> 02:17.304
to stacje robocze i serwery,

02:17.304 --> 02:20.370
ponieważ posiadały one wiele procesorów.

02:20.370 --> 02:22.080
Aby to zrobić, musisz mieć płytę

02:22.080 --> 02:25.290
główną z dwoma lub czterema gniazdami procesorów, a następnie

02:25.290 --> 02:27.420
zainstalować dwa lub cztery procesory

02:27.420 --> 02:28.890
na tej płycie głównej.

02:28.890 --> 02:31.050
W takim przypadku wszystkie procesory muszą

02:31.050 --> 02:32.790
być tego samego typu i prędkości, aby

02:32.790 --> 02:34.290
mogły ze sobą współpracować.

02:34.290 --> 02:37.410
A system operacyjny musi rozumieć, jak korzystać

02:37.410 --> 02:39.690
z więcej niż jednego procesora.

02:39.690 --> 02:42.690
Domyślnie większość systemów operacyjnych tego nie robiła.

02:42.690 --> 02:45.150
W związku z tym, aby móc obsługiwać wiele procesorów,

02:45.150 --> 02:47.670
trzeba było mieć system operacyjny oparty na serwerze,

02:47.670 --> 02:49.350
taki jak Windows Server 2019.

02:49.350 --> 02:52.860
Z tego powodu SMP lub symetryczne przetwarzanie wieloprocesorowe nie było

02:52.860 --> 02:55.620
zbyt przydatne w komputerach stacjonarnych i laptopach.

02:55.620 --> 02:58.770
Zamiast tego większość komputerów stacjonarnych i laptopów

02:58.770 --> 03:01.110
musiała polegać na hiperwątkowości procesorów

03:01.110 --> 03:04.140
Intela lub jednoczesnej wielowątkowości (SMT), jeśli

03:04.140 --> 03:06.720
używasz procesora AMD.

03:06.720 --> 03:09.480
Tak więc hiperwątkowość i SMT działały naprawdę dobrze

03:09.480 --> 03:12.090
przez długi czas, ale w końcu wciąż osiągaliśmy limit

03:12.090 --> 03:14.250
ilości rzeczy, które chcieliśmy przetworzyć,

03:14.250 --> 03:16.920
mając do tego tylko jeden procesor.

03:16.920 --> 03:19.020
Ponieważ większość systemów operacyjnych

03:19.020 --> 03:20.610
nie wiedziała, jak obsługiwać

03:20.610 --> 03:23.220
wiele gniazd lub wiele procesorów na danej płycie

03:23.220 --> 03:25.470
głównej, producenci zaczęli tworzyć tak zwane

03:25.470 --> 03:27.420
pakiety wielordzeniowe.

03:27.420 --> 03:28.770
Kiedy mówię o pakiecie,

03:28.770 --> 03:31.500
mam na myśli procesor, fizyczny układ scalony.

03:31.500 --> 03:33.570
Zamiast posiadać dwa fizyczne pakiety

03:33.570 --> 03:35.790
lub dwa fizyczne chipy w dwóch różnych gniazdach

03:35.790 --> 03:37.020
na płycie głównej, producenci

03:37.020 --> 03:38.850
postanowili stworzyć pojedynczy

03:38.850 --> 03:42.390
pakiet, który działał jako pojedynczy procesor.

03:42.390 --> 03:43.740
Ale wewnątrz tego pakietu znajdowało

03:43.740 --> 03:47.160
się w rzeczywistości wiele procesorów lub wiele procesorów.

03:47.160 --> 03:49.410
Oznaczało to, że dla płyty głównej wyglądał

03:49.410 --> 03:53.040
jak jeden fizyczny procesor, ponieważ tak było, ale wewnątrz

03:53.040 --> 03:54.540
niego znajdowało się wiele

03:54.540 --> 03:57.600
rdzeni lub rdzeni jednostki centralnej.

03:57.600 --> 03:59.910
Dzięki temu każdy system operacyjny może komunikować

03:59.910 --> 04:03.240
się z tym pojedynczym procesorem lub pakietem procesora, a następnie

04:03.240 --> 04:05.160
sam pakiet procesora może rozdzielić

04:05.160 --> 04:06.840
te instrukcje między wewnętrzne

04:06.840 --> 04:10.890
rdzenie wielordzeniowe wewnątrz tego procesora.

04:10.890 --> 04:11.812
Pomyśl o tym w ten sposób.

04:11.812 --> 04:14.250
Masz dom z czterema sypialniami.

04:14.250 --> 04:16.320
Jeśli ktoś podchodzi do drzwi wejściowych i mówi: potrzebuję

04:16.320 --> 04:17.580
łóżka na noc, to naprawdę nie obchodzi

04:17.580 --> 04:19.320
go, które z tych czterech dostanie, o ile będzie

04:19.320 --> 04:20.880
miał łóżko na noc.

04:20.880 --> 04:22.710
I tak, wchodzisz frontowymi drzwiami, zabierasz

04:22.710 --> 04:25.620
ich do jednego pokoju i pokazujesz im tylko jeden pokój.

04:25.620 --> 04:28.560
Zasadniczo to właśnie robi ten wielordzeniowy procesor.

04:28.560 --> 04:30.570
Gdy nowi ludzie wchodzą przez drzwi, zabiera

04:30.570 --> 04:32.790
ich do pojedynczego pokoju i pozwala im tam spać przez

04:32.790 --> 04:35.700
noc lub przetwarzać dane, a następnie wysyła ich z powrotem.

04:35.700 --> 04:36.720
Wszystko to jest obsługiwane

04:36.720 --> 04:38.220
przez osobę stojącą przy drzwiach wejściowych,

04:38.220 --> 04:40.860
którą w tym przypadku jest pakiet wielordzeniowy.

04:40.860 --> 04:43.200
A następnie umieszcza je w indywidualnym przedziale

04:43.200 --> 04:46.890
lub indywidualnym podprocesorze, którego potrzebuje do wykonania tej pracy.

04:46.890 --> 04:49.290
Taka jest idea pakietu wielordzeniowego.

04:49.290 --> 04:51.480
Większość z nas słyszała już o tym wcześniej, ponieważ

04:51.480 --> 04:52.650
w swoim systemie prawdopodobnie

04:52.650 --> 04:55.110
masz procesor wielordzeniowy.

04:55.110 --> 04:57.120
Prawdopodobnie masz procesor dwurdzeniowy, co

04:57.120 --> 04:59.790
oznacza, że masz dwa procesory w jednym układzie scalonym, lub masz

04:59.790 --> 05:01.230
procesor czterordzeniowy, co oznacza,

05:01.230 --> 05:02.730
że masz cztery procesory w jednym układzie

05:02.730 --> 05:03.960
scalonym.

05:03.960 --> 05:05.730
Lub masz procesor hexa, co oznacza,

05:05.730 --> 05:08.340
że masz sześć rdzeni w jednym chipie.

05:08.340 --> 05:09.840
Lub masz procesor Octa, co oznacza,

05:09.840 --> 05:12.300
że masz osiem rdzeni w jednym układzie.

05:12.300 --> 05:16.090
Na przykład, w moim komputerze stacjonarnym mam ośmiordzeniowy procesor,

05:16.090 --> 05:19.260
który jest jednym fizycznym układem, ale wewnątrz niego znajduje

05:19.260 --> 05:21.630
się osiem podprocesorów.

05:21.630 --> 05:23.370
Jest to więc procesor ośmiordzeniowy

05:23.370 --> 05:25.410
lub wielordzeniowy.

05:25.410 --> 05:27.240
Poza wielordzeniowością i hiperwątkowością,

05:27.240 --> 05:29.991
można też łączyć te dwie funkcje, więc każdy z tych

05:29.991 --> 05:32.846
procesorów w pakiecie, na przykład w moim systemie,

05:32.846 --> 05:34.560
ma ośmiordzeniowy rdzeń, który

05:34.560 --> 05:37.530
składa się z ośmiu procesorów.

05:37.530 --> 05:38.940
Wewnątrz tego jednego pakietu znajduje

05:38.940 --> 05:40.050
się osiem procesorów, a każdy

05:40.050 --> 05:41.730
z tych ośmiu procesorów może również obsługiwać

05:41.730 --> 05:43.710
hiperwątkowość.

05:43.710 --> 05:46.860
Oznacza to, że mam 16 wątków z ośmioma procesorami, co daje

05:46.860 --> 05:49.260
mi mnóstwo możliwości przetwarzania na tej

05:49.260 --> 05:50.850
konkretnej maszynie.

05:50.850 --> 05:53.250
W porządku, więc w tym momencie rozmawialiśmy o trzech

05:53.250 --> 05:56.010
z czterech rzeczy, które chcieliśmy omówić w tej lekcji.

05:56.010 --> 05:57.390
Mówiliśmy już o hiperwątkowości

05:57.390 --> 06:00.090
i jednoczesnej wielowątkowości, znanej jako SMT.

06:00.090 --> 06:02.460
Rozmawialiśmy o symetrycznym przetwarzaniu wieloprocesorowym

06:02.460 --> 06:04.830
lub posiadaniu wielu procesorów w gniazdach, a następnie

06:04.830 --> 06:07.530
rozmawialiśmy o idei procesorów wielordzeniowych, w których

06:07.530 --> 06:09.120
masz pojedynczy procesor, który ma w

06:09.120 --> 06:11.220
sobie wiele procesorów, niezależnie od tego, czy

06:11.220 --> 06:14.010
jest ich dwa, cztery, sześć czy osiem.

06:14.010 --> 06:17.400
Ostatnią rzeczą, o której musimy porozmawiać, jest wirtualizacja.

06:17.400 --> 06:20.490
Wirtualizacja jest kolejną cechą procesorów, ale tak naprawdę nie

06:20.490 --> 06:22.020
odnosi się do trzech, o których właśnie

06:22.020 --> 06:23.220
rozmawialiśmy.

06:23.220 --> 06:24.780
Trzy, o których właśnie rozmawialiśmy,

06:24.780 --> 06:27.300
dotyczyły tego, jak uzyskać większą wydajność z pojedynczego

06:27.300 --> 06:28.710
chipu lub wielu chipów.

06:28.710 --> 06:30.300
Ale kiedy mówimy o wirtualizacji,

06:30.300 --> 06:32.880
mówimy o możliwości emulowania sprzętu,

06:32.880 --> 06:35.730
który tak naprawdę nie istnieje.

06:35.730 --> 06:37.080
W rzeczywistości można

06:37.080 --> 06:39.450
to osiągnąć za pomocą technologii wirtualizacji

06:39.450 --> 06:42.330
Intela, znanej jako VT lub wirtualizacji AMD,

06:42.330 --> 06:44.700
znanej jako AMD-V.

06:44.700 --> 06:47.340
Obecnie oba te rozwiązania zapewniają rozszerzenia procesora

06:47.340 --> 06:49.710
do obsługi wirtualizacji, która jest określana jako

06:49.710 --> 06:52.050
wirtualizacja wspomagana sprzętowo.

06:52.050 --> 06:53.021
I to prawdopodobnie

06:53.021 --> 06:55.470
nasuwa pytanie, czym jest wirtualizacja?

06:55.470 --> 06:58.291
Cóż, wirtualizacja to zdolność komputera do

06:58.291 --> 07:01.560
udawania, że działa na wielu innych komputerach wewnątrz

07:01.560 --> 07:02.729
siebie.

07:02.729 --> 07:04.560
Teraz wygląda to tak, że mogę mieć

07:04.560 --> 07:07.140
jednego laptopa, takiego jak mój MacBook.

07:07.140 --> 07:11.700
A w tym MacBooku mam jeden system operacyjny, macOS.

07:11.700 --> 07:13.710
Teraz, gdybym chciał uruchomić system Windows lub Linux,

07:13.710 --> 07:15.600
musiałbym ponownie sformatować komputer i zainstalować

07:15.600 --> 07:16.920
to oprogramowanie.

07:16.920 --> 07:18.780
To byłoby naprawdę niewygodne.

07:18.780 --> 07:21.360
Ale dzięki wirtualizacji nie muszę tego robić.

07:21.360 --> 07:22.830
Zamiast tego mogę uruchomić

07:22.830 --> 07:26.340
program taki jak VMware, Virtualbox lub Parallels i wewnątrz

07:26.340 --> 07:27.840
tego oprogramowania mogę

07:27.840 --> 07:30.000
stworzyć wirtualny komputer.

07:30.000 --> 07:32.370
Mogę powiedzieć, że chcę mieć jeden procesor,

07:32.370 --> 07:34.950
dwa procesory lub cztery procesory.

07:34.950 --> 07:36.600
I mogę mu powiedzieć, ile pamięci chcę

07:36.600 --> 07:38.010
i ile pamięci masowej chcę.

07:38.010 --> 07:39.930
I stworzy ten wirtualny komputer,

07:39.930 --> 07:42.510
który istnieje tylko w oprogramowaniu.

07:42.510 --> 07:44.645
Teraz, gdy uruchamiam w nim nowy system operacyjny,

07:44.645 --> 07:48.660
taki jak Windows, mogę powiedzieć, że jest to procesor dwurdzeniowy.

07:48.660 --> 07:52.770
Posiada cztery gigabajty pamięci RAM i 50-gigabajtowy dysk twardy.

07:52.770 --> 07:54.750
Wszystko to istnieje tylko w oprogramowaniu.

07:54.750 --> 07:57.296
Ale kiedy instaluję system Windows na tej maszynie wirtualnej,

07:57.296 --> 07:59.670
system Windows myśli, że jest to pełny komputer.

07:59.670 --> 08:02.340
Uważa, że ma pełne dwa procesory, pełne cztery

08:02.340 --> 08:04.050
gigabajty pamięci i pełny 50-gigabajtowy

08:04.050 --> 08:06.270
dysk twardy.

08:06.270 --> 08:07.200
Windows myśli, że

08:07.200 --> 08:09.390
ma cały ten fizyczny sprzęt i właśnie na

08:09.390 --> 08:11.400
to pozwala nam wirtualizacja.

08:11.400 --> 08:13.659
Pozwala nam wirtualizować komputer

08:13.659 --> 08:15.600
i udostępniać wirtualny sprzęt

08:15.600 --> 08:17.293
oraz uruchamiać wiele systemów

08:17.293 --> 08:20.280
operacyjnych na jednym fizycznym hoście.

08:20.280 --> 08:23.100
Teraz, oprócz VT i AMD-V, istnieje również drugi poziom

08:23.100 --> 08:24.450
sprzętowej obsługi wirtualizacji,

08:24.450 --> 08:27.120
którego można szukać w niektórych nowoczesnych

08:27.120 --> 08:28.860
procesorach.

08:28.860 --> 08:31.800
W systemach Intel jest to znane jako EPT, czyli rozszerzona

08:31.800 --> 08:33.480
tabela stron.

08:33.480 --> 08:35.490
W przypadku procesorów AMD nazywa

08:35.490 --> 08:39.810
się to szybkim indeksowaniem wirtualizacji lub RVI.

08:39.810 --> 08:42.390
Oba te elementy są uważane za funkcje translacji adresów

08:42.390 --> 08:45.450
drugiego poziomu lub SLAT wirtualizacji oprogramowania, które

08:45.450 --> 08:48.060
są następnie oparte i obsługiwane przez procesor sprzętowy,

08:48.060 --> 08:50.430
aby umożliwić lepsze zarządzanie pamięcią wirtualną

08:50.430 --> 08:53.773
i zapewnić zwiększoną wydajność, jeśli chodzi o korzystanie z pamięci

08:53.773 --> 08:56.913
wewnątrz maszyny wirtualnej.

08:57.870 --> 09:00.150
Więcej o wirtualizacji będziemy mówić

09:00.150 --> 09:02.130
w osobnych lekcjach, ale na razie

09:02.130 --> 09:03.480
chcę tylko, abyś zrozumiał,

09:03.480 --> 09:06.660
że niektóre procesory mają taką możliwość w swoim zestawie

09:06.660 --> 09:08.250
procesorów, a procesory, które

09:08.250 --> 09:10.530
mają taką możliwość, takie jak te obsługujące

09:10.530 --> 09:16.470
VT firmy Intel lub AMD-V firmy AMD, zapewnią lepszą wydajność podczas wirtualizacji niż te, które jej

09:16.470 --> 09:19.260
nie obsługują.

09:19.260 --> 09:20.698
Jeśli więc zamierzasz zbudować

09:20.698 --> 09:22.710
maszynę i chcesz używać jej do wirtualizacji,

09:22.710 --> 09:24.060
na przykład serwera, na którym

09:24.060 --> 09:25.995
będzie działać wiele innych wirtualnych

09:25.995 --> 09:28.034
serwerów, upewnij się, że wybrane procesory

09:28.034 --> 09:31.710
mają VT lub AMD-V, aby mogły obsługiwać bezpośrednią sprzętową akcelerację

09:31.710 --> 09:34.170
wirtualizacji, ponieważ zapewni to znacznie lepsze

09:34.170 --> 09:37.433
wrażenia i znacznie lepszą wydajność niż w przypadku konieczności

09:37.433 --> 09:40.653
wirtualizacji oprogramowania.
