Streszczenie Struktura i wykonywanie instrukcji procesora

Struktura i wykonywanie instrukcji procesora: Szczegółowa analiza

Wprowadzenie

Zestaw instrukcji procesora opisuje zbiór poleceń (instrukcji), które mikroprocesor może wykonać. Instrukcje są podstawową jednostką programu i każda zawiera informację o typie operacji, danych, na których ma operować, oraz o tym, gdzie zapisać wynik.

Definicja: Instrukcja to kod binarny przechowywany w pamięci, który informuje procesor, jaką operację wykonać, z jakimi operandami oraz gdzie zapisać wynik.

Podstawowe części instrukcji

Instrukcja zazwyczaj składa się z następujących części:

  • Kod operacji (opcode) – określa typ operacji, np. dodawanie lub skok.
  • Operand(y) – dane lub odwołania do danych; mogą to być stałe, rejestry lub adresy w pamięci.
  • Tryb adresowania – sposób pozyskiwania operandów.

Przykład struktury instrukcji

[ OPCODE | OPERAND1 | OPERAND2 ]

Przykład w asemblerze:

  • ADD R1, R2
    • opcode: ADD
    • operand1: R1
    • operand2: R2

Definicja: Opcode to część instrukcji, która jednoznacznie określa wykonywaną operację.

Tryby adresowania (jak uzyskać dane)

Tryb adresowania określa, skąd procesor pobierze operand. Podstawowe tryby to:

  • Immediate (natychmiastowy) – operand znajduje się bezpośrednio w instrukcji.
  • Rejestrowy (rejestr) – operand jest przechowywany w rejestrze procesora.
  • Bezpośredni (bezpośredni) – instrukcja zawiera adres w pamięci, pod którym znajduje się operand.
  • Pośredni (pośredni) – instrukcja zawiera rejestr, który przechowuje adres operandu.
  • Indeksowy (indeksowy) – adres jest obliczany jako adres bazowy plus indeks z rejestru.

Definicja: Tryb adresowania to sposób, w jaki instrukcja określa lokalizację operandów.

Tabela porównująca podstawowe tryby adresowania:

Tryb adresowaniaGdzie jest operandZaletaWada
ImmediateW samej instrukcjiSzybki, brak dodatkowego pobieraniaOgraniczona wielkość wartości
RejestrowyW rejestrze CPUNajszybszy dostępOgraniczona liczba rejestrów
BezpośredniW pamięci pod danym adresemBezpośredni dostęp do pamięciWolniejszy niż rejestry
PośredniAdres w rejestrzeElastyczne wskaźnikiDodatkowy dostęp do pamięci
IndeksowyObliczony adresPrzydatne dla tablicKonieczność obliczenia adresu

Cykl rozkazowy (przetwarzanie rozkazu)

Rozkaz jest wykonywany cyklicznie, zgodnie z cyklem rozkazowym:

  1. Pobranie rozkazu (Fetch)
    • Zawartość licznika programu (PC) określa adres rozkazu.
    • Rozkaz jest pobierany z pamięci do rejestru rozkazów (IR).
    • PC jest inkrementowany do adresu następnego rozkazu.
  2. Dekodowanie rozkazu (Decode)
    • Jednostka sterująca analizuje kod operacji (opcode), ustala typ operacji, liczbę operandów oraz tryby adresowania.
  3. Wykonanie rozkazu (Execute)
    • ALU wykonuje obliczenia arytmetyczne lub operacje logiczne.
    • Może nastąpić odczyt lub zapis pamięci lub zmiana wartości PC (skok).
  4. Zapisanie wyniku (Write-back)
    • Wynik jest zapisywany do rejestru lub pamięci.
    • Aktualizowane są flagi stanu (flagy).

Definicja: Cykl rozkazowy to powtarzalna sekwencja fetch–decode–execute–write-back, za pomocą której procesor wykonuje pojedynczy rozkaz.

Praktyczny przykład: Pobierz i wykonaj ADD R1, R2

  • Fetch: PC wskazuje na rozkaz, rozkaz jest pobierany do IR.
  • Decode: Jednostka sterująca rozpoznaje kod operacji ADD oraz dwa rejestry jako operandy.
  • Execute: ALU sumuje zawartość R1 i R2.
  • Write-back: Wynik jest zapisywany do rejestru docelowego; ewentualnie ustawiane są flagi.

Rejestry stanu i flagi

Po wykonaniu instrukcji arytmetycznej lub logicznej często aktualizowane są flagi w rejestrze stanu:

  • Z (Zero) – wynik jest zerowy.
  • C (Carry) – nastąpiło przeniesienie/pożyczka podczas operacji arytmetycznych.
  • S / N (Sign) – znak wyniku.
  • O / V (Overflow) – przepełnienie arytmetyczne.

Te flagi są wykorzystywane przy skokach warunkowych i podejmowaniu decyzji w programie.

Wpływ architektury na zestaw instrukcji

| Archite

Zarejestruj się po pełne podsumowanie
FiszkiTest wiedzyStreszczeniePodcastMapa myśli
Zacznij za darmo

Masz już konto? Zaloguj się

Zestaw instrukcji procesora

