Budowa procesora wstep

background image

CPU - wstęp

Marcin Kubiak mkubiak@teb.pl

background image

Liczba tranzystorów w układzie –
firma Intel

24 000 000

Pentium III

1999

42 000 000

Pentium 4

2000

7 500 000

Pentium II

1997

3 100 000

Pentium

1993

1 185 000

80486

1989

29000

8086

1978

6000

8080

1974

2300

4004

1970

LICZBA TRANZYSTORÓW

PROCESOR

ROK

background image

Częstotliwości pracy i
unowocześnienia

Dodatkowe rozkazy MMX

Rozkazy SSE

450

Pentium II

Dodatkowe rozkazy SSE

450-800

Pentium III

Operacje RISC

200

Pentium Pro

Operacje MMX

266

Pentium MMX

Technologia HT

Ponad 3000

Pentium IV

Wew. pamięć cache

44

80486

32 bitowy

12-16

80386

Tryb chroniony (24b)

6-12

80286

Zintegrowane układy
sterujące

6-8

80186

16 bitowy

5-10

8086

8 bitowy

0,2

8008

4 bitowy

0,1

4004

Nowość

Zegar (MHz)

Procesor

background image

Architektura



Architektura = architektura listy rozkazów

Architektura zapewnia kompatybilność lub
ją uniemożliwia.

Systemy kompatybilne to takie, między
którymi możemy przenosić
oprogramowanie bez przekompilowania
kodu.

background image

Koncepcje - CISC

CISC –

Complex Instruction Set Computing

Cechy architektury CISC:

-Duży repertuar rozkazów,

-Różnorodność sposobów adresowania argumentów,

-Wyrafinowane operacje,

-Złożone typy danych.

background image

CISC – przykłady rozkazów

Asembler VAX

4

Obliczanie CRC (bajtu
kontrolnego) w dowolnym
łańcuchu bitów wg zadanego
wielomianu

CRC

6

Tłumaczenie dowolnego
łańcucha znaków wg
zadanego kodu z
wypełnianiem wolnych
bajtów łańcuch docelowego

MOVTC

6

Dodawanie licz dziesiętnych o
zadanych długościach

ADDP6

Liczba parametrów rozkazu

Funkcja

Mnemonik

background image

CISC - podsumowanie

Czasami pojedyncze rozkazy CISC na
maszynach o innej architekturze były
wykonywane przez skomplikowane
programy.
Architektura CISC osiągnęła swoje
apogeum w latach 80.

Przykłady:
- VAX,
-

x86 (wyjątek do dzisiaj, ale za to jaki)

background image

Koncepcje - RISC



RISC – Reduced Instruction Set Computing

CEL – szybkie
wykonywanie
rozkazów

ŚRODKI –
sterowanie
potokowe, pamięć
CACHE, dużo
rejestrów

EFEKT –
prymitywne rozkazy,
stała długość słowa
rozkazowego

KOSZTY –
skomplikowany
kompilator

background image

RISC - podsumowanie



SPARC



MIPS32,



MIPS64,



PowerPC,



Power4

background image



W każdym procesorze można
wyróżnić następujące bloki:

-

Jednostkę arytmetyczno-logiczną
(ALA),

-

Jednostkę rozkazową (IU),

-

Jednostkę wykonawczą (EU),

-

Układ adresujący (AU),

-

Układ sterowania magistralami (BIU).

Podstawowe bloki procesora

background image

ALU



Jednostka arytmetyczno logiczna jest
odpowiedzialna za bezpośrednią
manipulację danymi: dodawanie,
odejmowanie, porównywanie.

background image

AU



Układ adresujący ma za zadanie
wytworzenie na magistrali adresowej
adresu do danych zapisanych w
pamięci

background image

Magistrale



Łączność z pozostałymi elementami

komputera procesor uzyskuje przez
magistrale: adresową, danych i sterującą.



Przez magistralę danych pobierane są dane

do przetworzenia.



Przez magistralę danych pobierane są

rozkazy do wykonania i umieszczane są w
kolejce rozkazów (prefetch queue).



Magistrala sterująca zapewnia zapewnia

zestaw niezbędnych sygnałów

informacyjnych i sterujących otoczeniem

procesora.

background image

EU



Układ wykonawczy dokonuje interpretacji
rozkazów pobieranych z kolejki rozkazów.



Rozkazy mogą dotyczyć zarówno
manipulacji na zawartości rejestrów
wewnętrznych, jak i też komórek pamięci
operacyjnej.



W zależności od rodzaju rozkazu zostają
wydane odpowiednie polecenia do ALU, AU i
magistral.

background image

Schemat blokowy procesora

BIU

AU

PREFETCH

MMU

IU

ROM

CU

ALU

EU

FPU

ADERS

DANE

KONTROLA

I STEROWANIE

DANE

KOD PROGRAMU

background image

LEGENDA

ALU – jednostka arytmetyczno-logiczna (Integer),

IU - jednostka rozkazowa, dekoder operacji,

ROM – pamięć stała przechowująca kody rozkazowe i

odpowiadające im operacje

EU - jednostka wykonawcza (EU),

CU – jednostka kontrolna sterująca ALU

AU - układ adresujący,

BIU - układ sterowania magistralami,

FPU – jednostka zmiennoprzecinkowa,

MMU – jednostka zarządzania pamięcią

background image

REJESTRY



Szybkie komórki wewnętrznej pamięci procesora.

CF – flaga
przeniesienia lub
pożyczki, PF – flaga
parzystości, ZF – flaga
zera, IF- flaga
zezwolenia na
przerwanie i inne.

FLAGS

Statusowe i sterujące

Przechowywanie
adresów segmentów
kodu do wykonania

CS, DS, SS, ES oraz
FS i GS

Segmentowe

Tymczasowe schowki
na dane. AX –
operacje aryt. I
logiczne, BX –
adresowanie pamięci,
CX – licznik w pętlach,
DX – komunikacja z
portami

AX, BX, CX, DX, SI,
DI, SP, BP

Ogólnego
przeznaczenia

Zadania

Nazwy

Typ

background image

Zadanie

1. Sprawdź zastosowanie rejestrów:

-

CS,

-

IP,

-

CF,

-

PF,

-

ZF,

-

SF,

-

OF,

-

DF

2. Sprawdź typ procesora w Twoim komputerze.

3. Znajdź program firmowy Intela i AMD rozpoznający typ

procesora i opisujący jego funkcje i rozszerzenia

(www.cpuid.org).

4. Jak sprawdzić w systemie Linux dane dotyczące wykrytego

procesora?

background image

Maszyny wirtualne

APLIKACJE

JĘZYKI WYSOKIEGO POZIOMU

ASEMBLER

SYSTEM OPERACYJNY

SPRZĘT (CPU)

background image

Model von Neumanna

M

ALU

CC

INPUT

OUTPUT

OTOCZENIE

M- memory, ALU-arithmetic-logic unit, CC-central control

background image

Cykl rozkazowy

Pobranie rozkazu

Wykonanie rozkazu

1. Adres rozkazu jest przesyłany do pamieci,

2. Uruchomiona jest operacja odczytu (opóżnienie pamięci),

3. Słowo rozkazowe jest pobierane do rejestrów procesora,

4. Wykonanie rozkazu (czasami pobranie dodatkowych argumentów, czasami

zapisanie wyników).

Dodatkowe komunikowanie się z pamięcią powoduje opóźnienia. Aby je
zmniejszyć stosuje się ingerencje na poziomie architektury np. pamięć CACHE
lub umieszczanie wszystkich argumentów w rejestrach procesora (RISC).

background image

Modele pamięci operacyjnej

PAMIĘĆ

PROCESOR

CENTRALNY

PAMIĘĆ

DANYCH

PAMIĘĆ

PROGRAMU

PROCESOR

CENTRALNY

DANE I ROZKAZY

DANE

ROZKAZY

Architektura Princeton

Architektura Harvard

Dzisiaj w pamięci operacyjnej dane i rozkazy zajmują ta samą przestrzeń
fizyczną.

Fizyczne oddzielenie danych i rozkazów występuje w pamięci CACHE.

background image

Kod maszynowy



Mikroprocesor wykonując program interpretuje -
tłumaczy rozkazy zapisane w tzw. kodzie

maszynowym zwanym kodem binarnym.

Przykład kodu maszynowego zapisanego w systemie
szesnastkowym:

70 01 00 00 A0 F1 11 00 F5 57 01 01 11 11 00 11
01 DC 10 F0 1A 3C 58 01 DC 10 F0 1A 3C 58 1A
3C 58 01 DC 10 11 01 DC 10 F0 1A 58 01 DC 10
11 01 DC 58 01 DC 10 11 01 DC 58 01 DC 10 11

background image

Języki programowania

Ze względu na małą czytelność tak zapisanego
programu jak również na pracochłonność w tworzeniu
programu, powstało szereg języków programowania
(Pascal, Fortran, Cobol, C, C++, Java) i systemów
programowania opartych o wymienione języki.

System programowania służy do tłumaczenia
programu na kod maszynowy zgodnie z regułami
języka, który obsługuje. Proces ten nazywa się
kompilacją programu.

background image

Języki programowania dzielimy na:



- niskiego poziomu (np. asembler),



- wysokiego poziomu (np. Turbo Pascal, C/C++, Java,
Fortran, Visual Basic, Algol)

W języku niskiego poziomu większość instrukcji odpowiada
pojedynczym rozkazom procesora. Kod zapisany w takim języku jest
mało efektywny pod względem czasu poświęconego na tworzenie
programu. Jest natomiast najszybciej realizowanym kodem
programu w porównaniu do kodu języków wysokiego poziomu.
Programowanie w języku niskiego poziomu służy do pierwotnego
oprogramowania urządzenia, układu jak również do stworzenia
języków wysokiego poziomu. Języki wysokiego poziomu są bardziej
efektywne w tworzeniu programu gdyż używają instrukcji złożonych,
procedur, funkcji (zgrupowanych w bibliotekach) zastępujących kilka
czy nawet kilkanaście instrukcji języka niskiego poziomu.

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



Asembler – programowanie części systemów, które
mają wykonywać się szybko np. jądro systemów
operacyjnych, sterowniki urządzeń

proc main, argc, argv
enter
lea eax, [argc]
lea ebx, [argv]
ccall gtk_init, eax, ebx
ccall gtk_window_new, GTK_WINDOW_TOPLEVEL
mov [hWindow], eax
ccall gtk_widget_show, [hWindow]
call gtk_main

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



C++ - najbardziej uniwersalny język
programowania, kod wynikowy charakteryzuje się

dużą szybkością działania.

#include <iostream.h>
void main()
{

cout << "Podaj Liczbe: ";
int liczba;
cin >> liczba;
cout << endl << "Podales: " << liczba <<

endl;
}

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



Turbo Pascal – łatwy w składni i budowie język
przeznaczony początkowo do nauki programowania. Ze
względu na dużą popularność Pascala powstały
kompilatory czyniące go pełnoprawnym językiem
programowania.

Program test;
Var

a, b : Word;
c : LongInt;

Begin

ReadLn(a, b);
c:= a * b;
c:= c – 1;
c := c * a;
WriteLn(c);

End.

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



Windows Scripting Host – język służący do automatyzacji
zadań i zarządzania systemem Windows. Potrafi współdziałać z
elementami systemu takimi jak: rejestr, zmienne systemowe,
obiekty OLE i COM.

function Include(jsFile)

{
fso = new ActiveXObject
("Scripting.FileSystemObject");
f = fso.OpenTextFile(jsFile);
s = f.ReadAll();
f.Close();
return s;

}

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



Bash – język do automatyzacji zadań i zarządzania
systemem Linux.

#!/bin/bash
echo "Wpisz tekst:"
odpowiedz="napis"
read
echo "$odpowiedz"

background image

Przykłady programów w różnych językach
programowania wraz z zastosowaniem tych języków.



Java – język programowania aplikacji niezależnych od systemu
operacyjnego lub apletów uruchamianych przez strony WWW.

import java.io.*;
public
class Main
{
public static void main(String args[])
{
String line= "";
FileOutputStream fout=null;
File file = new File("test.txt");

try
{
fout = new FileOutputStream(file);
}
catch(FileNotFoundException e)
{
System.out.println("Brak pliku");
System.exit(-1);
}
DataOutputStream out = new DataOutputStream(fout);
BufferedReader inbr = new BufferedReader( new
InputStreamReader(System.in));

try

{

while(!line.equals("quit"))

{

line=inbr.readLine();

fout.writeBytes(line +'\n');

}

}

catch(IOException e)

{

System.out.println("Read/Write error");

}
}

}

background image

Kod wynikowy



System programowania do tłumaczenia programu na kod
maszynowy używa specjalnego programu zwanego
translatorem.

Translatory możemy podzielić na:
interpretery, tłumaczą kolejne linie programu z zawartymi tam
instrukcjami programu i kierują je do wykonania mikroprocesorowi.
Program zapisywany jest przez programistę w pliku tekstowym który
bezpośrednio czyta interpreter. Przykładowymi językami, których kody
są interpretowane są: Windows Scripting Host, Bash (Linux), Java
Script, Pearl (Linux), PHP.
kompilatory, plik tekstowy ze źródłem programu jest tłumaczony na
postać maszynową i działa w środowisku systemu operacyjnego bez
pomocy innych programów np. interpretera. Przykładowymi językami,
których kody są interpretowane są: C, C++, Turbo Pascal, Java.

background image

Tworzenie programu wykonywalnego

background image

Kod źródłowy.

background image

Kod wynikowy

background image

Disassemblacja (dezasemblacja).



Program skompilowany nie może być przywrócony do wersji

w formie kodu źródłowego w języku programowania

wysokiego poziomu (Pascal, C, C++). Dlatego należy dbać

o zapisywanie plików z kodem źródłowy (pliki „pas”).



Jednak program skompilowany można poddać transformacji

do kodu języka niskiego poziomu (asemblera). Do

wykonania disassemblacji potrzebny jest program

dissassemblera.



Oto kilka odnośników do stron internetowych, z których

można pobrać dissasembler:



http://www.technologismiki.com/en/

- Hackman

disassembler dla systemu Windows,



http://www.datarescue.com/index.htm - IDA disassembler

dla systemu Linux.

background image

Przykład kodu asemblera otrzymanego przez
disassemblację.

background image

Selftest

1.

Który z języków programowania jest językiem
niskiego poziomu?

a) Turbo Pascal
b) C++
c) Java
d) Fortran
e) Visual Basic
f) Asembler
g) Algol

background image

Selftest

2. System programowania do tłumaczenia programu na

kod maszynowy używa specjalnego programu
zwanego:

a) translatorem
b) linkerem
c) interpreterem
d) generatorem

background image

Selftest

3. W systemie Windows program po skompilowaniu

może otrzymać rozszerzenie:

a) pst
b) exe
c) pas
d) css
e) com
f)

htm

background image

Selftest

4. Który z poniższych plików może być programem

samowykonującym się w systemie Windows?

a) test.txt,
b) test.exe.bmp,
c) test.vbs,
d) test.com

background image

Selftest

5. Który z poniższych plików może byś programem

samowykonyjącym się w systemie Linux?

a) test.exe,
b) test.vbs,
c) test.sh,
d) test.bmp,
e) wszystkie powyższe.

background image

Selftest

6. Czy programy pisane w Pascalu można kompilować

tylko w środowisku zintegrowanym?

a) tak,
b) nie.

background image

Selftest

7. Jaki kod programu uzyskamy po dezasemblacji

programu wykonywalnego?

a) w języku Pascal,
b) w języku C,
c) w języku Java,
d) w języku Asembler.

background image

Selftest

8. Kto lub co może sprawdzić logiczną poprawności kodu

źródłowego programu?

a) programista,
b) kompilator,
c) linker,
d) dissasembler.

background image

Selftest

9. Zbiór funkcji skompilowany nie jako plik wykonywalny

ale jako biblioteka z rozszerzeniem „tpu” w Pascalu
nosi nazwę:

a) modułu,
b) biblioteki,
c) kolekcji,
d) algorytmu.

background image

Selftest

10. Załóżmy, że w katalogu bieżącym występują pliki

„test.bat”, „test.com” i „test.exe”. Który plik zostanie
wykonany jeżeli wydamy w tym katalogu polecenie
„test” (nie podajemy rozszerzenia)?

a) test.bat,
b) test.com,
c) test.exe.

background image

Selftest



Procesor 80386 jest procesorem?

a)

Firmy Intel,

b)

RISC,

c)

CISC,

d)

Firmy AMD.

background image

Selftest



W pamięci Cache procesora:

a)

Przechowywane są dane do
przetworzenia,

b)

Przechowywane są adresy pamięci,

c)

Przechowywane są rozkazy dla
procesora,

background image

Selftest



Koprocesor to:

a)

Układ wspomagający jednostkę centralną w
obliczeniach arytmetycznych,

b)

Program sprawdzający typ procesora,

c)

Procesor typu RISC,

d)

Procesor bez pamięci CACHE.

background image

Selftest



Szerokość magistrali adresowej mówi
o:

a)

Ilości wolnej pamięci,

b)

Możliwości obsługi różnych typów pamieci,

c)

Potencjalnej możliwości adresowania
pamięci o określonej pojemności

background image

Zadania



Sprawdź angileskie rozwinięcia skrótów:
ALU,IU,EU,AU,BIU,MMU,FPU,ROM.



Skompiluj i uruchom podane przykłady
programów (napisanych w różnych
językach).



Odczytaj edytorem binarnym zawartość
pliku tekstowego: boot.ini i pliku binarnego
ntldr oraz taskmgr.exe


Wyszukiwarka

Podobne podstrony:
procesory wstep
Budowa procesora (2)
procesory wstep 4
Budowa procesorów
kubica,biofizyka, błona komórkowa budowa i procesy
procesory wstep
Budowa i proces replikacji
ITIL Podstawy W2 Budowa i optymalizacja procesów i serwisów ITIL
1 Wstęp budowa ziemi ATMOSFERA
Ciężarna dziewica - 0. Żabie spójniki - Wstęp, Ciężarna dziewica Proces psychologicznej przemiany
Budowa pojazdów samochodowych -Proces spalania w silniku o zapłonie samoczynnym semestr 1, Motoryzac
Budowa pojazdów samochodowych Proces spalania w silniku o zapłonie samoczynnym semestr 1 (2)
zarz procesami planowanie, stud, I semsetr, WSTEP DO PROGRAMOWANIA, WDI
Wstęp teoretyczny rosiak 3, Mechanika i budowa maszyn SK2, Materiały konstrukcyjne
Budowa i zasada działania Procesora Wielordzeniowego
Proces budowania więzi, partnerstwo

więcej podobnych podstron