• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczba cykli procesora wymagana do wykonania operacji

Object Storage Arubacloud
+2 głosów
970 wizyt
pytanie zadane 26 lipca 2018 w Sprzęt komputerowy przez Asertywny Mądrala (5,430 p.)
Cześć.

Zacząłem ostatnio czytać materiały na temat budowy i funkcjonowania procesora.

Do tej pory myślałem, że głównym parametrem decydującym o "szybkości" procesora jest clock speed. Jednak dzisiaj dowiedziałem się, że istnieją procesory o takim samym clock speed, które wykonują mnożenie w 4 cyklach, a również i takie, które robią to w 10 cyklach.

Stąd moje pytanie - od czego zależy szybkość wykonywania załadowanej do rejestru operacji?

3 odpowiedzi

+1 głos
odpowiedź 29 lipca 2018 przez adrian17 Ekspert (345,160 p.)
wybrane 19 lutego 2019 przez Asertywny
 
Najlepsza

(będę tu zakładał, że mówimy o x86)

Do tej pory myślałem, że głównym parametrem decydującym o "szybkości" procesora jest clock speed

Wciąż ma znaczenie przy porównywaniu procesorów o tej samej mikroarchitekturze, ale ogólnie jego waga spadła już ponad 10 lat temu (gdy seria Core Intela zastąpiła Pentiumy - które osiągały rekordy częstotliwości i temperatur).

Jednak dzisiaj dowiedziałem się, że istnieją procesory o takim samym clock speed, które wykonują mnożenie w 4 cyklach, a również i takie, które robią to w 10 cyklach.

Ba, więcej - niektóre robią mnożenie w 4 a dzielenie w 30, inne mnożenie w 5 ale dzielenie w 28. Niektóre mogą robić dwa mnożenia i dwa dodawania jednocześnie, a inne jedno mnożenie i trzy dodawania. Jedne mogą bardzo dobrze przewidywać gałęzie (wyniki `if`ów) w kodzie, inne trochę gorzej. Niektóre instrukcje mogą wykonać się w 0 cykli (`mov`). Dlatego porównywanie procesorów na gołych liczbach jest obecnie praktycznie niemożliwe.

Obecnie, proces wykonywania instrukcji wygląda mniej więcej jak taśma produkcyjna

Tak, ale to teraz też uproszczenie, bo części na taśmie nie muszą być obsługiwane w "liniowej" kolejności, a taśm może być kilka.

Tutaj jest rysunkowy opis optymalizacji wbudowanych we współczesne procesory: http://www.lighterra.com/papers/modernmicroprocessors/

0 głosów
odpowiedź 29 lipca 2018 przez Asertywny Mądrala (5,430 p.)

Troszkę o tym poczytałem i wydaje mi się, że mniej więcej rozumiem, o co z tym chodzi.

To, ze clock speed jest powszechnie uważany za najważniejszy parametr procesora to wynik manipulacji rynkowej i wyścigu na tym polu - ma to niewiele wspólnego z faktycznym stanem rzeczy.

W celu finalizacji instrukcji, muszą zostać wykonane cztery operacje

  1. Wczytanie do rejestru
  2. Odkodowanie
  3. Wykonanie
  4. Ponowne zapisanie

Początkowo, procesory "skupiały się" na jednej instrukcji, a dopiero potem wykonywały kolejną, co dawało 0.25 instr / sec.

Obecnie, proces wykonywania instrukcji wygląda mniej więcej jak taśma produkcyjna - instrukcja jest wczytywana, a następnie popychana wzdłuż taśmy (nowsze procesory mają "taśmę" pozwalającą na nawet 16 operacji podczas jednego ticknięcia zegara)

Stąd też (a przynajmniej jest to jeden z powodów) wynika różnica w liczbie ticknięć wymaganych do wykonania operacji typu mnożenie. Jeżeli operacja jest masywna, jedna akcja procesora może nie wystarczyć do jej wczytania lub wykonania. Wtedy, procesory o dłuższej "taśmie", wykonujące większą liczbę elementarnych operacji podczas clock cycle, wykonają to mnożenie szybciej.

1
komentarz 29 lipca 2018 przez Mariusz08 Maniak (62,300 p.)
Hint: potok.
–1 głos
odpowiedź 26 lipca 2018 przez Mariusz08 Maniak (62,300 p.)

Też w sumie stosunkowo niedawno zainteresowałem się wątkiem procesorów i ich działaniem, więc to co mogę napisać może być niekoniecznie zgodne z prawdą (choć piszę to na podstawie książki)

Przyjmijmy, że mamy jeden proces - proces A, który chce pobrać słowo z pamięci. Jak wiemy, pobieranie danych z pamięci zajmuje więcej niż jeden cykl zegara, a więc podczas pobierania słowa z pamięci, procesor byłby bezczynny. W związku z tym wymyślono wielowątkowość (bądź hiperwątkowość - tego terminu używa Intel) która w przybliżeniu działa na takiej zasadzie, że procesor w tym czasie ładuje kolejną instrukcję do wykonania  i ją wykonuje. Gdy proces A skończy załadowywać słowo, da znać o tym procesorowi, który przełączy się na ten proces i zacznie wykonywać jego wywołania.(proces B jest bezczynny). Potem przełącza się na proces B i wykonuje wywołania, po czym znowu przełącza się na proces A i wykonuje jego wywołania. Tak w kółko.

Jeśli rozumiesz to, co napisałem powyżej, możemy sobie zadać pytanie: a co, jeśli tych procesów jest więcej (tych procesów w sensie A czy B)? Co jeśli jest ich np. 4 (A,B,C,D)? Wtedy wykonywanie wywołań może potrwać dłużej, co wyjaśnia dlaczego mnożenie czasem trwa 2 a czasem 5 razy dłużej. (niemniej jednak warto wiedzieć o tym, że te różnice czasowe są niezauważalne dla użytkownika - to są nanosekundy, więc użytkownik końcowy nie odczuje różnicy pomiędzy 2 a 4 wątkami)

 

Ps. To co napisałem nie musi być zgodne z prawdą - jak wspominałem niedawno zainteresowałem się tym tematem, jeszcze nie wiem wielu rzeczy i może po prostu czegoś nie rozumiem,  i po prostu próbuje podciągnąć ten temat pod wielowątkowość.

komentarz 26 lipca 2018 przez Asertywny Mądrala (5,430 p.)
Mógłbyś podać tytuł książki, na podstawie której odpowiadałeś?

Możliwe jest też, ze te kolejne procesy zostały załadowane do innego rdzenia, wtedy nie kolidują z mnożeniem.
komentarz 26 lipca 2018 przez Mariusz08 Maniak (62,300 p.)
Odpowiadałem na podstawie książki "Systemy operacyjne" Andrew S. Tanenbaumi Herbert Bos.

A co do rdzenia - tak, jest to możliwe.

Podobne pytania

0 głosów
0 odpowiedzi 534 wizyt
pytanie zadane 8 lutego 2017 w C i C++ przez niezalogowany
+2 głosów
2 odpowiedzi 1,698 wizyt
0 głosów
1 odpowiedź 110 wizyt
pytanie zadane 10 stycznia 2019 w PHP przez niezalogowany

92,620 zapytań

141,474 odpowiedzi

319,816 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...