• 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

Cloud VPS
+2 głosów
1,313 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 Mentor (354,620 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,280 p.)
Hint: potok.
–1 głos
odpowiedź 26 lipca 2018 przez Mariusz08 Maniak (62,280 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,280 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 711 wizyt
pytanie zadane 8 lutego 2017 w C i C++ przez niezalogowany
+2 głosów
2 odpowiedzi 2,087 wizyt
0 głosów
1 odpowiedź 176 wizyt
pytanie zadane 10 stycznia 2019 w PHP przez niezalogowany

93,483 zapytań

142,417 odpowiedzi

322,763 komentarzy

62,895 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

Kursy INF.02 i INF.03
...