67
Progr. na poziomie sprzętowym - powtórka 1/67 Programowanie na poziomie sprzętowym, x86 + powtórka ASK dr inż. Mariusz Kapruziak [email protected] pok. 107, tel. 449 55 44

Programowanie na poziomie sprzętowym, x86 + powtórka ASK

  • Upload
    prue

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

Programowanie na poziomie sprzętowym, x86 + powtórka ASK. dr inż. Mariusz Kapruziak [email protected] pok. 107, tel. 449 55 44. Procesor, Mikroprocesor, Mikrokontroler. PROCESOR. Procesory strukturalne. Procesory proceduralne. ASIC/ASSP. FPGA\CPLD. mikrokontroler. mikroprocesor. - PowerPoint PPT Presentation

Citation preview

Page 1: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 1/67

Programowanie na poziomie

sprzętowym, x86 + powtórka ASK

dr inż. Mariusz [email protected]. 107, tel. 449 55 44

Page 2: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 2/67

Procesor, Mikroprocesor, Mikrokontroler

PROCESOR

Procesory strukturalne

Procesory proceduralne

mikroprocesormikrokontrolerASIC/ASSP FPGA\CPLD

Page 3: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 3/67

Software 1965 - 1985

Page 4: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 4/67

Technika mikroprocesorowa - zakres kursu

Wykład 1. Powtórka ASK + x86

Wykład 2. Tryb chroniony, MMU, rodzaje jąder OS

Wykład 3. Sterowniki i obsługa sprzętu w MS Windows (WDM)

Wykład 4. Sterowniki i obsługa sprzętu w UNIX/LINUX

Wykład 5. Linux embedded, kompilacja jądra, pisanie aplikacji i sterowników

Wykład 6. WIN-CE - programowanie

Wykład 7. uCLinuxPropozycja 8. Aplikacje Real Time dla Linux

Propozycja 9. Embedded Graphics

Page 5: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 5/671 2 3 4 5

Architektura von Neumana i jej znaczenie

John von Neumann

1. specjalizowana funkcja składana jest z sekwencyjnie wykonywanych uniwersalnych operacji (program)

2. program i dane są logicznie rozdzielone

3. program i dane zndajdują się fizycznie w tej samej pamięci

4. pamięć zawierajaca zarówno program jak i dane łączy się z procesorem jedną wspólną szyną

Komputer von Neumanna: maszyna automatyczna do wykonywania operacji pobiarania instrukcji i wykonywania instrukcji na przemian

(fetch-execute mechine)

P.E. Ceruzzi, A History of Modern Computing, MIT Press 2003

Page 6: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 6/671 2 3 4 5

Komputer

W. Stallings, Organizacja i architektura systemu komputerowego, WNT 2003

Page 7: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 7/671 2 3 4 5

System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:

●mieć skończoną i funkcjonalnie pełną listę rozkazów.

●mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak danych.

●dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora.

●Informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze. http://pl.wikipedia.org/wiki/Architektura_von_Neumanna

Von Neumann - wikipedia

Page 8: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 8/671 2 3 4 5

Organizacja komputera

R. Pełka, Mikrokontrolery, architektura, programowanie, zastosowania, WKŁ 2000

SZYNY:

DANYCH

ADRESOWA

STEROWANIA

Page 9: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 9/671 2 3 4 5

Architektura von Neumanna a organizacja komputera

Page 10: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 10/671 2 3 4 5

Architektura komputerów mainframe System/360 1

Ok. 304 instrukcji o zmiennej długości i czasie wykonania

3 różne możliwe długości instrukcji

16 trybów adresowania

System/360 Model 64, Źródło: wikipedia

Page 11: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 11/671 2 3 4 5

Architektura komputerów mainframe System/360 2

offset

23

EF

Base Reg.

1

+

Instrukcja...

12

Szyna adresowa

32 24

General Purpose Reg.

R0R1R2

R13R14R15

GPR

OP CODE par0 par0/1 par1/2 par2/3 par2/3

1B 1B 1B 1B 1B 1B

INSTRUKCJA:

ZMIENNA DŁUGOŚĆ

SEGMENT + OFFSET

