Warning: strpos() [function.strpos]: Empty needle in /home/dealer/kasat/pkg/cahir/web/html/lib/plugins/translation2/action.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at /home/dealer/kasat/pkg/cahir/web/html/lib/plugins/translation2/action.php:53) in /home/dealer/kasat/pkg/cahir/web/html/inc/actions.php on line 163
cpu-arch:intro [Krystian Bacławski Wiki]
 

Wprowadzenie

Klasyfikacja architektur

Zastosowania

  • CPU - komputery domowe, serwery, obliczenia naukowe
  • GPU / PPU - obliczenia związane z grafiką, obliczenia naukowe
  • DSP - przetwarzanie sygnałów
  • FPGA - specjalistyczne układy (koprocesor)
  • MCU - urządzenia osadzone
  • SoC - urządzenia zintegrowane

Warunki użytkowania

  • urządzenia przenośne - mała bateria
  • radiation-hardened

Taksonomia Flynn'a

skalar wektor
jedna instrukcja SISD SIMD
wiele instrukcji MISD MIMD

Komunikacja z pamięcią

  • Harvard
  • modified Harvard
  • von Neumann

Model teoretyczny

Model teoretyczny maszyny:

  • stosowa
  • akumulatorowa
  • rejestrowa

Rejestry specjalnego przeznaczenia.

Zestaw instrukcji

  • CISC
  • RISC
  • VLIW
  • EPIC
  • MISC

Architektura listy instrukcji

Tryby pracy

Zazwyczaj tylko dwa:

  • normalny / użytkownika
  • uprzywilejowany / systemu operacyjnego

Wirtualizacja dokłada jeszcze:

  • natywny
  • wirtualizacja

ARM ma, aż siedem trybów przy czym aż sześć jest uprzywilejowanych.

Rejestry

Ogólnego przeznaczenia:

  • całkowitoliczbowe
  • zmiennopozycyjne
  • wektorowe
  • wskaźnik instrukcji (PC)
  • wskaźnik stosu (SP) lub rejestr skoku (LR)
  • flagi warunkowe (CCR)

Trybu uprzywilejowanego:

  • kontrola translacji pamięci
  • obsługa przerwań
  • dostęp do urządzeń zewnętrznych

Często spotyka się rejestry przechowujące stałe np. 0 lub 1 lub wręcz całe zestawy stałych (stałe zmiennopozycyjne).

Operandy

Rodzaje operandów ze względu na położenie danych:

  • memory-memory - maszyna stosowa
  • register-memory
  • load-store - architektury RISC

Rozmiar operandu jest zależny od zaimplementowanych słów maszyny.

Typ operandu:

  • wartość (stała)
  • rejestr (pobieranie rejestru)
  • tryb adresowania (wyłuskanie wskaźnika)

Wartość operandu:

  • liczby:
    • całkowita (kod uzupełnieniowy do dwóch)
    • zmiennopozycyjna (IEEE-754)
    • dziesiętna (BCD)
  • adres
  • znak

Maksymalna ilość operandów danej instrukcji zależy od architektury maszyny:

  • 0 operandów - maszyna stosowa,
  • 1 operand - maszyna z akumulatorem,
  • >=2 operandów - maszyny rejestrowe, w RISC przeważnie 3 operandy (A = B + C).

Jeśli operand jest wskaźnikiem to wymaga dereferencji.

Tryby adresowania:

LD Rx,(Ry) => Rx = *Ry
LD Rx,D(Ry) => Rx = *(Ry + D)
LD Rx,(Ry)+ => Rx = *(Ry++)
LD Rx,-(Ry) => Rx = *(--Rx)
LD Rx,(Ry,Rz) => Rx = *(Ry + Rz * Rx.size)
LD Rx,D(Ry,[Rz]) => Rx = *(D + Ry + *Rz * Rx.size)

