Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Podobne dokumenty
Architektura Systemów Komputerowych

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Architektura komputerów

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Architektura komputerów

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura komputerów

Struktura i działanie jednostki centralnej

Organizacja typowego mikroprocesora

organizacja procesora 8086

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe

Architektura komputerów. Asembler procesorów rodziny x86

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Architektura komputerów

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Projektowanie. Projektowanie mikroprocesorów

MIKROKONTROLERY I MIKROPROCESORY

Programowanie Niskopoziomowe

Sprzęt i architektura komputerów

Technika mikroprocesorowa I Wykład 2

Pytania. W obecnie wykorzystywanych komputerach osobistych jest stosowana architektura: jednoszynowa. pamięciowo-centryczna.

Lista instrukcji mikroprocesora Programowanie w assemblerze

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Mikrooperacje. Mikrooperacje arytmetyczne

Przykładowe pytania DSP 1

Logiczny model komputera i działanie procesora. Część 1.

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Programowanie niskopoziomowe

Rozszerzalne kody operacji (przykład)

Podstawy Informatyki

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Lista Rozkazów: Język komputera

ARCHITEKTURA PROCESORA,

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Kurs Zaawansowany S7. Spis treści. Dzień 1

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Mikrokontroler ATmega32. Język symboliczny

Architektura typu Single-Cycle

Metody Realizacji Języków Programowania

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura systemów komputerowych. Lista instrukcji procesora

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Procesory rodziny x86. Dariusz Chaberski

, " _/'--- " ~ n\l f.4e ' v. ,,v P-J.. ~ v v lu J. ... j -:;.",II. ,""", ",,> I->~" re. dr. f It41I r> ~ '<Q., M-c 'le...,,e. b,n '" u /.

Sprzęt i architektura komputerów

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią w systemie operacyjnym

Programowanie Niskopoziomowe

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

architektura komputerów w 1 1

Podstawy Techniki Mikroprocesorowej

Programowanie w asemblerze Środowiska 64-bitowe

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Mikroprocesor Operacje wejścia / wyjścia

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Ćwiczenie nr 6. Programowanie mieszane

Architektura potokowa RISC

Podstawy programowania skrót z wykładów:

Paradygmaty programowania

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Architektura Systemów Komputerowych

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Programowanie w asemblerze Wprowadzenie

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Architektura Systemów Komputerowych

Magistrala systemowa (System Bus)

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Kod U2 Opracował: Andrzej Nowak

Język programowania: Lista instrukcji (IL Instruction List)

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

Architektura systemów komputerowych

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

Konieczne odwzorowanie (mapping) obiektów: nazwa (+indeks) adres lokacja

Architektura Systemów Komputerowych

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

Architektura mikroprocesorów TEO 2009/2010

Adam Kotynia, Łukasz Kowalczyk

Transkrypt:

Wprowadzenie do architektury komputerów Model programowy procesora i jego struktura Procesory CISC i RISC

Użytkowy model programowy Użytkowym modelem programowym nazywamy zestaw zasobów logicznych komputera dostępnych dla programisty piszącego program użytkowy w języku asemblerowym lub dla kompilatora tłumaczącego program użytkowy napisany w języku wysokiego poziomu do postaci asemblerowej Inne nazwy: aplikacyjny model programowy model programowy użytkownika Model programowy nie ma bezpośredniego związku z budową wewnętrzną procesora i komputera Niekiedy zamiast określenia model programowy używa się pojęcia architektura

Składniki modelu programowego Zestaw rejestrów liczba i funkcjonalność rejestrów procesora Zestaw trybów adresowania sposoby specyfikacji argumentów operacji Model operacji warunkowych sposób realizacji konstrukcji warunkowych Lista instrukcji zestaw operacji jakie może wykonać procesor

Kompozycja modelu programowego Wszystkie składniki modelu programowego są ze sobą ściśle powiązane nie da się zaprojektować jednego ze składników w oderwaniu od pozostałych Model programowy jest często silnie powiązany z planowaną implementacją strukturą wewnętrzną procesora często okazuje się po latach, że dany model programowy musi być zrealizowany w zupełnie innej strukturze procesora niż ta, dla której był projektowany np. x86

Funkcje rejestrów Akumulator: A A op src Akumulatorem nazywamy rejestr, który może być użyty jako argument źródła i równocześnie przeznaczenia dla operacji arytmetycznej lub logicznej. Rejestr adresowy - służy do uzyskania adresu danej umieszczonej w pamięci Bazowy - może być użyty w trybie adresowania rejestrowym pośrednim indeksowy wskaźnik stosu Licznik pętli - służy do odliczania iteracji pętli

Architektura zestawu rejestrów - koncepcje Brak (pamięć pamięć) Minimalny Mały zestaw rejestrów specjalizowanych Mały zestaw rejestrów uniwersalnych Duży zestaw rejestrów uniwersalnych Zestaw rejestrów jako bufor ramki stosu Stosowy zestaw rejestrów

Architektury bezrejestrowe Muszą zawierać 1..3 rejestry w tym PC Operacje na danych pamięć-pamięć Obecnie prawie nie spotykane Architektura move Lokacje przestrzeni adresowej odwzorowane w rejestry rejestry są ukryte pod postacią komórek pamięci Procesor wykonuje tylko jedną lub co najwyżej kilka instrukcji, których argumentami mogą być wyłącznie stałe lub adresy pamięci. Operacje arytmetyczne i logiczne są realizowane poprzez przesłania do specjalnych lokacji pamięci, służących jako rejestry argumentów. Adresy tych lokacji są używane do wyboru operacji wykonywanej przez jednostkę arytmetyczną. Współczesny przykład to mikrokontrolery MAXQ firmy Maxim

Minimalny zestaw rejestrów PC licznik instrukcji SP wskaźnik stosu 1 lub 2 akumulatory (pełni rolę rejestru wartości) 1 lub 2 rejestry adresowe do adresowania struktur danych Przykład mikrokontrolery 8-bitowe Freescale (dawniej Motorola) rodziny 68HC08 Niemal wszystkie instrukcje wymagają odwołania do pamięci, ale jeden z argumentów instrukcji zwykle znajduje się w rejestrze. Generowanie kodu dla takich procesorów jest proste, ale uzyskany program wykonuje się stosunkowo wolno wskutek dużej liczby odwołań do pamięci.

Mały zestaw rejestrów specjalizowanych 6..8 rejestrów pełniących różne sztywno określone funkcje Przykład: x86 - w trybie 16-bitowym Brak możliwości efektywnego wykorzystania rejestrów przez kompilator Rejestry służą wyłącznie do obliczeń i przechowywania wyników posrednich - nie mogą być użyte do przechowywania danych programu (argumentów i zmiennych lokalnych procedur). Rejestry x86 (tryb 16-bitowy) AX akumulator DX rozszerzenie akumulatora do mnożenia i dzielenia CX licznik iteracji BX główny rejestr adresowy SP wskaźnik stosu BP wskaźnik ramki SI, DI pomocnicze rejestry adresowe IP licznik instrukcji FLAGS rejestr znaczników

Mały zestaw rejestrów uniwersalnych 6..8 rejestrów uniwersalnych Przykład: x86 w trybie 32-bitowym 8 rejestrów (EAX, EDX, ECX, EBX, ESP, EBP, ESI, EDI) wszystkie rejestry mogą służyć jako akumulatory i rejestry adresowe, wszystkie poza ESP jako rejestry indeksowe 3..4 rejestry mogą być użyte dla zmiennych lokalnych lub parametrów alokacja obiektów lokalnych w rejestrach przyspiesza wykonanie kodu

Duży zestaw rejestrów uniwersalnych W architekturach z dużym zestawem rejestrów mamy do czynienia z wieloma rejestrami, które mogą pełnić dowolną rolę. 16 lub 32 rejestry uniwersalne Przykłady: MIPS, IBM Power 32 rejestry AMD64, IBM S/360 16 rejestrów rejestry używane do przekazywania kilku parametrów i przechowywania kilku zmiennych lokalnych istotna redukcja liczby odwołań do pamięci

Bufor wierzchołka stosu Duży zestaw rejestrów (32..128), który z założenia ma mieścić całą ramkę stosu (bez zmiennych strukturalnych) W ten sposób uzyskuje się znaczną redukcję liczby odwołań do pamięci, również w prologu i epilogu procedury. Dwa rozwiązania: Okna rejestrów SPARC Bufor stosu Am9k, IA-64 (Itanium) Wywołanie procedury niemal bez odwołań do pamięci odwołania do pamięci zachodzą przy przepełnieniu lub niedopełnieniu stosu w rejestrach, co ma miejsce raz na kilka poziomów wywołań procedur.

Stosowy zestaw rejestrów 3..8 rejestrów tworzących stos często brak nazw rejestrów operacje wykonywane na wierzchołku stosu rejestrów bezargumentowe lub jednoargumentowe argumenty pobierane z wierzchołka stosu, wynik odkładany na stos Taka architektura zestawu rejestrów znacząco upraszcza konstrukcję kompilatora, jest ona jednak bardzo trudna do efektywnej realizacji przy typowych współczesnych strukturach jednostek wykonawczych. Przykłady: Transputery Jednostka zmiennopozycyjna x87

Tryby adresowania Pojęcie tryb adresowania oznacza sposób specyfikacji argumentu operacji W zawężonym ujęciu oznacza sposób określenia (obliczenia) adresu danej w pamięci szerzej odnosi się również do rejestrów i stałych Tryby adresowania nie odnoszące się do pamięci: Natychmiastowy wartość danej zapisana w instrukcji Rejestrowy bezpośredni argument operacji w rejestrze

Tryby rejestrowe pośrednie

Minimalny zestaw trybów adresowania Do efektywnej realizacji języków wysokiego poziomu są potrzebne tryby: Natychmiastowy do ładowania do rejestrów stałych, w tym również adresów danych statycznych rejestrowy bezpośredni - użycie zawartości rejestru jako argumentu operacji jeden z rejestrowych pośrednich zwykle r.p. z przemieszczeniem do adresowania danych w pamięci niezbędny do wyliczania zmiennych adresów (np. tablice, ramka stosu)

Tryb absolutny (bezpośredni) Dana w pamięci, adres zapisany w instrukcji Najprostszy sposób adresowania skalarnych danych statycznych nie jest niezbędny może być zastąpiony przez tryb rejestrowy pośredni z przemieszczeniem

Tryby indeksowe Adres powstaje przez zsumowanie adresu efektywnego odnoszącego się do pamięci (uzyskanego z innego trybu adresowania) z wartością rejestru, opcjonalnie pomnożoną przez stałą (skalę) będąca potęgą liczby 2 rejestr jest nazywany rej. indeksowym skala 1,2,4,8, ew. 16 mnożenie przez przesuwanie w lewo przy skali <> 1 tryb nazywamy indeksowym skalowanym

Tryby z automodyfikacją bazy Tryby rejestrowe pośrednie, w których wartość rejestru bazowego jest modyfikowana o długość przesyłanej danej przed lub po wykonaniu przesłania danej Preinkrementacja, postinkrementacja, predekrementacja, postdekrementacja niejawnie korzystają z nich operacje stosowe przy realizacji stosu pełnego schodzącego : PUSH predekrementacja POP - postinkrementacja

Tryby pamięciowe pośrednie dana jest zawarta w pamięci pod adresem którego składnik jest zawarty w pamięci Dwukrotne odwołanie do pamięci Pożyteczne przy np. tablicy wskaźników możliwość modyfikacji adresu przez dodanie przemieszczenia lub indeksowanie Pierwszy adres, wyznaczony z jednego z omówionych wcześniej trybów adresowania pamięci, jest używany do odczytania wartości, służącej jako adres bazowy dla drugiego adresu. Do pozyskanego w ten sposób adresu bazowego można następnie dodać przemieszczenie lub przeskalowaną zawartość rejestru indeksowego. obecnie rzadko spotykane kosztowne czasowo Dostępne w klasycznych architekturach CISC np. VAX, M68k do modelu MC68020

Model operacji warunkowych Określa sposób realizacji przez procesor operacji warunkowych Warianty: model ze znacznikami model bez znaczników ( porównaj i... ) model z predykatami

Model ze znacznikami Znaczniki jednobitowe rejestry atrybutów wyniku ostatnio wykonywanej operacji zwykle zgrupowane w jeden kilkubitowy rejestr Operacja warunkowa realizowana za pomocą dwóch instrukcji (instrukcje procesora realizujące obie fazy mogą być rozsunięte w czasie): ustawienie znaczników instrukcja warunkowa zależna od ustawienia znaczników

Znaczniki Z zero przyjmuje stan 1 jeżeli wynik operacji wynosi 0 N/M (negative/minus) znak kopia najbardziej znaczącego bitu wyniku operacji C/CY (carry) przeniesienie/pożyczka przeniesienie wychodzące z najbardziej znaczącego bitu wyniku O/V/OV (overflow) nadmiar nadmiar w kodzie U2 AC/HC (auxillary/half carry) przeniesienie pomocnicze BCD przeniesienie pomiędzy najmniej znaczącymi tetradami P (parity) parzystość przyjmuje stan 1 jeśli liczba jedynek w najmniej znaczącym bajcie wyniku operacji jest parzysta

Zasady ustawiania znaczników Szczegółowe zasady ustawiania znaczników są zdefiniowane w dokumentacji modelu programowego każdego procesora Wszystkie znaczniki są ustawiane przez podstawowe dwuargumentowe instrukcje arytmetyczne i logiczne Inne instrukcje (np. jednoargumentowe) nie zawsze wszystkie znaczniki W niektórych architekturach znaczniki zera i znaku są ustawiane przez instrukcje przesłań np. M68k,HC08

Instrukcje warunkowe Instrukcja specyfikuje warunek wykonania jeśli warunek nie jest spełniony instrukcja wykonuje się jako pusta Skoki warunkowe dostępne we wszystkich architekturach przesłania warunkowe dostępne w nowszych procesorach umożliwiają eliminację części skoków i przyspieszenie wykonania kodu Architektury z warunkowym wykonaniem większości instrukcji np. ARM eliminacja znacznej części skoków w rozwinięciach krótkich konstrukcji typu if-then-else

Warunki wykonania instrukcji Specyfikowane jako wartość jednego znacznika lub wyrażenie logiczne na wartościach kilku znaczników Symboliczne oznaczenie nazwy warunku stanowi część nazwy instrukcji warunkowej, np. JNZ - jump if not zero Warunki w x86 Stosowane w nazwach warunków skróty A, B, G i L (above, below, greater, less) oznaczają odpowiednio relacje większości i mniejszości dla liczb bez znaku (A, B) i ze znakiem (G, L).

Model operacji warunkowych bez znaczników Operacja warunkowa jest realizowana przez pojedynczą instrukcję. Pojedyncza instrukcja ewaluuje relację i wykonuje operację jeśli relacja jest spełniona np. skocz jeśli zawartości rejestrów równe Charakterystyczny dla prostych procesorów RISC, np. MIPS

Model z predykatami Model z predykatami jest spotykany w nowych architekturach o dużej równoległości wykonania instrukcji, dużych zestawach rejestrów i wysokich kosztach skoków. Predykaty uogólnione znaczniki, mogą przechowywać wartość logiczną dowolnej wcześniej obliczonej relacji Duża liczba predykatów w procesorze możliwość równoczesnego przechowywania wartości wielu relacji Instrukcje w większości warunkowe, specyfikują numer predykatu jako warunek wykonania Model zaimplementowany w architekturze IA-64 (Itanium)

Podejścia do konstrukcji modelu programowego Model programowy procesora jest kompozycją czterech składników zestawu rejestrów, zestawu trybów adresowania, modelu operacji warunkowych i listy instrukcji.

CISC i RISC Podejścia CISC i RISC różnią się złożonością poszczególnych instrukcji. Istnieją procesory RISC wykonujące zaledwie około 30 instrukcji, ale również takie, które wykonują ponad 200 różnych instrukcji. Typowe procesory CISC wykonują kilkadziesiąt instrukcji.

CISC podejście klasyczne

CISC Procesor CISC powinien być wyposażony w tryby adresowania odzwierciedlające mechanizmy stosowane w językach wysokiego poziomu (tablice, struktury). Tymczasowe zastosowanie rejestrów nie wymaga dużej pojemności zestawu rejestrów.

CISC - problemy (wielofazowe wykonywanie instrukcji)

RISC szybki procesor, prosta struktura Praktycznie wszystkie architektury opracowane po 1985 roku są architekturami klasy RISC. Niektóre z nich są stosowane zarówno w komputerach uniwersalnych, jak i w zastosowaniach wbudowanych.

RISC - charakterystyka

RISC - charakterystyka

RISC

Reprezentacje instrukcji

Niezależność w liście instrukcji CISC

Architektura x86 (IA-32)

X86 - cechy

X86 adresowanie pamięci w trybie 32 - bitowym

X86 format instrukcji

Architektura MIPS32

MIPS32 - rejestry

MIPS32 - instrukcje 16-bitowa stała w formacie I służy, w zależności od instrukcji, jako argument natychmiastowy, przemieszczenie adresu danej w pamięci lub przemieszczenie skoku. Ponieważ instrukcje są zapisane w postaci słów 32-bitowych wyrównanych naturalnie, adres instrukcji jest zawsze podzielny przez 4. Przemieszczenie skoku jest traktowane jako przemieszczenie słowowe jest ono przesuwane w lewo o dwa bity, co umożliwia uzyskanie zasięgu skoków w zakresie od -128 do +128 KB.

MIPS32 formaty instrukcji