CPU - wstęp
Marcin Kubiak mkubiak@teb.pl
Liczba tranzystorów w układzie
firma Intel
ROK PROCESOR LICZBA TRANZYSTORÓW
1970 4004 2300
1974 8080 6000
1978 8086 29000
1989 80486 1 185 000
1993 Pentium 3 100 000
1997 Pentium II 7 500 000
1999 Pentium III 24 000 000
2000 Pentium 4 42 000 000
Częstotliwości pracy i
unowocześnienia
Procesor Zegar (MHz) Nowość
4004 0,1 4 bitowy
8008 0,2 8 bitowy
8086 5-10 16 bitowy
80186 6-8 Zintegrowane układy
sterujące
80286 6-12 Tryb chroniony (24b)
80386 12-16 32 bitowy
80486 44 Wew. pamięć cache
Pentium Pro 200 Operacje RISC
Pentium MMX 266 Operacje MMX
Pentium II 450 Dodatkowe rozkazy MMX
Rozkazy SSE
Pentium III 450-800 Dodatkowe rozkazy SSE
Pentium IV Ponad 3000 Technologia HT
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.
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.
CISC przykłady rozkazów
Asembler VAX
Mnemonik Funkcja Liczba parametrów rozkazu
ADDP6 Dodawanie licz dziesiętnych o 6
zadanych długościach
MOVTC Tłumaczenie dowolnego 6
łańcucha znaków wg
zadanego kodu z
wypełnianiem wolnych
bajtów łańcuch docelowego
CRC Obliczanie CRC (bajtu 4
kontrolnego) w dowolnym
łańcuchu bitów wg zadanego
wielomianu
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)
Koncepcje - RISC
RISC Reduced Instruction Set Computing
CEL szybkie ŚRODKI
wykonywanie sterowanie
rozkazów potokowe, pamięć
CACHE, dużo
rejestrów
EFEKT
prymitywne rozkazy,
stała długość słowa
rozkazowego
KOSZTY
skomplikowany
kompilator
RISC - podsumowanie
SPARC
MIPS32,
MIPS64,
PowerPC,
Power4
Podstawowe bloki procesora
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).
ALU
Jednostka arytmetyczno logiczna jest
odpowiedzialna za bezpośrednią
manipulację danymi: dodawanie,
odejmowanie, porównywanie.
AU
Układ adresujący ma za zadanie
wytworzenie na magistrali adresowej
adresu do danych zapisanych w
pamięci
Magistrale
Aą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.
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.
Schemat blokowy procesora
KOD PROGRAMU
PREFETCH
ADERS
AU
DANE IU ROM
BIU
MMU
KONTROLA
ALU CU EU
FPU
I STEROWANIE
DANE
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ą
REJESTRY
Szybkie komórki wewnętrznej pamięci procesora.
Typ Nazwy Zadania
Ogólnego AX, BX, CX, DX, SI, Tymczasowe schowki
przeznaczenia DI, SP, BP na dane. AX
operacje aryt. I
logiczne, BX
adresowanie pamięci,
CX licznik w pętlach,
DX komunikacja z
portami
Segmentowe CS, DS, SS, ES oraz Przechowywanie
FS i GS adresów segmentów
kodu do wykonania
Statusowe i sterujące FLAGS CF flaga
przeniesienia lub
pożyczki, PF flaga
parzystości, ZF flaga
zera, IF- flaga
zezwolenia na
przerwanie i inne.
Zadanie
1. Sprawdz zastosowanie rejestrów:
- CS,
- IP,
- CF,
- PF,
- ZF,
- SF,
- OF,
- DF
2. Sprawdz typ procesora w Twoim komputerze.
3. Znajdz 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?
Maszyny wirtualne
APLIKACJE
JZYKI WYSOKIEGO POZIOMU
ASEMBLER
SYSTEM OPERACYJNY
SPRZT (CPU)
Model von Neumanna
ALU
INPUT
M
OTOCZENIE
OUTPUT
CC
M- memory, ALU-arithmetic-logic unit, CC-central control
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óznienia. Aby je
zmniejszyć stosuje się ingerencje na poziomie architektury np. pamięć CACHE
lub umieszczanie wszystkich argumentów w rejestrach procesora (RISC).
Modele pamięci operacyjnej
PAMIĆ
DANE
DANYCH
DANE I ROZKAZY
PROCESOR PROCESOR
PAMIĆ
CENTRALNY CENTRALNY
ROZKAZY
PAMIĆ
PROGRAMU
Architektura Harvard
Architektura Princeton
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.
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
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.
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.
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
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
void main()
{
cout << "Podaj Liczbe: ";
int liczba;
cin >> liczba;
cout << endl << "Podales: " << liczba <<
endl;
}
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.
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;
}
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"
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.
try
import java.io.*;
{
public
class Main
while(!line.equals("quit"))
{
public static void main(String args[])
{
{
String line= "";
line=inbr.readLine();
FileOutputStream fout=null;
File file = new File("test.txt");
fout.writeBytes(line +'\n');
try
}
{
}
fout = new FileOutputStream(file);
}
catch(IOException e)
catch(FileNotFoundException e)
{
{
System.out.println("Brak pliku");
System.out.println("Read/Write error");
System.exit(-1);
}
}
}
DataOutputStream out = new DataOutputStream(fout);
BufferedReader inbr = new BufferedReader( new
}
InputStreamReader(System.in));
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 zró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.
Tworzenie programu wykonywalnego
Kod zródłowy.
Kod wynikowy
Disassemblacja (dezasemblacja).
Program skompilowany nie może być przywrócony do wersji
w formie kodu zródłowego w języku programowania
wysokiego poziomu (Pascal, C, C++). Dlatego należy dbać
o zapisywanie plików z kodem zró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.
Przykład kodu asemblera otrzymanego przez
disassemblację.
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
Selftest
2. System programowania do tłumaczenia programu na
kod maszynowy używa specjalnego programu
zwanego:
a) translatorem
b) linkerem
c) interpreterem
d) generatorem
Selftest
3. W systemie Windows program po skompilowaniu
może otrzymać rozszerzenie:
a) pst
b) exe
c) pas
d) css
e) com
f) htm
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
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.
Selftest
6. Czy programy pisane w Pascalu można kompilować
tylko w środowisku zintegrowanym?
a) tak,
b) nie.
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.
Selftest
8. Kto lub co może sprawdzić logiczną poprawności kodu
zródłowego programu?
a) programista,
b) kompilator,
c) linker,
d) dissasembler.
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.
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.
Selftest
Procesor 80386 jest procesorem?
a) Firmy Intel,
b) RISC,
c) CISC,
d) Firmy AMD.
Selftest
W pamięci Cache procesora:
a) Przechowywane są dane do
przetworzenia,
b) Przechowywane są adresy pamięci,
c) Przechowywane są rozkazy dla
procesora,
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.
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
Zadania
Sprawdz 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:
SiMR stud 15 Budowa Procesora
Biblia Wstęp dzieje, budowa i interpretacja
Proces budowania tożsamości przez osoby niepełnosprawne
ITIL Podstawy W2 Budowa i optymalizacja procesów i serwisów ITIL
Budowa PCB Procesor
budowa lunety?lowniczej
procesy
Wyświetlacz MMI z 6 kanałowym procesorem dźwięku (9VD)
Budowa robotow dla poczatkujacych budrob
Makroskopowa budowa mięśnia
el wstep
Budowanie wizerunku firmy poprzez architekturę
więcej podobnych podstron