Rozszerzenia: Commercial Instruction Set, Scientific Instruction Set

Page 12: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 12/671 2 3 4 5

Obsługa szyny adresowej: banki vs segmenty

offset

DSSSESFSGS

Rej. Segment.

CS

+

Instrukcja...

16

Szyna adresowa

16 20

Szyna adresowa

8

offset

Instrukcja...

7

STATUS.RP0

LSb

MSb1

Banki pamięci, przykład Microchip PIC

Segmenty pamięci, przykład 8086

segment: offset:

adres fizyczny:

STATUS.RP0: offset:

adres fizyczny:

Page 13: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

1. Architektura von Neumanna 13/671 2 3 4 5

Architektura komputerów mainframe System/360 4

System operacyjny:

BOS/360 –Basic Operating System / 360

DOS/360 – Disk Operating System / 360

OS/360 MVT – Operating System

Page 14: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 14/671 2 3 4 5

Chip, komputery generacja III

H. Grosch, 1955

Prawo Groscha – Zakup komputera większego i dwa razy droższego skutkuje cztery razy większą mocą obliczeniową.

J. Kilby, Texas Instruments.

R. Noice, Fairchild Semiconductor.

Pierwszy patent na układ scalony zawierający więcej niż jeden element w środku

P.E. Ceruzzi, A History of Modern Computing, MIT Press 2003

Page 15: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 15/671 2 3 4 5

Przesłanki do powastania RISC – pamięć RAM

RAM – Random Access MemorySuper Nova, Data General (założone przez inżynierów/buntowników z DEC),

połowa 1971

Data General Super Nova, 256 bitów

1970, Intel 1103, RAM 1024 bit

P.E. Ceruzzi, A History of Modern Computing, MIT Press 2003

Page 16: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 16/671 2 3 4 5

Przesłanki do powastania RISC – statystyki wykorzystania instrukcji

Statystyki wykorzystania instrukcji dla procesorów o architekturze 8086

Page 17: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 17/671 2 3 4 5

Przesłanki do powastania RISC - POTOK

Page 18: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 18/671 2 3 4 5

Powstanie i krótka historia powszechnych architektur RISC

1975 - IBM 801, 32 32-bit GPR

1980 – Berkeley RISC I/II, projekt badawczy: wielozadaniowość

1981 – Stanford MIPS, projekt badawczy: eliminacja konfliktów na rejestrach przez kompilator, wiele jednostek funkcjonalnych

SPARC – otwarta architektura RISC

1986 – ARM, Advanced RISC Machine, projekt badawczy: nisko-mocowość, wysokie częstotliwości

1991 – PowerPC, IBM/Motorola/Apple, projekt badawczy: równoległość wykonania

Page 19: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 19/671 2 3 4 5

SPARCScalable Processor ARChitecture

Skoncentrowano się na efektywnej metodzie przekazywania parametrów do procedur. Zaproponowano koncepcje okien rejestrów.

Przykładowe procesory: Sun microSPARC-IISun superSPARCFujitsu turboSPARCFujitsu SPARCliteHAL Computer Sys. SPARC 64

Page 20: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 20/671 2 3 4 5

MIPSMicroprocessor without Interlocking Pipeline Stages

Potok wykorzystywany do aktywowania na raz więcej niż jednej operacji. Ciężar zapewnienia poprawności wykonania spoczywa na kompilatorze.

MIPS I (1984, R2000, R3000)MIPS II (1990, R6000)MIPS III (1991, R4000, R4400)MIPS IV (1994, R5000, R7000, R8000, R10000)MIPS V ( 1996, R12000)

Architektura MIPS R4400

J. Silc, B. Robic, T Ungerer, Processor Architecture, Springer Verlag 1999

Page 21: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 21/671 2 3 4 5

ARM

Advanced RISC Machine

Niskomocowa architektura, pracująca z dużymi częstotliwościami.www.arm.com

Page 22: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 22/671 2 3 4 5

PowerPCPerformance Optimization With Enhanced RISC PC

1990 – IBM POWER ISAArchitektura przewidująca jasny podział względem funkcji. Wyraźnie oddzielone funkcje kontroli wykonania programu, ogliczeń stałoprzecinkowych, obliczeń zmiennoprzecinkowych itp. . Każdy z takich bloków mógł pracować równolegle.

1991 – IBM/Motorola/Apple PowerPC ISA Rozszerzona, 64-bitowe wersja architektury POWER.

Page 23: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

2. RISC 23/671 2 3 4 5

RISC - podsumowanie

Proste instrukcje i możliwie niewiele trybów adresowania

Większość isntrukcji operuje tylko na rejestrach. Do odwołania do pamięci instrukcje load/store

Dość głęboki potok w układzie sterującym

Mikroprogram praktycznie nie stosowany

Duża część zadań pozostawiona kompilatorowi do zaplanowania

Rozbudowana hierarchia pamięci

Page 24: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 24/671 2 3 4 5

Architektura 8086 , 1978

AD15-AD0 - Multipleksowane adres(ALE=1)/dane(ALE=0).

A19/S6-A16/S3 (multipleksowane) - Starsze 4 bity adresu lub status S6-S3

S7 – S0 – sygnalizuje parametry działania procesora.

INTR, INTA - Przerwanie i potwierdzenie przerwania

WR, RD – Zapis/Odczyt dla szyny

ALE – gdy 1, szyna zawiera adres (nie daną).

DT/R (Data Transmit/Receive) – Szyna danych zawiera dane.

HOLD – prośba o DMA

Page 25: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 25/671 2 3 4 5

Rejestry 8086AX – Accumulator Register

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

FLAGS: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

Page 26: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 26/671 2 3 4 5

Format Instrukcji 8086

Page 27: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 27/671 2 3 4 5

Lista instrukcji 8086 – instrukcje transferu

Page 28: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 28/671 2 3 4 5

Lista instrukcji 8086 – instrukcje arytmetyczne

Page 29: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 29/671 2 3 4 5

Lista instrukcji 8086 – instrukcje logiczne

Page 30: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 30/671 2 3 4 5

Lista instrukcji 8086 – instrukcje skoku

Page 31: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 31/671 2 3 4 5

Lista instrukcji 8086 – tryby adresowania

Implied (implikowane) – argument związany jednoznacznie z nazwą instrukcji.

Register (rejestrowe) – argument dotyczy jednego z rejestrów procesora

Immediate (natychmiastowe) – wartość danej zawarta jest w kodzie instrukcji

Direct (bezpośrednie) – instrukcja zawiera adres do pamięci, pod którym znajduje się wartość argumentu

