KWALIFIKACJA INF2 + INF3 - CZERWIEC 2013

PYTANIE NR 3.
Prefetching to
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Prefetching to mechanizm procesora polegający na pobieraniu kolejnej instrukcji (faza pobrania) jeszcze w czasie wykonywania instrukcji poprzedniej. Dzięki nakładaniu faz cyklu rozkazowego zmniejsza się liczba przestojów i rośnie wydajność potoku. Nie jest to ani cecha systemu operacyjnego, ani tryb pracy 8086.

Pełne wyjaśnienie:

Prefetching (w kontekście architektury procesora) oznacza wcześniejsze pobieranie kolejnych instrukcji do wewnętrznych buforów/kolejki, tak aby jednostka wykonawcza miała "pod ręką" następny rozkaz. Kluczowa idea brzmi: podczas gdy jedna instrukcja jest wykonywana, procesor może już pobierać następną. To ściśle wiąże się z potokowaniem (pipeline) cyklu rozkazowego, w którym fazy typu pobranie/dekodowanie/wykonanie mogą się na siebie nakładać.

Odpowiedź "wykonywanie przez procesor fazy pobrania następnego rozkazu w trakcie realizacji fazy wykonania rozkazu poprzedniego" trafnie opisuje tę równoległość na poziomie instrukcji (nakładanie faz). W efekcie procesor ogranicza przestoje, gdyby musiał czekać z pobraniem aż do zakończenia wykonania.

Pozostałe propozycje dotyczą innych zagadnień:

  • "cecha systemu operacyjnego umożliwiająca równoczesne wykonywanie kilku procesów" opisuje wielozadaniowość/planowanie procesów w systemie operacyjnym. To inna warstwa: OS zarządza procesami/wątkami, a prefetching jest mechanizmem sprzętowym/architektonicznym procesora.
  • "sposób pracy procesora polegający na przejściu do tryby pracy procesora Intel 8086" odnosi się do trybów pracy/kompatybilności, a nie do pobierania instrukcji z wyprzedzeniem. Dodatkowo jest to opis nieprecyzyjny językowo i nie definiuje prefetchingu.
  • "właściwość procesorów umożliwiająca korzystanie ze wspólnych danych przez rdzenie, bez pośrednictwa pamięci umieszczonej na zewnątrz procesora" dotyczy współdzielenia danych i pamięci podręcznych/koherencji cache w układach wielordzeniowych. To temat pamięci i komunikacji między rdzeniami, a nie mechanizmu pobierania kolejnych instrukcji.

Wskazówka egzaminacyjna: jeśli w definicji pojawia się "pobranie następnej instrukcji zanim poprzednia się skończy", najczęściej chodzi o prefetching i/lub elementy potokowania. Gdy opis mówi o "kilku procesach" – to zwykle OS (wielozadaniowość), a gdy o "wspólnych danych rdzeni" – to cache/koherencja.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Prefetching to wcześniejsze pobieranie kolejnych instrukcji (a czasem także danych) zanim będą potrzebne do wykonania. Dzięki temu, gdy jednostka wykonawcza kończy bieżącą instrukcję, następna jest już przygotowana, co ogranicza przestoje i poprawia wydajność.
Bo skraca czas oczekiwania na instrukcje/dane z pamięci. Procesor może nakładać pobieranie kolejnej instrukcji na wykonywanie poprzedniej, więc lepiej wykorzystuje cykle zegara. To szczególnie ważne, gdy dostęp do pamięci jest wolniejszy niż praca rdzeni.
Potokowanie dzieli wykonanie instrukcji na etapy (np. pobranie, dekodowanie, wykonanie). Prefetching dotyczy etapu pobierania: procesor stara się mieć w kolejce kolejne rozkazy, aby potok nie "zgłodniał". Razem zmniejszają liczbę pustych cykli w potoku.
Nie. Wielozadaniowość to funkcja systemu operacyjnego, który przełącza i planuje procesy/wątki. Prefetching jest mechanizmem procesora dotyczącym pobierania instrukcji/danych z wyprzedzeniem. To różne warstwy: OS zarządza zadaniami, CPU optymalizuje wykonanie.
Faza pobrania (fetch) to etap, w którym procesor odczytuje z pamięci kolejną instrukcję programu i umieszcza ją w rejestrach/buforach, aby można ją było zdekodować i wykonać. Prefetching polega na tym, że takie pobranie dzieje się możliwie wcześnie.
Gdy procesor pobierze "nie to, co trzeba" (np. przez zmianę przepływu programu), może marnować zasoby i zajmować przepustowość pamięci. Skutkiem mogą być dodatkowe opóźnienia, bo trzeba odrzucić nietrafione pobrania i uzupełnić potok właściwymi instrukcjami.
W praktyce spotyka się oba podejścia: prefetch instrukcji (instruction prefetch) i prefetch danych (data prefetch). W pytaniach egzaminacyjnych dla podstaw architektury CPU często chodzi o pobieranie kolejnych instrukcji podczas wykonywania poprzednich, czyli wsparcie potoku.
Cache to miejsce przechowywania kopii często używanych danych/instrukcji, aby szybciej je odczytać. Prefetching to strategia "wyprzedzająca", która próbuje przewidzieć, co będzie potrzebne, i wcześniej to pobrać (często właśnie do cache lub bufora). Cache to zasób, prefetching to mechanizm działania.
Najczęściej myli się pojęcia: prefetching (CPU) z wielozadaniowością (OS) albo z tematami wielordzeniowości i współdzielenia danych. Pomaga zapamiętać, że w definicji prefetchingu zawsze pojawia się element "pobierania z wyprzedzeniem" i nakładania faz wykonania.
Skup się na cyklu rozkazowym i potokowaniu: nazwy etapów i idea nakładania. Ćwicz rozróżnianie: co jest mechanizmem sprzętowym procesora, a co funkcją systemu operacyjnego. Dobrze działają krótkie definicje oraz schemat: fetch → decode → execute.
info

Około 48% zdających odpowiada poprawnie na to pytanie. trudne

Specjaliści zwracają uwagę: "Prefetching to mechanizm procesora polegający na pobieraniu kolejnej instrukcji (faza pobrania) jeszcze w czasie wykonywania instrukcji poprzedniej."

Źródła:

  • Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 1 (Basic Architecture), sections on instruction execution/pipelining and instruction fetch/prefetch (aktualne wydania producenta)
  • David A. Patterson, John L. Hennessy, "Computer Architecture: A Quantitative Approach", rozdziały o pipelining i ILP (Instruction-Level Parallelism)
  • Andrew S. Tanenbaum, Todd Austin, "Structured Computer Organization", rozdziały o procesorze, cyklu rozkazowym i potokowaniu

Materiały:

  • Podręczniki z architektury komputerów (rozdziały o potokowaniu i cyklu rozkazowym)
  • Dokumentacja producentów CPU (sekcje o pipeline, fetch i prefetch)
  • Materiały dydaktyczne do INF.2 z podstaw budowy i działania procesora

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego