Przejdź do treści

Rozkaz (informatyka)

Rozkaz (instrukcja procesora) — podstawowa jednostka działania CPU. Artykuł wyjaśnia strukturę, rozmiary, tryby adresowania, odmiany (np. VLIW, RISC) oraz sposoby reprezentacji i generacji instrukcji.

W informatyce termin rozkaz (instrukcja) oznacza pojedynczą operację wykonywaną przez procesor i jest zdefiniowana przez konkretny zestaw instrukcji danej architektury. Rozkaz reprezentuje polecenie typu arytmetycznego, logicznego, sterującego przepływem danych lub wejścia/wyjścia; jego dokładne znaczenie zależy od specyfikacji architektury.

Rozmiar i format

Długość rozkazów w praktyce bardzo się różni. W najprostszych urządzeniach, np. w niektórych mikrokontrolerach, instrukcje mogą mieć zaledwie kilka bitów, podczas gdy w bardziej rozbudowanych układach mogą zajmować wiele bajtów. W architekturach typu VLIW (Very Long Instruction Word) jedna jednostka rozkazowa może zawierać wiele operacji, co w tekście specyfikacji opisywane jest jako długie słowo instrukcyjne VLIW i w praktyce bywa implementowane jako szerokie pola kodu VLIW. Typowe procesory ogólnego przeznaczenia stosowane w komputerach osobistych PC, systemach klasy mainframe mainframe czy w superkomputerach superkomputer zwykle operują na instrukcjach o długości rzędu 16–64 bitów.

Stała długość i architektury RISC

W wielu projektach, szczególnie w architekturach o zredukowanym zestawie instrukcji (RISC) RISC, przyjęto stałą długość rozkazu odpowiadającą szerokości słowa maszyny, czyli naturalnemu rozmiarowi danych dla danej architektury, zwanemu także słowem. Stały format ułatwia dekodowanie i przewidywalność wykonania rozkazów w potokowych i superskalarowych jednostkach wykonawczych.

Składniki rozkazu

Tradycyjny rozkaz składa się z elementów takich jak: kod operacji (opcode) opcode, który określa, co należy wykonać, oraz pola określające argumenty czy operandy operand. Operandy mogą wskazywać rejestry rejestry, adresy pamięci lub zawierać dane stałe (bezpośrednio w polu rozkazu). Dla operandów stosuje się różne tryby adresowania, np. bezpośredni, pośredni, indeksowy czy natychmiastowy, które definiują sposób interpretacji zawartości pól.

Odmiany i równoległość instrukcji

W podejściu VLIW VLIW pojedynczy rozkaz może enkodować kilka niezależnych operacji wykonywanych równolegle, co przypomina jednoczesne polecenia mikrokodów mikrokod. Takie rozwiązania przenoszą część odpowiedzialności za planowanie równoległości do kompilatora lub narzędzi linkujących.

Reprezentacja i generowanie

W praktyce programiści rzadko zapisują rozkazy w surowym kodzie maszynowym kod maszynowy; zamiast tego korzysta się z języka symbolicznego, czyli asemblera assembler, lub — jeszcze częściej — instrukcje są emitowane automatycznie przez kompilatory tłumaczące wyżej-poziomowy kod źródłowy na sekwencje rozkazów. Kompilatory optymalizujące dobierają rozkazy tak, aby poprawić szybkość, zużycie pamięci i wykorzystanie jednostek wykonawczych.

Poza wąsko rozumianym zestawem procesora istnieje też szersza definicja: rozkaz może być dowolną reprezentacją elementu wykonywalnego programu, powiązaną z danym zestawem instrukcji lub modelem wykonawczym, i traktowaną jako część programu komputerowego program komputerowy. Rozumienie tego pojęcia pozwala analizować zarówno niskopoziomowe aspekty CPU, jak i wyższe warstwy kompilacji i modelowania zachowania programów.

Powiązane strony

Pytania i odpowiedzi

P: Co to jest instrukcja obsługi komputera?

O: Instrukcja w informatyce to pojedyncza operacja procesora określona przez zestaw instrukcji procesora.

P: Jak długie mogą być instrukcje?

O: Wielkość lub długość instrukcji jest bardzo zróżnicowana, od zaledwie 4 bitów w niektórych mikrokontrolerach do wielokrotności bajtów w niektórych systemach z bardzo długim słowem instrukcji (VLIW). Większość nowoczesnych procesorów stosowanych w komputerach osobistych, mainframe'ach i superkomputerach ma instrukcje o wielkości od 16 do 64 bitów. W niektórych architekturach, szczególnie w Reduced Instruction Set Computers (RISC), instrukcje mają stałą długość, odpowiadającą zwykle wielkości słowa w danej architekturze.

P: Co zawiera instrukcja?

O: Instrukcja zawiera opcode określający operację, która ma być wykonana, np. "dodaj zawartość pamięci do rejestru", oraz zero lub więcej specyfikatorów operandów, które mogą określać rejestry, miejsca w pamięci lub dane literalne. Specyfikatory operandów mogą mieć tryby adresowania określające ich znaczenie lub mogą być w stałych polach. W architekturach VLIW w jednej instrukcji określa się wiele jednoczesnych operacji i operandów.

P: Jak zazwyczaj określa się instrukcje?

O: Instrukcje rzadko są określane w formie kodu maszynowego; mogą być określane przez programistów za pomocą języka asemblerowego lub częściej generowane przez kompilatory.

P: Czy istnieje inna definicja dla "instrukcji"?

O: Tak, istnieje inna, bardziej ogólna definicja "instrukcji", nie tylko związana z zestawem instrukcji procesora, która jest dowolną reprezentacją elementu wykonywalnego programu komputerowego.

P: Czy wszystkie instrukcje mają taki sam rozmiar?

O: Nie, rozmiar lub długość instrukcji różni się znacznie w zależności od typu używanego procesora, od 4 bitów do wielu bajtów w systemach VLIW, przy czym większość nowoczesnych procesorów ma rozmiar od 16 do 64 bitów, podczas gdy architektury RISC mają zwykle instrukcje o stałej długości, odpowiadającej rozmiarowi słowa w danej architekturze.

Powiązane artykuły

Autor

AlegsaOnline.com Rozkaz (informatyka)

URL: https://pl.alegsaonline.com/art/47497

Udostępnij