Register indirect (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.

Indexed (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.

Based Indexed (bazowe indeksowe) – zawartość rejestru bazowego (BX, BP) jest dodawana do zawartości rejestru indeksowego (SI, DI), tworząc adres do pamieci, pod którym znajduje się wartość danej.

Based Indexed with displacement (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.

RET

MOV AX, BX

JMP 0x0100

JMP AX, licznik

ADD [DI], AX

ADD [DI+8], AX

NOT [BX+DI]

NOT [BX+DI+8]

Page 32: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 32/671 2 3 4 5

8086 – „płyta główna” 8284A – Generator zegara

8288 – Kontroler szyny

8286 – Transceiver szyny danych

8259 – Kontroler przerwań

Page 33: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 33/671 2 3 4 5

8086 – sygnały na szynie

Page 34: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 34/671 2 3 4 5

BIOS i start systemu

BIOS – Basic Input/Output System – oprogramowanie wbudowane w chip na płycie głównej komputera PC.

1. Wykonuje procedurę POST – Power-On Self Test, w celu inicjalizacji i testowania urządzeń

2. Ładuje system operacyjny (boot OS)

IPL Device – Initial Program Load Device – urządzenie umożliwiające załadowanie systemu operacyjnego

BAID – BIOS Aware IPL Device – urządzenie IPL, które do załadowania systemu potrzebuje odpowiedniego kodu obsługującego w BIOS.

Page 35: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 35/671 2 3 4 5

BIOS i start systemu

1. Procesor wykonuje instrukcje zaczynając od adresu F000:FFF0 (zazwyczaj jmp)

2. Instrukcje dotyczą procedury POST

3. Po zakończeniu POST wywoływane jest przerwanie 19h

4. Przerwanie 19h podejmuje próbę załadowania systemu operacyjnego zgodnie z tablicą IPL

5. Jeśli próba się nie powiedzie, wywoływane jest przerwanie 18h

6. Przerwanie 18h przekazuje sterowanie do przerwania 19h, jeśli IPL Table posiada kolejen wpisy, lub wyświetla komunikat o błędzie

Page 36: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 36/671 2 3 4 5

BIOS i start systemu z dyskietkiProcesor pracuje w trybie rzeczywistym x86

Załadowanie 512 bajtów do pamięci pod adresem 0000h:7C00h z dysku z lokalizacji:

head 0, cylinder 0, sector 1

http://www.howtodothings.com/computers/a1015-making-your-own-operating-system.html

Każda strona dyskietki FDD ma swoją głowicę (heads 0...1). Każda strona składa się z 80 cylindrów, każdy cylinder składa się z 18 sektorów. Każdy sektor składa się z 512 bajtów.

Łączny rozmiar dyskietki: 2 x 80 x 18 x 512 = 1,474,560

Page 37: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 37/671 2 3 4 5

BIOS i start systemu z dyskietkiLEA SI, msg

MOV AH, 0Eh

pisz:

MOV AL, [SI] CMP AL, 0 JZ done INT 10h. INC SI JMP piszdone:

MOV AH, 0

INT 16h

JMP done

new_line EQU 13, 10

msg DB ‘moj pierwszy system operacyjny!' DB new_line, ‘Nacisnij klawisz', 0

Page 38: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 38/671 2 3 4 5

DOS – szablon programu

.model small

.386

.data

tekst byte „czesc”, 0Ah, 0Dh, „$”

.stack 100h

.code

.startup

MOV dx, offset tekst

MOV ah, 09h

INT 21h

.exit

end

Page 39: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 39/671 2 3 4 5

Segmenty i modele pamięci.model small

.386

dane segment para

tekst byte „czesc”, 0Ah, 0Dh, „$”

dane ends

moj_stos segment stack para

word 10 dup (?)

moj_stos ends

program segment para ‘code’

assume cs:program, ds:dane

.startup

MOV dx, offset tekst

MOV ah, 09h

INT 21h

.exit

program ends

end

ASSUME segRegister:segLocation [...]

name SEGMENT [align][READONLY]...

.....

name ENDS

Page 40: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 40/671 2 3 4 5

Windows – szablon programu

.model flat, stdcall

option casemap :none

include windows.inc

include user32.inc

include kernel32.inc

includelib user32.lib

includelib kernel32.lib

.data

Tytul_okna byte „moje okno”, 0

Tekst_w_oknie byte „czesc!”, 0

.code

start:

invoke MessageBox, NULL, ADDR Tekst_w_oknie, ADDR Tytul_okna, MB_OK

invoke ExitProcess, NULL

end start

Page 41: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 41/671 2 3 4 5

Mechanizm przerwań - podziałSytuacje wyjątkowe (exception interrupts) – zdarzenia o największym znaczeniu

dla działania programu. Nie można ich odłożyć na później. Na przykład błąd dzielenia przez zero (divide-by-zero exception) lub przerwanie niemaskowalne (non-maskable interrupt).

Maskowalne przerwania sprzętowe (event interrupts) – przerwania pochodzące od urządzeń peryferyjnych. Mogą być blokowane i mogą mieć różne priorytety. Na przykład przerwanie od układu Timera.

Przerwania programowe (software interrupts) – wywoływane są przez umieszczenie w programie instrukcji wywołania przerwania (umieszczane przez programistę). Wykorzystywane czasem do zapewnienia wsparcie sprzętowego dla priorytetów wykonania pewnych fragmentów kodu lub częściej do implementacji funkcji systemowych (np.. BIOS).

Pułapki (traps) – stosowane do śledzenia wykonania programu w fazie testowania (breakpoints).

Page 42: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 42/671 2 3 4 5

Mechanizm przerwań - PC

Page 43: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 43/671 2 3 4 5

Mechanizm przerwań – Intel 8259A

Page 44: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 44/671 2 3 4 5

1) Urządzenie zgłasza chęć przerwania na linii IRx

2) Sprawdzane jest zezwolenie na przerwanie i priorytety przerwań

3) Wystawiany jest sygnał na linii INT

