Na pozór wszyscy wiemy, że najlepsze procesory to te, które potrafią robić więcej za mniej, osiągając największą możliwą szybkość bez gwałtownego wzrostu zużycia energii, ale gdy przekroczymy granicę podstawowych specyfikacji, odkrywamy, że nowoczesne procesory na ogół starają się wcześniej obliczać, przewidywać i prognozować wszystko, co przez nie przechodzi. YouTuber Matt Godbolt opisuje to za pomocą pięciu bardzo mało znanych aspektów dla przeciętnego użytkownika, które mimo swojej technicznej złożoności nie przestają fascynować.

Rzeczy, o których nie wiedziałeś, że robi twój procesor (wideo)
CPU

Jedną z pierwszych rzeczy, które każdy pamięta z pierwszych procesorów Atom, jest to, że były wolne jak żółwie. W istocie Intel postawił na niskie zużycie energii kosztem wydajności, stosując nową architekturę opartą na starych koncepcjach, a jedną z rzeczy, które zostały pominięte, było wykonywanie poza kolejnością.

O co chodzi? W luźnych słowach, to jedna z wielu sztuczek, które obecne procesory mają do dyspozycji, aby przyspieszyć wykonywanie instrukcji. Każdy, kto chce lepiej zrozumieć te sztuczki, musi zanurzyć się w dziwnym świecie architektur, zwłaszcza tych opracowanych przez Intela. Alternatywą jest obejrzenie tego filmu opublikowanego przez Matta Godbolta, który opisuje pięć z nich:

Pięć rzeczy, które robi procesor

  • Próbują zgadywać jak uzyskujesz dostęp do danych i rozpoznawać wzorce, co jest formą prefetchingu, która przekłada się na znaczny wzrost szybkości. Innymi słowy, automatycznie ładują linie pamięci podręcznej, zanim ich potrzebujesz, będąc o krok przed procesem.
  • Przekształcają CISC („Complex” Instruction Set Computing) w RISC („Reduced” Instruction Set Computing). Operacje pierwszej architektury są przekształcane w serię „mikrokodu” lub „mikrooperacji”, które mogą być programowane niezależnie, zyskując prostotę i wydajność.
  • Reorganizują wykonywanie kodu. Kolejność, w jakiej kod jest napisany, nie jest kolejnością, w jakiej jest wykonywany przez procesory. Niezależność między blokami pozwala na wykonywanie instrukcji, podczas gdy inna grupa czeka.
  • Przekształcają kod na SSA. Wyjaśnienie SSA w prosty sposób to ogromne wyzwanie, ale Godbolt sprowadza to do serii optymalizacji, które sprawdzają, czy kod jest naprawdę niezależny (coś niezbędnego do wcześniejszych działań), a jeśli nie, przepisują go, aby nabrał tej właściwości. W swoim przykładzie używa „fikcyjnych” rejestrów, takich jak EAX1 i EAX2.
  • Przewidują przyszłość. Tutaj wkracza tzw. predyktor skoków, który zgodnie z nazwą ma za zadanie przewidzieć, czy skok warunkowy nastąpi, czy nie, klasyfikując wyniki jako spekulacyjne. Jeśli przewidywanie się nie sprawdzi, są odrzucane. Jeśli się sprawdzi, są już załadowane. Więcej szybkości.

Podsumowując: wstępne ładowanie danych, konwersja na mikrokod, wykonywanie poza kolejnością, zmiana nazw rejestrów i przewidywanie skoków. Jeśli coś z tego przypomina Ci te złe dzieciaki o nazwach Spectre i Meltdown, to dlatego, że w pewnym sensie wywodzą się one ze słabości tych zadań. Związek między szybkością a bezpieczeństwem wymaga znacznie delikatniejszej równowagi, niż nam się wydaje...

https://old.neoteo.com/como-trabaja-un-cpu/