Koprocesor jest osobnym układem odpowiedzialnym za wsparcie procesora przy bardziej zaawansowanych operacjach matematycznych
Kiedyś był to odrębny układ instalowany tylko w HIGH-END wersjach komputerów (tutaj nawiązanie do starych aut, które w luksusie miały np. dźwignię zmiany biegów w desce podłogowej)
Na chwilę obecną koprocesor jest zintegrowany z procesorem, jednak nadal widać rozróżnienie pomiędzy procesorem a koprocesorem - z resztą, było to do zauważenia podczas laboratoriów z AK2
Koprocesor ma swoje osobne rejestry
Koprocesor nie byłby w stanie samodzielnie sterować komputerem
Nie obsługuje I/O ani przerwań
Przy odpowiednim wsparciu potrafi współpracować z pamięcią
Procesor podstawowy podstawia koprocesorowi dane i odbiera od niego wyniki - można powiedzieć, że robi wszystko wokół niego, a koprocesor jedynie liczy
Procesor podstawowy pobiera wszystkie (i swoje, i koprocesorowe) rozkazy z listy rozkazów
Jeśli rozkaz ma preambułę ESC to znaczy, że jest przeznaczony dla koprocesora
Procesor odcina preambułę i przekazuje pozostały kod rozkazu do koprocesora
Procesor wyznacza adresy efektywne argumentów dla koprocesora
Koprocesor śledzi kolejkę rozkazów i stan ich wykonania, aby być gotowym do działania natychmiast, gdy zajdzie taka potrzeba - nie jestem pewien, czy to na pewno o to chodzi
Oczywiście, ten sam program da się napisać bez koprocesora, ale z koprocesorem wygodniej
W trakcie, gdy koprocesor wykonuje swoje operacje, procesor podstawowy może wykonywać inne operacje