4) Procesor odpowiada sygnałem na linii INTA

5) Procesor po raz drugi daje sygnał na INTA, na który kontroler wystawia na szynę danych numer przerwania

6) Numer przerwania jest dla procesora indeksem w tablicy adresów do funkcji obsługi

7) Jeśli kontroler pracuje w trybie automatycznym, sam odznacza wykonanie przerwania w rejestrze statusu przerwań, w innym przypadku program użytkownika musi to zrobić.

Mechanizm przerwań – Intel 8259A

Page 45: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 45/671 2 3 4 5

DMA - Direct Memory Access, zysk

1) Procesor odczytuje bajt z portu IO i zapamiętuje w akumulatorze

2) Procesor wpisuje wartość z akumulatora do pamięci

1) Bajt wystawiany jest przez urządzenie i wpisywany bezpośrednio do pamieci. Szyna adresowa i sterująca kontrolowana przez kontroler DMA.

Page 46: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 46/671 2 3 4 5

DMA na komputerze PC

1) Urządzenie per. gdy ma dane do wysłania wystawia sygnał na DREQx (DMA Request)

2) Układ DMA wystawia żądanie przejęcia szyny na linie HRQ (Hold Request)

3) Procesor/kontroler szyny odpowiada zezwoleniem na przejęcie szyny na HLDA (Hold Ack)

4) Układ DMA informuje urządzenie per. o przejęciu kontroli nad szyną na linii DACKx i rozpoczyna transmisję (IOR/IOW/MEMR/MEMW/EOP)

Page 47: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 47/671 2 3 4 5

Tryby pracy kontrolera DMA„I” (Idle) – tryb spoczynkowy, oczekuje na nadejście żądania transmisji DMA

„S” (Single) – pojedyncze przesłanie. Rejestr adresowy zmniejszany/zwiększany o jeden.

„B” (Block) – transmisja trwa nieprzerwanie aż do zewnętrznego sygnału EOP od urządzenia per. Każde przesłanie pomniejsza/powiększa rejestr adresowy o jeden.

„D” (Demand) – podobny do trybu „B”. Pozwala na przerwanie transmisji po określonej maksymalnej liczby cykli lub wystąpienia żądania transmisji DMA o wyższym priorytecie.

„C” (Cascade) – kontrolery połączone w kaskadę przekazują informację do urządzenia Master nie przejmując samodzielnie kontroli na szynie.

„V” (Verify) – tryb diagnostyczny. Wystawia do urządzenia właściwe sygnały ale nie przejmuje kontroli nad szyną.

Page 48: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

3. x86 48/671 2 3 4 5

DMA – połączenie kaskadowe i podłączanie do szyny

Page 49: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 49/671 2 3 4 5

Metody przewidywania skoków

Metody statyczne (static prediction schemes) – możliwe do określenia na etapie kompilacji.

1. Schemat „always taken” / „always not-taken”

2. Schemat „forward not taken backward taken”

3. Schemat „delayed branch”

Metody dynamiczne (dynamic prediction schemes) – wykonywane sprzętowo wewnątrz procesora.

1. Schemat tabeli 1-bitowych wartości.

2. Schemat tabeli N-bitowych wartości.

3. Schematy dwupoziomowe historii skoków.

Page 50: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 50/671 2 3 4 5

1 1N

NS

N

Prawo Amdahla – forma oryginalna

NS Speed up – przyspieszenie przy wykorzystaniu N proc.

N Liczba procesorów

Część programu wymagająca sekwencyjnego wykonania

Tylko część programu można zrównoleglić. Pozostała część, ze względu na występujące w niej zależności, musi być wykonana sekwencyjnie.

Page 51: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 51/671 2 3 4 5

Architektury przewidujące równoległości poziomu instrukcji

Front-end

Określenie zależności

Określenie niezależności

Przypisanie do jednost.funkcjonalnych

Przypisanie do ścieżektransferu danych

Kod aplikacji

Wykonanie

Zadaniakompilatora

Zadaniaprocesora

Określenie zależności

Określenie niezależności

Przypisanie do jednost.funkcjonalnych

Przypisanie do ścieżektransferu danych

Zależnościprocesoryprzepływowe

Sekwencja

procesorysuperskalarne

NiezależnościEPIC

Niezależności

VLIW

Niezależności

TTA

arch

itek

tury

sta

tycz

ne

arch

itek

tury

dyn

amic

zne

Page 52: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 52/671 2 3 4 5

IS RO

EX

WB

Scoreboard

FU1

EXFUN

EXFU0

…IF

MEM

WAW RAW WARStrukt.

Eliminacja zależności w algorytmie scoreboarding

Page 53: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 53/671 2 3 4 5

R

F0

…R0 R1 R2 RM

Busy RO WBEX

FN

F1 …

DestSrc

Struktury wykorzystywane w algorytmie scoreboarding

Page 54: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 54/671 2 3 4 5

Pamięć podręczna

Page 55: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 55/671 2 3 4 5

Funkcje odwzorowania pamięci podręcznejOdwzorowanie skojarzeniowe

Odwzorowanie bezpośrednie

Odwzorowanie sekcyjno-skojarzeniowe

Page 56: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 56/671 2 3 4 5

Odwzorowanie skojarzeniowe

Page 57: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 57/671 2 3 4 5

Odwzorowanie skojarzeniowe - przykład

Page 58: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 58/671 2 3 4 5

Odwzorowanie bezpośrednie

Page 59: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 59/671 2 3 4 5

Odwzorowanie bezpośrednie – stałe przypisanie bloków

Page 60: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 60/671 2 3 4 5

Odwzorowanie bezpośrednie - przykład

Page 61: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 61/671 2 3 4 5

Odwzorowanie sekcyjno-skojarzeniowe

Page 62: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 62/671 2 3 4 5

Odwzorowanie sekcyjno-skojarzeniowe

Page 63: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 63/671 2 3 4 5

Pamięć podręczna – algorytmy zastępowania

LRU – Least-Recently Used – najmniej ostatnio używane

Należy zastąpić ten blok w seksji, który pozostawał w pamięci podręcznej najdłużej bez odwoływania się do niego.

FIFO – First In First Out – pierwszy wchodzi, pierwszy wychodzi

Należy zastąpić ten blok, który najdłużej pozostawał w pamięci podręcznej.

LFU – Least Frequently Used – najrzadziej używany

Należy zastąpić ten blok, którego dotyczyło najmniej odniesień.

Page 64: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 64/671 2 3 4 5

Pamięć L1/L2, jednolita/program-dane, ...

                                  

       

Zapis jednoczesny (Write Through)

Zapis opóźniony (Write Back)

Page 65: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

5. Nowoczesne problemy 65/671 2 3 4 5

Pamięć wirtualna - wprowadzenie

STRONICOWANIE

PAMIĘĆ WIRTUALNA

Page 66: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 66/67

Polecana literatura

2) W. Stallings, Organizacja i architektura systemu komputerowego, WNT 2003

1) R. Pełka, Mikrokontrolery, architektura, programowanie, zastosowania, WKŁ 2000

3) J. Stokes, Inside the Machine, No Starch Press, 2007

4) P.E. Ceruzzi, A History of Modern Computing, The MIT Press 2003

5) H. Corporaal, Microprocessor Architectures: From VLIW to TTA, Wiley 1998

6) J. Silc, B. Robic, T Ungerer, Processor Architecture From Dataflow to Superscalar and Beyond, Springer Verlag 1999

7) E. Wróbel, Asembler, Helion 2004

8) G. Syck, Turbo Assembler Biblia użytkownika, LT&P 1996

9) P. Metzger, Anatomia PC, Helion 2001

10) Intel IA-32 Software Developers Manual, August 2007

Page 67: Programowanie na poziomie sprzętowym, x86 + powtórka ASK

Progr. na poziomie sprzętowym - powtórka 67/67

KONIEC

dr inż. Mariusz [email protected]. 107, tel. 449 55 44