ÚVOD DO SVĚTA POČÍTAČŮ kunovsky@dcse.fee.vutbr.cz www.fee.vutbr.cz/~kunovsky
Zpracování dat zpracování nenumerických dat zpracování numerických dat
Zpracování nenumerických dat Zpracování textu Textová data Textový editor Čtyři základní fáze pořizování dokumentu: základní práce s dokumentem editace dokumentu formátování dokumentu tisk dokumentu
Zpracování numerických dat Přesnost zobrazení reálných čísel Přesnost výpočtu Složitost výpočtu
Metodika sériového a paralelního výpočtu Na příkladu řešení soustavy rovnic se prezentuje seriový postup výpočtu (Cramerovým pravidlem) a paralelní postup výpočtu (vytvoří se paralelní model - všechny jednotky pracují současně). Paralelní systémy jsou charakteristické zpětnou vazbou.
Mějme následující soustavu rovnic: ax + by = c dx + ey = f
Sériový výpočet A1 := c * e; A2 := b * f; A3 := A1 – A2; A4 := a * e; A5 := b * d; A6 := A4 – A5; A7 := A3 / A6; .
SISD computer IS IS DS CU PU MM CU: control unit PU: processor unit MM: memory module IS: instruction stream DS: data stream
Struktura počítače a funkce jeho základních částí Definují se pojmy procesor, řadič (zajišťuje automatické řízení celého systému podle programu zapsaného v paměti), aritmeticko-logická jednotka (provádí aritmetické a logické operace), paměť (uchovává informace, v případě potřeby jejich výběr, případně ukládání nových informací. Údaj ukládaný do paměti je zakódován do binární podoby.) a periferie (V/V zařízení, vnější paměti, ovládací zařízení, prostředky pro přenos dat).
ax + by = c dx + ey = f Paralelní výpočet
b y *
b c y * –
b c a y x * – :
b c a y x * – : x * d
b c a y x * – : x * – d f
b c a y x * – : x y * – : d f e
b c a y x * – : x y * – : d f e
b0z p2y -a1py + -a0y
p2y py
py y
b0z p2y p2y py py y -a1py + -a0y
b0z p2y py y -a1py + -a0y -a1 -a0
SIMD computer DS1 PU1 MM1 DS2 PU2 MM2 IS CU SM DSn PUn MMm IS
MIMD computer IS1 IS1 IS1 DS1 IS2 CU1 PU1 MM1 IS2 IS2 DS2 CU2 PU2 MM2 SM ISn ISn ISn DSn CUn PUn MMm IS
Matematické stroje Provádí se rozdělení na analogové počítače (matematický děj se modeluje analogickým dějem fyzikálním) a na číslicové počítače (čísla se zobrazují pozičně, jako konečné posloupnosti cifer).
Historický vývoj výpočetní techniky před 5000 lety tabulkový systém abakus 1642 - Francouz Bleise Pascal - sčítací stroj 1694 - Němec Wilhelm Leibnitz - sčítací a násobící stroj 1833 - Angličan Charles Babbage - Analytical Engine první mechanický samočinný počítač. Paměť a řízení podle daného programu 1855 - kalkulátory pro vykonávání základních aritmetických úkonů
1937 - Američan Howard Hathaway Aiken se znovu vyslovil 1937 - Američan Howard Hathaway Aiken se znovu vyslovil o automatizovánívýpočtů podle dopředu sestaveného programu. 1938 - Angličan Alan Mathisom Turing matematicky zdůvodnil možnost zkonstruovat univerzální samočinný počítač. 1941 - Němec Zuse - počítač Z3. 1944 - IBM (International Business Machines Corporation) – reléový počítač MARK-1 (elektromechanické relé). 1946 - ENIAC - elektronkový. 1945 - John von Neumann, program i data ve vnitřní paměti počítače.
Generace počítačů Dělení se provádí podle konstrukční, technické úrovně. Každá vyšší generace znamená pokrok v součástkové základně zvýšení operační rychlosti snížení příkonu zlepšení programového vybavení zlepšení formy styku počítače s člověkem Jsou specifikovány reléové, elektronkové, tranzistorové počítače, počítače s integrovanými obvody a počítače s velmi vysokým stupněm integrace.
Proudové (zřetězené) a neproudové zpracování
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
S1 S2 S3 S4 IF ID OF EX
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7
EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 EX . . . OF ID IF 1 2 3 4 5 6 7
Proudové zpracování Doba zpracování = n + k – 1 n … sekcí k … úloh EX . . . OF ID IF 1 2 3 4 5 6 7 Doba zpracování = n + k – 1 n … sekcí k … úloh
Neproudové zpracování EX . . . OF ID IF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Doba zpracování = n * k n … sekcí k … úloh
Součinitel zvýšení propustnosti k >> n
Číselné soustavy Obecně lze libovolné celé kladné číslo zapsat polynomem an zn + an-1 zn-1 + … + a0 z0 , kde z je libovolné přirozené číslo větší než 1, tzv. základ soustavy, a koeficienty ai jsou přirozená čísla, tzv. číslice soustavy, splňující nerovnost 0 ai z. Při zápisu čísla se obvykle používá zkrácený zápis (anan-1 … a0)z, resp. anan-1 … a0, pokud nemůže dojít k pochybnosti, v jaké soustavě je číslo vyjádřeno.
Desítková (dekadická) soustava jejím základem je číslo deset (z = 10) používá deset číslic (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) v běžném životě nejpoužívanější čísla vyjadřujeme v jednotkách (100), desítkách (101), stovkách (102), tisících (103) atd.
Desítková (dekadická) soustava Např. číslo 6307 můžeme vyjádřit jako: 6 3 0 7 6 tisíc + 3 sta + 0 desítek + 7 jednotek 6 1000 + 3 100 + 0 10 + 7 1 6 103 + 3 102 + 0 101 + 7 100 = 6307, tedy a3 z3 + a2 z2 + a1 z1 + a0 z0, kde z = 10 (základ), a0 = 7, a1 = 0, a2 = 3, a3 = 6, a4, a5, a6, … = 0 (číslice)
Dvojková (binární) soustava jejím základem je číslo dvě (z = 2) používá dvě číslice (0, 1) v oblasti výpočetní techniky nejpoužívanější
desítkové číslo 11 můžeme vyjádřit jako dvojkové číslo 1011: 1 23 + 0 22 + 1 21 + 1 20 1 8 + 0 4 + 1 2 + 1 1 = 11 … dekadicky pokud by mohlo dojít k nejasnostem, v jaké soustavě je dané číslo zapsáno, používá se forma zápisu (1011)2 = (11)10, což čteme jako „dvojkové (binární) číslo jedna nula jedna jedna je rovno desítkovému (dekadickému) číslu jedenáct“.
Převody mezi číselnými soustavami Příklad: Převeďte číslo 10 z desítkové soustavy do dvojkové. Požadované desítkové číslo postupně dělíme dvěma, zapíšeme zbytek a každý výsledek opět dělíme dvěma, až dostaneme nulový podíl. První číslicí ve dvojkové soustavě bude zbytek získaný posledním dělením. výsledek po dělení 2 zbytek 10 : 2 = 5 5 : 2 = 2 1 2 : 2 = 1 1 : 2 = 0 (10)10 = (1010)2
Převody mezi číselnými soustavami Příklad: Převeďte dvojkové číslo 101110 do desítkové soustavy. Dvojkové číslo 101110 můžeme zapsat jako 1 25 + 0 24 + 1 23 + 1 22 + 1 21 + 0 20 1 32 + 0 16 + 1 8 + 1 4 + 1 2 + 0 1 = 46 (101110)2 = (46)10
(586)10 = (1001001010)2 Převod celého čísla (před desetinnou čárkou) výsledek po dělení 2 zbytek 586 : 2 = 293 293 : 2 = 146 1 146 : 2 = 73 73 : 2 = 36 36 : 2 = 18 18 : 2 = 9 9 : 2 = 4 4 : 2 = 2 2 : 2 = 1 1 : 2 = 0 (586)10 = (1001001010)2
Převod desetinného čísla (za desetinnou čárkou) 248 x 2 496 992 1 984 968 936 872 744 488 976 952 (0.248)10 = (0.0011111101)2
(586.248)10 = (1001001010.0011111101)2 29 + 26 + 21 + 2-3 + 2-4 + 2-5 + 2-6 + 2-7 + 2-8 + 2-10 = = 586.24707
Realizace převodu záporných čísel Př. (58.625)10 = (000111010.1010000)2PŘ = . . . 2INV = . . . 2DOP (100111010.1010000)2TRN (–58.625)10 = (100111010.1010000)2PŘ (111000101.0101111)2INV (111000101.0110000)2DOP (011000101.0110000)2TRN Informaci o znaménku nese nejvyšší bit – bit znaménka
Př. máme 8-bitové zobrazení (n = 4, m = 4) a) 3.625 0 011.1010 Nejčastěji se užívá kód doplňkový – lze sečítat libovolná kladná nebo záporná čísla, případný přenos ze znaménkového bitu se zanedbává. Př. máme 8-bitové zobrazení (n = 4, m = 4) a) 3.625 0 011.1010 2.125 0 010.0010 5.750 0 101.1100 nedošlo k žádnému přenosu, výsledek je správný
b) 2.125 0 010.0010 – 3.625 1 100.0110 – 1.500 1 110.1000 nedošlo k žádnému přenosu, výsledek je správný c) 3.625 0 011.1010 – 2.125 1 101.1110 1.500 1 0 001.1000 došlo k oběma přenosům, výsledek je správný
d) – 2.125 1 101.1110 – 3.625 1 100.0110 – 5.750 1 1 010.0100 došlo k oběma přenosům, výsledek je správný e) 3.625 0 011.1010 5.750 0 101.1100 9.375 1 001.0110 došlo pouze k jednomu přenosu, výsledek je chybný
10011 x 01101 10011 00000 0011110111
Logický součin & & 1 1 1 & & 1 1
Aritmetický součet S CO CI A B
1 Nulování akumulátoru ACC 1 0 0 1 1 SUM ACC 1 0 0 1 1 1 0 0 1 1 SUM ACC 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 & & & & & SBO 1 0 0 1 1 0 1 1 0 1 Nulování akumulátoru ACC
2 SUM ACC 1 0 0 1 1 0 0 0 0 0 & & & & & SBO Zápis do akumulátoru ACC
3 Posuv ACC vpravo Posuv násobitele vpravo 0 1 0 0 1 SUM ACC 0 0 0 0 0 0 1 0 0 1 SUM ACC 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 & & & & & SBO Posuv ACC vpravo Posuv násobitele vpravo 0 0 1 1 0
4 SUM ACC 0 1 0 0 1 1 0 0 0 0 & & & & & SBO Zápis do ACC
5 Posuv ACC vpravo Posuv násobitele vpravo 1 0 1 1 1 SUM ACC 1 0 0 1 1 1 0 1 1 1 SUM ACC 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 & & & & & SBO 1 0 0 1 1 Posuv ACC vpravo Posuv násobitele vpravo 0 0 0 1 1
6 SUM ACC 1 0 1 1 1 1 1 0 0 0 & & & & & SBO Zápis do ACC
7 Posuv ACC vpravo Posuv násobitele vpravo 1 1 1 1 0 SUM ACC 1 0 0 1 1 1 1 1 1 0 SUM ACC 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 & & & & & SBO 1 0 0 1 1 Posuv ACC vpravo Posuv násobitele vpravo 0 0 0 0 1
8 SUM ACC 1 1 1 1 0 1 1 1 0 0 & & & & & SBO Zápis do ACC
9 Posuv ACC vpravo Posuv násobitele vpravo 0 1 1 1 1 SUM ACC 0 0 0 0 0 0 1 1 1 1 SUM ACC 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 & & & & & SBO Posuv ACC vpravo Posuv násobitele vpravo 0 0 0 0 0
10 SUM ACC 0 1 1 1 1 0 1 1 1 0 & & & & & SBO Zápis do ACC
11 Posuv ACC vpravo Posuv násobitele vpravo SUM ACC 0 0 1 1 1 1 0 1 1 1 & & & & & SBO Posuv ACC vpravo Posuv násobitele vpravo
12 Zápis do ACC SUM ACC 0 0 1 1 1 1 0 1 1 1 & & & & & SBO 0 0 1 1 1 1 0 1 1 1 & & & & & SBO Zápis do ACC 10011 x 01101 10011 00000 0011110111
Dělení
Dělení
Příklad
Zobrazení v pohyblivé řádové čárce číslo = (mantisa) * 2exponent
Příklad Slovo má 1+32 bitů. Zobrazte reálné číslo: –145,625 v přímém kódu znaménko čísla ve znaménkovém bitu mantisa v horních 24 bitech exponent v nejnižších 8 bitech, nejvyšší z nich obsahuje znaménko exponentu
1) převedeme do dvojkové soustavy (145,625)10 = (10010001,101)2 2) posuneme řádovou čárku před nejvyšší bit a vynásobíme příslušnou mocninou základu 2 x = 0,10010001101 * 28 3) připojíme znaménko -145,625 = 1,10010001101000000000000000001000