Klíčové pojmy: Instrukcja to kod binarny definiujący operację, operandy i miejsce docelowe wyniku, Opcode określa typ operacji (np. ADD, SUB, JMP), Operand może być wartością bezpośrednią (immediate), rejestrem lub adresem w pamięci, Tryb adresowania wpływa na długość i szybkość instrukcji, Cykl instrukcji: Pobieranie (Fetch), Dekodowanie (Decode), Wykonanie (Execute), Zapis (Write-back), Flagi stanu Z, C, S/N, O/V aktualizują stan procesora (CPU), Architektura RISC wykorzystuje proste instrukcje o stałej długości, natomiast CISC – instrukcje o zmiennej długości, Adresowanie pośrednie wykorzystuje rejestr zawierający adres operandu, Tryb indeksowany jest przydatny do pracy z tablicami i indeksami, Krok dekodowania określa tryby adresowania i liczbę operandów, Zapis (Write-back) zapisuje wynik do rejestru lub pamięci, Zrozumienie zestawu instrukcji jest kluczowe dla optymalizacji i debugowania kodu

## Wprowadzenie Zestaw instrukcji procesora opisuje zbiór poleceń (instrukcji), które mikroprocesor może wykonać. Instrukcje są podstawową jednostką programu i każda zawiera informację o typie operacji, danych, na których ma operować, oraz o tym, gdzie zapisać wynik. > **Definicja:** Instrukcja to kod binarny przechowywany w pamięci, który informuje procesor, jaką operację wykonać, z jakimi operandami oraz gdzie zapisać wynik. ## Podstawowe części instrukcji Instrukcja zazwyczaj składa się z następujących części: - **Kod operacji (opcode)** – określa typ operacji, np. dodawanie lub skok. - **Operand(y)** – dane lub odwołania do danych; mogą to być stałe, rejestry lub adresy w pamięci. - **Tryb adresowania** – sposób pozyskiwania operandów. ### Przykład struktury instrukcji [ OPCODE | OPERAND1 | OPERAND2 ] Przykład w asemblerze: - ADD R1, R2 - opcode: ADD - operand1: R1 - operand2: R2 > **Definicja:** Opcode to część instrukcji, która jednoznacznie określa wykonywaną operację. ## Tryby adresowania (jak uzyskać dane) Tryb adresowania określa, skąd procesor pobierze operand. Podstawowe tryby to: - **Immediate (natychmiastowy)** – operand znajduje się bezpośrednio w instrukcji. - **Rejestrowy (rejestr)** – operand jest przechowywany w rejestrze procesora. - **Bezpośredni (bezpośredni)** – instrukcja zawiera adres w pamięci, pod którym znajduje się operand. - **Pośredni (pośredni)** – instrukcja zawiera rejestr, który przechowuje adres operandu. - **Indeksowy (indeksowy)** – adres jest obliczany jako adres bazowy plus indeks z rejestru. > **Definicja:** Tryb adresowania to sposób, w jaki instrukcja określa lokalizację operandów. Tabela porównująca podstawowe tryby adresowania: | Tryb adresowania | Gdzie jest operand | Zaleta | Wada | | --- | --- | --- | --- | | Immediate | W samej instrukcji | Szybki, brak dodatkowego pobierania | Ograniczona wielkość wartości | | Rejestrowy | W rejestrze CPU | Najszybszy dostęp | Ograniczona liczba rejestrów | | Bezpośredni | W pamięci pod danym adresem | Bezpośredni dostęp do pamięci | Wolniejszy niż rejestry | | Pośredni | Adres w rejestrze | Elastyczne wskaźniki | Dodatkowy dostęp do pamięci | | Indeksowy | Obliczony adres | Przydatne dla tablic | Konieczność obliczenia adresu | ## Cykl rozkazowy (przetwarzanie rozkazu) Rozkaz jest wykonywany cyklicznie, zgodnie z cyklem rozkazowym: 1. Pobranie rozkazu (Fetch) - Zawartość licznika programu (PC) określa adres rozkazu. - Rozkaz jest pobierany z pamięci do rejestru rozkazów (IR). - PC jest inkrementowany do adresu następnego rozkazu. 2. Dekodowanie rozkazu (Decode) - Jednostka sterująca analizuje kod operacji (opcode), ustala typ operacji, liczbę operandów oraz tryby adresowania. 3. Wykonanie rozkazu (Execute) - ALU wykonuje obliczenia arytmetyczne lub operacje logiczne. - Może nastąpić odczyt lub zapis pamięci lub zmiana wartości PC (skok). 4. Zapisanie wyniku (Write-back) - Wynik jest zapisywany do rejestru lub pamięci. - Aktualizowane są flagi stanu (flagy). > **Definicja:** Cykl rozkazowy to powtarzalna sekwencja fetch–decode–execute–write-back, za pomocą której procesor wykonuje pojedynczy rozkaz. Praktyczny przykład: Pobierz i wykonaj ADD R1, R2 - Fetch: PC wskazuje na rozkaz, rozkaz jest pobierany do IR. - Decode: Jednostka sterująca rozpoznaje kod operacji ADD oraz dwa rejestry jako operandy. - Execute: ALU sumuje zawartość R1 i R2. - Write-back: Wynik jest zapisywany do rejestru docelowego; ewentualnie ustawiane są flagi. ## Rejestry stanu i flagi Po wykonaniu instrukcji arytmetycznej lub logicznej często aktualizowane są flagi w rejestrze stanu: - **Z (Zero)** – wynik jest zerowy. - **C (Carry)** – nastąpiło przeniesienie/pożyczka podczas operacji arytmetycznych. - **S / N (Sign)** – znak wyniku. - **O / V (Overflow)** – przepełnienie arytmetyczne. Te flagi są wykorzystywane przy skokach warunkowych i podejmowaniu decyzji w programie. ## Wpływ architektury na zestaw instrukcji | Archite