Dostęp do pamięci może być:

  • wyrównany - adres podzielny przez rozmiar danych, czasami wymuszane,
  • niewyrównany - najczęściej wolniejszy niż poprzedni.

Kodowanie instrukcji

Słowo instrukcji musi przechowywać informacje o:

  • rodzaju instrukcji
  • operandach (typ i wartość)

Słowo instrukcji może mieć długość:

  • stałą - architektury RISC
kod oper1 oper2 oper3 instrukcja
10 1 2 3 ADD R1,R2,R3
12 4 addr LD R4,(addr)
  • zmienną - architektury CISC
  • połączenie w/w - architektury VLIW, EPIC

Inne sposoby na radzenie sobie z długością rozkazów:

  • kompresja słów - IBM CodePack:
    • wymaga dodatkowego sprzętu - tabele adresów skoków
    • wsparcie kompilatora
    • uniemożliwia stosowanie kodu samo-modyfikującego się
  • zredukowana lista rozkazów - ARM Thumb
    • zredukowana liczba możliwych operandów
    • ograniczenie wielkości stałych

Instrukcje

Normalne operacje:

  • transfer danych (pamięć ⇔ rejestry)
  • arytmetyczno-logiczne (add, mul, and, or, shift, rotate)
  • zmiennoprzecinkowe
  • dziesiętne
  • wektorowe
  • ciągi znaków
  • bitowe
  • kontroli przepływu (skoki, podprocedury)
  • grafika / szyfrowanie / etc.
  • debugowanie
  • interakcja z pamięcią podręczną
  • synchronizacja

Kontrola przepływu:

  • skoki warunkowe i bezwarunkowe,
  • skoki absolutne i względem PC,
  • skoki i powroty z podprocedur.

Uwaga! Maszyna wcale nie musi implementować sprzętowo stosu. Może mieć rejestr, w którym jest odkładany adres powrotu.

Operacje uprzywilejowane:

  • komunikacja z urządzeniami
  • obsługa przerwań
  • zarządzanie translacją adresów

Przerwania

Źródło przerwania:

  • zewnętrzne (asynchroniczne)
    • urządzenie zewnętrzne
    • licznik czasu
    • restart maszyny
    • stan wyjątkowy (brak zasilania, przekroczenie dopuszczalnej temperatury)
  • wewnętrzne (synchroniczne)
    • niewłaściwa instrukcja
    • przejście do systemu operacyjnego
    • błąd translacji adresu
    • błąd instrukcji (dzielenie przez zero, wyjście poza zakres, etc.)
    • śledzenie

Synchroniczne może się zdarzyć w następujących fazach wykonania instrukcji:

  • pobieranie,
  • dekodowanie,
  • wykonanie.

Przerwania można maskować, czyli blokować ich odbiór - możliwe jedynie w przypadku zewnętrznych.

Przerwania mogą posiadać priorytet - istnieje wtedy możliwość zagnieżdżania procedury obsługi przerwania.

Przerwania nie muszą zachowywać stanu maszyny (ang. imprecise), choć jest to bardzo pożądana cecha by móc powrócić do programu w miejscu jego przerwania (ang. precise).

Obsługa przerwań:

  • specjalne instrukcje (przerwanie programowe, powrót z przerwania)
  • wektor przerwań,
  • procedura obsługi.

Komunikacja ze światem zewnętrznym

  • Pamięć RAM
  • Cache
  • DMA
  • Urządzenia I/O (porty lub MMIO)

Mierzenie wydajności procesorów

Zwiększanie wydajności

  • ILP - Instruction Level Parallelism
  • DLP - Data Level Parallelism
  • TLP - Thread Level Parallelism

Kryteria

  • koszt
  • powierzchnia
  • zużycie energii
  • wydajność obliczeniowa

Benchmarki

  • SPECInt
  • SpecFP
  • TPC

Źródła

 
cpu-arch/intro.txt · Last modified: 2010/05/21 19:21 by Krystian Bacławski
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-No Derivative Works 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki