Twoim problemem jest to, że powszechną NICOŚĆ mylisz z osobistą PUSTKĄ

Pamięć cache – pamięć bufora, znacznie przyspiesza prace komputera. Jest to pamiec podręczna, która występuje bezpośrednio przy mikroprocesorze. Kopiowane są do niej całe bloki z pamięci ram. Dzieki temu mikroprocesor nie musi czekac na dostep do magistrali aby pobrac z pamieci dane.

Cykl rozkazowy (instrukcyjny) – sklada sie z kilku faz zwanych cyklami maszynowymi. Jest to czas potrzebny na odczytanie kodu operacyjnego rozkazu z pamieci, na pobranie argumentow, na wykonanie rozkazu i

cykl maszynowy – liczba cykli maszynowych odpowiada liczbie dostepow dopamieci. Cykle maszynowe najczesciej sa wykonywane synchronicznie z zegarem. Okres zegara nazywamy taktem

grupy instrukcji w procesorze – arytmetyczno-logiczne(arytm., log, przesuwania), rozkazy przeslan, rozk.sterujace praca programu, rozk.ster. Praca procesora.

Informacja jest miarą niepewności pewnego zdarzenia

Architektura Von Neumana

Główna cecha: rozdzielenie pamięci od sprzętu (pamięć programu i danych w architekturze Von Neumana to ta sama pamięć, do której można wprowadzić informacje poprzez urządzenia peryferyjne) - do tej pory pamięć była integralna, niezmienialną częścią ‘komputera’, przez co po stworzeniu komputera mógł on wykonywac tylko jeden algorytm – dzięki możliwości wprowadzana danych komputer stał się uniwersalny – mógł wykonywać dowolny algorytm

 

Architektura komputera – odnosi się do tych atrybutów systemu, które są widzialne dla programisty. Atrybuty te mają istotny wpływ na wykonanie programu.”

 

Organizacja komputera – odnosi się do jednostek „operacyjnych” i ich połączeń, które stanowią realizację specyfiki typu architektury.”

Różnica między tymi terminami polega głównie na tym że termin architektura obejmuje to co możemy oprogramować, natomiast organizacja jak to coś co możemy oprogramować jest w środku zbudowane – np. jak jest sprzętowo zorganizowane jest ALU.

Inne przykłady podane przez Kapruziaka co to organizacja:

- czy w środku procesor jest CISCowy czy RISCowy (tylko z obsługą rozkazów CISCowych które są w rzeczywistości wykonywane na procesorze rozkazami RISCOwymi)

- komputer superskalarny sam znajduje równoległość w programie (nie obchodzi nas jak to robi, po prostu to robi, oprogramowywać tego nie musimy)

Adresowanie natychmiastowe

W adresowaniu natychmiastowym argument pobierany jest bezpośrednio z rozkazu. W tym trybie wskazywany jest wyłącznie operand źródłowy. Np. MOV AX, 20 – w rejestrze AX zostanie zapisana liczba 20.

Adresowanie bezpośrednie

W adresowaniu bezpośrednim adres operandu znajduje się bezpośrednio w rozkazie. Np. MOV AX, [40] – w rejestrze AX zostanie zapisana zawartość komórki pamięci (segment danych) o adresie 40.

Adresowanie pośrednie

W trybie adresowania pośredniego odwołujemy się do jednego z rejestrów roboczych procesora (np. BX) lub do komórki pamięci (np.19). W rejestrze (BX) zapisany jest numer komórki pamięci, do której trzeba sięgnąć aby odczytać tam zawarty adres i przenieść do drugiego rejestru (AX). Np. MOV AX, [CX] – w rejestrze AX zostanie zapisana zawartość komórki pamięci o adresie, który znajduje się w rejestrze CX.

Adresowanie implikowane

Adresowanie implikowane dotyczy instrukcji jednobajtowych, dla których zarówno operand jak i miejsce przeznaczenia są określone przez dany rozkaz. Ten tryb adresowania jest używany wyłącznie w odniesieniu do wewnętrznych rejestrów mikrokontrolera, szczególnie w odniesieniu do akumulatora. Ze względu na krótki format instrukcji tryb ten jest bardzo efektywny, a ograniczeniem jest tylko liczba dostępnych rejestrów. rozkaz zajmuje tylko jeden bajt. W danym przypadku pierwsze 4 bity określają rodzaj instrukcji (ADD), przy czym ta instrukcja już sama w sobie określa że ma dodać zawartość akumulatora do rejestru którego numer jest określony w dalszych 4 bitach rozkazu (1001) – w tym przypadku rejestr R1. Instrukcja sama w sobie także określa że wynik zostanie zapisany w akumulatorze – dlatego nie potrzebuje dodatkowych argumentów i mieści się w 8 bitach.

Adresowanie względne

Adresowanie względne służy natomiast do adresowania pamięci względem adresu aktualnie wykonywanej instrukcji w pamięci programu. Adres ten jest przechowywany w specjalnie do tego przeznaczonym rejestrze zwanym wskaźnikiem instrukcji (IP). Tryb ten jest wykorzystywany przez rozkazy skoku.

Adresowanie indeksowe

Adresowanie to polega na obliczaniu adresu przez sumowanie zawartości specjalnie przeznaczonego do indeksowania rejestru, zwanego rejestrem indeksowym z adresem bezpośrednim, zapisanym w instrukcji. Obliczony w ten sposób adres jest adresem efektywnym. Tryb ten jest korzystny, gdy operujemy na blokach danych

Tryby adresowania 8086

-implikowane –argument związany jednoznacznie z nazwą funkcji np. RET

-natychmiastowe – wartość podana jest w kodzie instrukcji np. JUMP 0x00

-rejestrowe - argument dotyczy jednego z rejestrów procesora np. MOV AX,BX

-bezpośrednie - instrukcja zawiera adres do pamięci, pod którym znajduje się wartość argumentu np. JMP AX,licznik

-pośrednie rejestrowe - instrukcja zawiera adres rejestru, który zawiera adres do pamięci, pod którym znajduje się wartość danej. Dotyczy to rejestrów SI, DI, BX oraz BP.

Np. ADD [DI], AX

-indeksowe - instrukcja zawiera stałą, która dodawana jest do rejestru bazowego (BX, BP) lub indeksowego (SI, DI), tworząc adres do pamięci, pod którym znajduje się wartość danej.

-bazowe indeksowe zawartość rejestru bazowego (BX, BP) jest dodawana do zawartości rejestru indeksowego (SI, DI), tworząc adres do pamięci, pod którym znajduje się wartość danej. NOT [BX+DI]

-bazowe indeksowe z przemieszczeniem - stała jest dodawana do rejestru bazowego (BX, BP) oraz rejestru indeksowego (SI, DI), tworząc adres do pamięci, pod którym znajduje się wartość danej np. NOT [BX+DI+8]

Różnica między mikroprocesorem a mikrokontrolerem.

Mikroprocesor jest bardziej ukierunkowany na obliczenia, wymaga od otoczenia wiele jeśli chodzi o komunikacje. Mikrokontroler jest ukierunkowany na kontakt z otoczeniem, posiada natomiast słabszą jednostkę obliczeniową. Dzięki temu że posiada porty komunikacja z otoczeniem jest łatwa, dane można wyprowadzać bezpośrednio na zewnątrz w sposób jaki nam odpowiada. Obecnie granice się zacierają, to raczej producent określa czy jego produkt jest mikrokontrolerem czy mikroprocesorem.

SEGMENTY->zaleta: krótsze słowo w stosunku do banku, przenoszalność danych, segment w adresie jest podzielny przez 16, instrukcje/program możemy umieścic w każdym miejscu kodu,czyli każdy program może startować z dowolnego miejsca.

Tryb rzeczywisty – tryb zgodny z najstarszym z rodziny 8086

Tryb chroniony – tryb przeznaczony do pracy „wielozadaniowej” pod kontrolą

systemu operacyjnego. Adresowanie może być w modelu płaskim (bez

segmentacji), segmentowy (podobnie do trybu rzeczywistego) oraz adresowanie

logiczne (oparty na tablicy deskryptorów i selektorach).

Tryb SMM (System Management Mode) – tryb zarządzania sprzętem przez system

operacyjny

Tryb wirtualny 8086 – wersja trybu chronionego do wykonywania programów w

trybie rzeczywistym

Watchdog ( pies łańcuchowy) to urządzenie, najczęściej , chroniący system przed zbyt długim przebywaniem w stanie zawieszenia. Jego działanie polega na zresetowaniu w przypadku nieotrzymania od niego w określonym czasie.

W oprogramowaniu umieszcza się funkcję ustawiająca wartość licznika na pewną wartość początkową. Z upływem czasu mierzonego przez niezależny od procesora zegar, wartość licznika zmienia się (zwykle maleje), co określony czas. Jeśli osiągnie pewną wartość, zwykle jest nią 0, następuje opisane zresetowanie procesora, lub generowane jest przerwanie. Jednym z założeń poprawnej pracy systemu z watchdogiem jest ustawianie na nowo wartości licznika co pewien czas. Ta funkcja jest umieszczana w programach tak, by wykonywać się co czas mniejszy od czasu wyzerowania licznika. Jeśli program przestanie działać poprawnie - np.: wpadnie w wieczną pętlę lub się i nie będzie ustawiał licznika na nowo, można założyć że reset jest uzasadniony. W ten sposób watchdog chroni system komputerowy przed nieprzewidzianym zatrzymaniem się. Watchdog jest instalowany w systemach, które działają często bez obsługi człowieka, ich nieprzerwane działanie jest bardzo ważne lub działanie nieprzewidziane może być niebezpieczne. Są standardem w funkcjonujących w różnych urządzeniach.

Przetwarzanie potokowe jest jednym ze sposobów równoległego przetwarzania informatycznych.

Sposób działania: cykl przetwarzania dzieli się na odrębne bloki przetwarzania, z których każdy oprócz pierwszego i ostatniego jest połączony z następnym. Dane po przejściu przez jeden blok trafiają do następnego, aż osiągną ostatni blok.

Dzięki temu, że przetwarzanie odbywa się w rozdzielnych blokach system może przetwarzać jednocześnie tyle danych ile zdefiniowano bloków.

pipelining) — technika budowy polegająca na podziale logiki procesora odpowiedzialnej za wykonywania programu ( procesora) na specjalizowane grupy w taki sposób, aby każda z grup wykonywała część pracy związanej z wykonaniem rozkazu. Grupy te są połączone sekwencyjnie — potok (ang. pipe) — i wykonują pracę równocześnie, pobierając dane od poprzedniego elementu w . W każdej z tych grup rozkaz jest na innym stadium wykonania. Można to porównać do taśmy produkcyjnej. W uproszczeniu, potok wykonania instrukcji procesora może wyglądać następująco:

Pobranie instrukcji z pamięci - instruction fetch (IF);

Zdekodowanie instrukcji - ang. instruction decode (ID)

Wykonanie instrukcji - ang. execute (EX)

Dostęp do pamięci - ang. memory access (MEM)

Zapisanie wyników działania instrukcji - ang. store; write back (WB)

RISC (Reduced Instruction Set Computers) - Ówczesne procesory (budowane w architekturze ) charakteryzowały się bardzo rozbudowaną listą rozkazów, ale jak wykazały badania tylko nieliczna ich część była wykorzystywane w statystycznym programie. Okazało się np. że ponad 50% rozkazów w kodzie to zwykłe przypisania (zapis zawartości rejestru do pamięci i odwrotnie).

Ponadto badania wykazały, że podczas działania programu ok. 26-45% wykonywanych instrukcji to instrukcje wywołania podprocedur lub instrukcje obsługujące pętle, ok. 13-15% to wspomniane przypisania, 7-21% to instrukcje warunkowe (jeśli warunek to …), natomiast reszta to tylko 1-3%

W związku z powyższym zaprezentowano architekturę mikroprocesorów, w której uwzględniono wyniki badań. Jej podstawowe cechy to:

- Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Upraszcza to znacznie dekoder rozkazów.

- Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo upraszcza wspomniany wcześniej dekoder rozkazów. Ponadto wprowadzono tryb adresowania, który ogranicza ilość przesłań

- Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje, które zwykle nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci); pozostałe instrukcje mogą operować wyłącznie na rejestrach. Schemat działania na liczbach znajdujących się w pamięci jest następujący: załaduj daną z pamięci do rejestru, na zawartości rejestru wykonaj działanie, przepisz wynik z rejestru do pamięci.

- Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie liczby odwołań do pamięci.

- Dzięki (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu maszynowym, co pozwala na znaczne uproszczenie bloku wykonawczego, a zastosowanie także na umożliwienie równoległego wykonywania rozkazów. Dodatkowo czas reakcji na jest krótszy.

CISC ( Complex Instruction Set Computers) – nazwa o następujących cechach:

- duża liczba

- mała optymalizacja – niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania

- występowanie złożonych, specjalistycznych rozkazów

- duża liczba trybów adresowania

- do pamięci może się odwoływać bezpośrednio duża liczba rozkazów

- mniejsza od -ów częstotliwość taktowania procesora

powolne działanie dekodera rozkazów

 

Jest architektura zestawu instrukcji dla mikroprocesora, w którym każda instrukcja może wykonać kilka operacji niskiego poziomu, jak na przykład pobranie z pamięci, operację arytmetyczną, albo zapisanie do pamięci a to wszystko w jednej instrukcji. Przed powstaniem procesorów RISC, wielu komputerowych architektów próbowało zmostkować lukę semantyczną – aby zaprojektować zestawy instrukcji, które wspierałyby wysokiego poziomu przez dostarczenie instrukcji wysokiego poziomu np. call i return, instrukcje pętli i kompleksowe tryby adresowania aby pozwolić strukturom danych i szeregom dostępu być połączonym w jedną instrukcję. Rezultatem tego były programy o mniejszym rozmiarze i z mniejszą ilością odwołań do pamięci, co w tamtym czasie bardzo ograniczyło koszty pojedynczego komputera.

Z reguły procesory wykonane w architekturze CISC działają wolniej niż procesory, o przeciwstawnych założeniach , działające z tą samą częstotliwością.

Przesłanki do powstania RISC:

10 podstawowych instrukcji stanowiło statystycznie 95% procent wszystkich wykonywanych instrukcji w programie. Stwierdzono więc że bez sensu jest zajmować miejsce na procesorze obsługą rozkazów które są tak rzadko wykonywane, lepiej przeznaczyć to miejsce na coś innego. Ponadto jeśli wszystkie instrukcje będą zajmować tyle samo czasu da się zaimplementować potok.

 

Kiedy więc zwolniło się miejsce po odjęciu zbędnych funkcji, postały 4 architektury procesorów RISCowych, każda bazująca na innej idei co z wolnym miejsce zrobić:
-SPARC – skupiło się na szybszym przełączaniu kontekstu (następuje np. przy wywoływaniu funkcji i powrocie z niej), wolne miejsce zostało zagospodarowane na dodatkowe rejestry. Powstała idea okien, między którymi można się przełączać (np. przy wywołaniu funkcji), a każde okno miało swoje rejestry (dlatego potrzebowano ich tak wiele), więc nie trzeba odkładać wartości rejestrów na stos i potem ich zdejmować przy przełączaniu kontekstu

-MIPS – dodajemy dodatkową jednostkę obliczeniową – powielamy układ wykonawczy. Ciężar zapewnienie poprawności programu spoczywa na kompilatorze. Mikroprocesory z tej rodziny mają na początku oznaczenia literkę R np. R2000

-ARM – nic nie róbmy z wolnym miejscem, mniejsza jednostka będzie zużywać mniej mocy, więc będzie wydzielać mniej ciepła, więc można jej podkręcić zegar

-POWERPC – podobnie jak MIPS bazuje na równoległości – tutaj podajemy kolejne bloki funkcjonalne, który każdy ma inne zadania – jeden obsługuje liczby całkowite, inny np. Zmiennoprzecinkowe.

Rejestry procesora 8086:

AX – Accumulator Registe

BX – Base Address Register

CX – Count Register

DX – Data Register

BP – Base Pointer

SP – Stack Pointer

SI – Source Index Register

DI – Destination Index Register

IP – Instruction Pointer

Flagi:

OF – Overflow Flag

DF – Direction Flag

IF – Interrupt Enable Flag

TF – Trap Flag

SF – Sign Flag

ZF – Zero Flag

AF – Auxiliary Flag

PF – Parity Flag

CF – Carry Flag

 

REJESTRY

Przy okazji slajdu 15/25 wspomniał żeby przeczytać za co odpowiadają rejestry wskaźników, przejściowy i rozkazów.

Rejestr wskaźników i rejestr przejściowy należą do układu wykonawczego.

 

Operacje ALU sa przeprowadzane na argumentach, które zawarte są w akumulatorze i rejestrze przejściowym. Pod względem funkcjonalności akumulator różni się od rejestru przejściowego tym, że jego zawartość może być czytana i wysyłana do innego rejestru lub pamięci, natomiast zawartość rejestru przejściowego nie może być wyprowadzane na szynę danych. Po wykonaniu operacji jednostka ALU generuje wynik, natomiast pewne

specyficzne informacje typu: wynik równy zeru, przeniesienie, pożyczka, przepełnienie, znak wyniku, parzystość są przechowywane w rejestrze wskaźników. Rejestr wskaźników zwany jest też często rejestrem stanu. Za pomocą specjalnych instrukcji możliwe jest testowanie stanu poszczególnych bitów rejestru wskaźnikowego i stosowanie w programie rozgałęzień.

 

Rejestr rozkazów wchodzi w skład jednostki sterującej. W rejestrze rozkazów przechowywany jest kod aktualnie wykonywanego rozkazu (instrukcji).

 

PIC jest oparty na architekturze harwardzkiej. Głównym założeniem architektury harwardzkiej jest oddzielenie pamięci danych od pamięci programu (przeciwnie niż w architekturze Von Neumana, gdzie pamięć danych i programu jest jedna pamięcią). Dzięki temu podziałowi architektura ta jest prostsza w budowie oraz szybsza niż architektura Von Neumana.

1

...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • jucek.xlx.pl






  • Formularz

    POst

    Post*

    **Add some explanations if needed