Professional Documents
Culture Documents
Zkladn pojmy
-
1bit
1 slabika = 1B = 8 bit
1 slovo = word = nkolik slabik (2,4,8) typicky 4
1 KB = 210 slabik = 1024 B
1 MB = 220 = 1 048 576 B
1 GB = 230 = 1 073 741 824 B
4 GB = 232
dl pak TB (tera), PB (peta), EB (exa), ZB (zetta), YB (yotta)
Von Neumann
-
z hlediska VS
pam, ALJ, adi, V/V zazen
ve je binrn
pamti maj sv adresy
ke zmn poad instrukc slou podmnn a nepodmnn skoky
zpracovn dat je samoinn
seln soustavy
-
polyadick
o
zhutn zpis 123 = 1*102 + 2*101 + 3*100 (rozvinut zpis)
zbytkovch td
pevod z 10 do 2
o
cel sla - dlen dvma zapisuju zbytky pod sebe pot obrcen pepu (slide 18)
o
desetinn sla nsoben dvma nap. 0.2 => 0.4 => 0.8 => 1.6 (0.6*2) => 1.2 (0.2*2) => 0.4 => 0.8 (zacyklilo
se) proto bude vsledek 0.0011 periodickch
pevod z 2 do 10
o
10.01 = 1*21+1*2-2 = 2,25
Pm kd
se znamnkovm, bez znamnkovho bitu, problm dvou nul
Inverzn
inverze vech bit, problm dvou nul zstv
Doplkov kd
inverze bit, piten 1, odstrann problm dvou nul, nesymetrick rozsah
se znamnkovm bitem se pot jako s ktermkoliv jinm
penos ze znamnkovho bitu se ignoruje
pevod zpt => inverze bit +1
Aritmetika
-
7134610 = 71346C16
Vnj kdy
-
ASCII ISO-7
-
ISO-8859-2 = ISO-LATIN-2
-
Windows-1250
-
UNICODE
-
UTF-8
-
Nejpouvanj
Pokud je znak v UTF-7 sta pro zpis 1 bajt
esk znaky jsou vdy ve 2 bajtech
Pevod do UNICODE
-
napklad psmeno
Detekn kdy
-
zavedena nadbytenost
Parita
Kd 2 z 5ti
-
Opravn kdy
Ztrojen
-
Boolova algebra
-
Zpsoby popis
-
Pravdivostn tabulka
Matematick
Vennovy diagramy
Matematickmi vrazy
Vyuitm jednotkov krychle
Karnaughova mapa normalizace Vennova diagramu
Vyuit Booleho
-
Spnac kontakt
Rozpnac kontakt
Pepnac kontakt
Zapojen kontakt
-
Sriov
Paraleln
Srioparaleln
Mstkov
Matematickmi vzorci
Vyuit jednotkov krychle
Karnaquova mapa (viz. druhk s pedrem)
Sheffrova algebra
-
Piercova algebra
-
Signly
-
Technologie TTL
-
tranzistor NPN
napjen 5V
low 0,4 0,8V
high 2 2,4V
Logick obvody
-
Multiplexor 4 datov vstupy, dva vstupy, podle adresy na vstupu se piad hodnoty adresy na vstupu
Dekodr dva vstupy, podle hodnot na vstupu se odele hodnota 1 do jednoho ze 4 vstup
Staky
Staka MODULO
-
Polostaka
-
pln staka
-
ti vstupy (dv sla, penos do vyho du), dva vstupy (souet a penos do vyho du)
Vcemstn staka
-
Klopn obvod RS
-
jednobitov pam
datov a dc vstup (impuls pokud chceme peklopit hodnotu)
pokud nen impuls tak si pam dr svj stav
realizace - pomoc klopnho obvodu RS se zapojenm negace
Klopn obvod JK
-
sriov za sebou, mus se dohodnout penosov rychlost (jak dlouho bude trvat penos jednoho bitu), synchronn penos
(spolen zdroj taktu), asynchronn (vyslajc si sm uruje kde chce vyslat data)
paraleln pouv se uvnit potae (sbrnice), vtinou s vyuitm paralelnch registr (zapojen 1 bit pamt pi penosu dat)
o
o
o
jakmile vce cifern tak musm opt zapsat kadou slici zvl do BCD kdu
2 cifern napklad 12 = 11002 = 1!0010BCD vlastn postup k slu v BCD kdu pitu 6 (1100+0110=10010)
pitm 6 pokud je penos == 1 nebo pokud jsou dva nejvy bity == 1 a nebo je nejvy (S 3) a tet nejvy
len (S1) == 1
1279
5 4 3 BCD souet
17BC
+ 6 korekce jednotek
17C2
6 korekce destek
1822
+0
stovky, tisce bez korekce
1 8 2 2 vsledek
Sriov staka
-
st dva stance, jak vstup je hodnota a penos do vyho du (staka) kde se penos z vyho du pedv znovu na
vlez
cel tento systm mus bt synchronizovan jinak by to dlalo <>viny
zapojen pouze jedn pln staky a klopnho obvodu D
provede se vpoet, odebere souet a penos do vyho du se na chvli zapamatuje v obvodu D a pot spolu s dalmi sly
sete
stda registr do kterho se postupn std vsledek vpotu, napklad pi stn ady sel
ta
-
Nsobiky
-
Rotace bit
-
doleva
doprava
informace se neztrc, bity pouze rotuj ve smru
Aritmetick posun
-
Pamti
Druhy:
-
vnj (HDD)
vnitn (RAM)
registry
Dleit parametry:
-
statick, dynamick (dynamick pam udr svou pam pouze uritou dobu (nap. kondenztor), mus se obnovovat, refreshovat)
spolehlivost poruchovost (v hodinch, v bitech)
Pojmy:
-
DIMM (Double Inline Memory Module) oboustrann modul, piny na obou stranch pamovho ipu, opakem je star SIMM
(Single )
DRAM (Dynamic Random Access Memory) dynamick pamt, refreshovn
SDRAM (Synchronous DRAM) synchronizace taktu pamti se sbrnic
DDR (Double data rate) data tena jak na vzestupn tak na sestupn hran signlu
ECC (Error checking and correction) nalezen a oprava chyby pi ten
CL (Column Latency) pomr mezi vnitnm a vnjm asovnm pamti
Registered v pamti navc registry, pouvan na serverech
Vnitn pam
-
Feritov pamti
-
archaick typ
destruktivn ten po ten bylo nutn zpis obnovit
Permanentn pamti
-
Asociativn pam
-
Procesor
-
Fze procesoru
-
Vbr instrukce
-
Procesor 8080
-
8bitov
Zapojen
-
Instrukce
LDA (Load a Direct)
napln registr A obsahem slabiky z pamti
obsahuje operan znak (3Ah) a 16bitov adresa pamti rozdlen na dv 8bitov (ni a vy adresa slabiky)
Pklady X:=Y
-
Intern registry
IR (Instruction registr)
instrukn registr (8 bit)
napojen na adi, z pamti se vezme operan znak a vlo se do operanho registru, tm zane vpoetn proces
DR (Data registr)
datov registr (8 bit)
registr na sbrnici napojen na operan pam
registr pro ten/zpis z/do pamti
pokud chci uloit nebo pest do pamti tak zapisuji (tu) pes tento registr
AR (Adress registr)
adresov registr (8bit)
adresa pro ten/zpis do pamti
TA (Temporary Adress)
skld se ze dvou 8bitovch registr =>16 bitov registr
8 bit TA high + 8bit TA low = TA
WR na procesoru
-
Dal registry
-
B, C, D, E, H, L 8bitov
Dal instrukce
MOV
pesunut mezi registry
MOV R1, R2 (r1, r2 je libovoln z registr A, B, C, D, E, H, L)
Kdovn ve v 1 slabice, kombinace registr pro pesun je ji v operanm znaku
fze MOV
o
PC -> AR, 0 -> WR, DR -> IR vbr operanho znaku
o
R1 -> R2 proveden operace
o
PC+1 -> PC posun na dal instrukci
INR (increment register)
increment, zven +1
fze INR
o
PC -> AR, 0 -> WR, DR -> IR vbr operanho znaku
o
R + 1 -> R proveden naven
o
PC + 1 -> PC posun na dal instrukci
ADD (Add register to A)
piten k registru A
fze ADD
o
PC -> AR, 0 -> WR, DR -> IR vbr operanho znaku
o
A + R -> A naven A o hodnotu R
o
PC + 1 -> PC dal instrukce
CMA (komplement A)
inverze vech bit
fze CMA
o
PC -> AR, 0 -> WR, DR -> IR vbr operanho znaku
o
/A-> A inverze
o
PC + 1 -> PC dal instrukce
Pznakov registr F
-
Pznaky
-
nastaven pznak
fze CMP
o
PC -> AR, 0 -> WR, DR -> IR vbr operanho znaku
o
A r nastaven pznak (pznaky se nastav i kdy nen vsledek nikam uloen)
o
PC + 1 => PC dal instrukce
Podmnn skok
-
TA -> PC
o
Else
PC+3 => PC
o
Fi
Instrukce podmnnho skoku
o
JC
CY = 1
o
JNC CY = 0
o
JZ .
Z=1
o
JNZ Z = 0
o
JP .
S=0
o
JM .
S=1
Pklady
o
X 100h
o
Y 101h
X:= X+Y
X:= X-Y
MOV B, A do B za A
CMA inverze registru A (umme jen stat, odetn = pitn opan hodnoty)
JZ ANO podmnn skok pokud pznak Z (zero) je 1 => pokud X = Y tak jejich rozdl bude
0 => Zero 1
ANO: ..
VEN: .
ANO: .
VEN: .
If X<=Y then ANO else NE;
ANO:
VEN:
If I>=X do BLOK;
KONEC:
For i:=1 to X do Blok;
0FFh: 1
100h: X
102h: i
CYKLUS:
o
MOV B,A do registru B pesune A (i)
o
LDA 100h nate X do A
o
CMP B porovn A-B (X-i)
o
JM KONEC pokud S=1 tak sko na konec
JMP CYKLUS
KONEC
Zsobnk
-
Instrukce nepmho
-
Zavolme instrukci LDAX s parametrem 100h, na adrese 100h vak je dal adresa (tentokrt teba 200h) => musme pest jet
adresu 200h kde je hodnota => LDAX je ti podle adresy 100h
LDAX, STAX, JMPX
Nov registr TAX = TAXl + TAXh
voln funkce ukldalo nvratovou adresu na nejvy adresu
JMPX instrukce nepodmnnho skoku nepmo (nelze pout JMP protoe by procesor hledal na nvratov adrese instrukci my tam
ale mme adresu), JMPX 200h k sko podle adresy 200h tzn. procesor sko a zane provdt a podle adresy uloen na adrese
200h
Nefunguje zde rekurze, protoe pokud zavolme znova funkci CALL tak se znovu ulo nvratov adresa na nejvy adresu =>
pepeme si hodnotu minulho nvratu
Vstup/vstupn operace
-
instrukce
o
OUT zape obsah registru a na V/V sbrnici
o
IN pete obsah V/V sbrnice do registru a
o
START zahj V/V operaci
o
FLAG adresa skok na adresu, nen-li operace jet hotova
prbh vstup/vstupn operace
o
po sbrnici procesor pole data do v/v zazen
o
pole instrukci start (pro zahjen operace)
o
v/v zazen provede operaci a pole e je hotovo (FLAG)
penos do vstupnho zazen
o
1002h LDA 100h
o
1003h OUT pole data na sbrnici
o
1004h START zahjen
o
1005h FLAG 1005h flag ske sm na sebe dokud zazen nepole e to provedlo
penos z vstupnho zazen
1000h START
1001h FLAG 1001h
1004h IN
1005h STA 100h
time-out as kter jsem ochotn ekat na v/v zazen po tomto ase se ekn ukon
Multiprogramov zpracovn
-
zkladn pojmy
Signl RESET
-
Virtuln pam
16 bitov
1978 1982
zkladn procesor ady x86
frekvence max. 10 MHz
8088 16bitov, pro 8bitov prosted (tlak trhu)
Zapojen prosesor
-
Zpracovn dat
-
Adresace pamti
-
zsobnk v pamti
o
instrukce POP, PUSH mn pouze offset, segment zstv, zsobnk proto neme vytct protoe vdy zstane v 64 KB
Registry
veobecn registry voln pouit
SP stach pointer (vrchol zsobnku)
BP base pointer (adresa bze zatku zsobnku)
SI source index (indexovn)
DI destination index
DX Data (skld se ze dvou - Dl, Dh)
CX Counter (skld se ze dvou - Cl, Ch)
BX Base (skld se ze dvou Bl, Bh)
AX Acumulator (skld se ze dvou Al, Ah)
segmentov registry
viz. o kousek ve
dc registry registry pznak
IP instruction pointer
F flags
Implicitn piazen segmentovch registr k registrm
SP -> SS
BP -> SS
BX -> DS
SI -> DS
DI -> DS (ppadn ES)
BP v kombinaci s SI, DI -> SS
BX v kombinaci s SI, DI -> DS
explicitn piazen
nap. MOV AH,CS:[BX] -> nepm adresa CS:BX
pznakov registry
CF (Carry Flag) obsahuje penos z nejvyho bitu
PF (Parity Flag) nastav se na jedniku, pokud doln osmice bit vsledku prv proveden operace obsahuje sud poet 1 (sud
parita vsledku)
AF (Auxilary Flag) rozen CF, penos na plbajtu
ZF (Zero Flag) pznak nulovosti
SF (Sign Flag) kopie znamnkovho bitu operace
OF (Over Flag) pi peteen (pokud vsledek spad mimo rozsah zobrazen)
TF (Trap Flag) nenastavuje procesor, ale programtor, definuje se tm chovn procesoru zde je to po kad instrukci dojde
k peruen (vhodn pro krokovn algoritmu)
IF (Interrupt Flag) pokud je nula tak brn nemaskovanm peruenm (signl INTR)
DF (Direction Flag) d smr zpracovn etzcovch operac (zepedu / zezadu)
Zsobnk
Peruen
procesor m vlastn (intern) oslovn peruen (celkem 256 rznch rozliitelnch peruen), u kadho eviduje adresu kam pedat
zen v ppad e peruen nastane
tyto vci jsou uloeny na nejvych adresch (0:0000) vdy po 4 bajtech => dal 0:0004
vnj pchz pes signl interrupt (INTR) nebo pes nemaskovateln peruen (NMI), do nemaskovatelnho peruen se ukld
napklad peruen kvli chyb dat z pamti (chyb pi ten)
vnitn chyby kter vznikaj pi bhu programu (napklad pokus o dlen nulou)
rutiny obsluhujc peruen jsou uloeny na nejvych adresch
akce pi peruen
do zsobnku se ulo registr pznak F
vynuluj se pznaky IF, TF (zkazno peruen)
do zsobnku se ulo registr CS
registr CS se napln obsahem adresy n * 4 + 2 (adresa na kterou se m pedat zen)
do zsobnku se ulo registr IP
registr IP se napln obsahem adresy n * 4 (pejde se na provdn adresy kam bylo pedno zen
nvrat do peruenho procesu
pomoc funkce IRET
ze zsobnku se obnov registry IP, CS, F
rezervovan peruen
pi signlu peruen se zrove s peruovacm signlem pivede slo peruen
pokud dojde k peruen, adresa CS:IP ukazuje na instrukci kter jej vyvolala (u 80286 a vych se ukazuje NA instrukci kter jej
vyvolala)
0 dlen nulou
1 krokovac reim
2 - NMI (nemaskovan peruen), nap. chyba parity pamti apod.
3 - ladc bod (breaking point)
4 - peplnn (overflow trap)
Adresovac techniky
indexovan adresa
MOV AH, [PROM+SI]
dal
bze + indeex
pm + bze + index
segment: pm adresa + bze + index
Instrukce MOV
32bitov stn
nejdve instrukc ADD seteme prvnch 16bit
jeliko dolo k peteen tak z 15bitu je ped pznak CF (Carry Flag)
nyn pouijeme instrukci ADC kterou seteme dalch 16bit a k nim piteme pznak CF
Instrukce SUB (SUBTRACTION)
odtn
SUB AL,CL => AL = AL-CL
Instrukce SBB (Subtraction with borrow)
odtn s penosem (podobn jako ADC u stn)
Logick instrukce
Instrukce AND - logick souin po bitech
Instrukce OR logick souet
Instrukce XOR nonekvivalence
Instrukce NOT inverze vech bit (jednikov doplnk), nemn pznaky
Instrukce TEST (Logical compare)
logick strovnn
nap. TEST AL,7 => F:= AL ^ 7 => nastav pznaky
Rotace
rotace bit
u 8086 neomezen poet rotac => mem toit furt dokola
u 80286 a vych omezen potu rotac na 1Fh
Instrukce ROL (Rotate Left)
rotace doleva
ROL objekt, o kolik bit rotovat
CF = bit kter odrotoval na nejni adresu
OF je definovno pouze pi rotaci o jeden bit tj. pokud se hodnota CF nerovn novmu nejvymu bitu
OF = CF bitn-1
Instrukce ROR (Rotate Right)
rotace vpravo
OF = bitn-1 bitn-2
Posuvy
Instrukce SAL (Shift Aritmetic Left)
aritmeticky posun vlevo
aritmetick nsoben 2n
provd tut akci jako SHL(Shift Logical Left)
OF = CF bitn-1
Instrukce SAR (Shift Aritmetic Right)
aritmetick posuv vpravo
aritmetick dlen 2
OF = 0
Instrukce SHR (Shift Logical Right)
nerespektuje znamnkov bit
Vtven programu
JMP nepodmnn skok
pm skok (clov adresa je v instrukci)
vzdlen skok (far jump)
mn CS registr
pln CS:IP
blzk skok (near jump)
nemn CS
st se neznamnkov
na vzdlenost <0;65535>
krtk skok (short jump)
nemn CS
st se znamnkov
na vzdlenost <-128;+127>
Pm skok
mn CS
o
vzdlen skok
o
CS:IP
nemn CS
o
vzdlenost <0,65535> = blzk skok (bez znamnka)
o
vzdlenost <-128,127> = krtk skok (se znamnkem)
EQ ==
NE <>
LT <
LE <=
GT >
o
GE >=
Zsobnk
o
PUSH
o
POP
Voln a nvrat z podprogramu
o
CALL (do zsobnku ukld nvratovou adresu a sko na instrukci v argumentu
1986-1994
16 - 40 Mhz
DX plnohodnotn
SX 16bit datov sb., 24 bit adresov
i387 koprocesor
386SL pro notes
Noiky
D0-D31 datov sb.
A1-A31 adresov sb.
Registry
pvodn registry
rozen na 32 bit
Pznaky
VM (Virtual 8086 mode) pouze v chrnnm reimu, pot proces b jako na 8086
Adresace
selektor ukazatel do tabulek (stle 16 bitov)
offset pipotv se
limit segmentu 4 GB 1
linern adresa adresa vstupujc do mechanismu strnkovn
strnkovn se mus zapnout, pokud nen tak linern = fyzick pokud je zapnut mus se pevst
popisovae segment (8 bajt) bze segmentu je rozdlen na 3 sti (16, 8, 8 bit)
G (Granularita) je mon adresovat bu 16 nebo 32 bit a podle toho je nastaven tento bit, zrove uruje jednotku limitu (velikost
adresovan pamti) u 16 bit je to 1B u 32 je to 4 kB
B (big) nastavuje 16/32 bitov reim
dc registry
PE zapn chrnn reim
ET (extension type) sdluje typ instalovanho koprocesoru (287, 387)
PG zapn strnkovac jednotku
Strnkovn
dolnch 12 bit se netransformuje
12 bit tabulky (pes strnkovac tabulky)
12 bit strnkov adres
cenzurovno (2 hodiny bez zpisu)
TLB onakej buffer
CR3 ukazuje na strnkov adres
TSS tabulka 80386
sem se ukld stav vech registr pi peruen aby mohlo dojt k nvratu
offsetov mapa V/V bran vzdlenost mapy od zatku segmentu
Ladc peruen
14 peruen vpadek strnky
x86-64 architektura
pln zptn kompatibiln
64bit long mode
64bit virtuln adresa, 52bit fyzick
zruena segmentace
strnkovn
o
podporuj 4KB strnky nebo 2MB strnky
o
strnkov tabulka 64bit, dolnch 21bit adresace, dal bity jsou adresa
AMD64
IA64
od Intel
nen kompatibiln s x86, kompatibiln pouze ve velmi omezenm reimu (64bitov RISC procesor a druh 32bitov obyejn INTEL)
Itanium
Mikroprocesor i860
RISC procesor
nen kompatibiln x86
ast ve vektorovch tiskrnch
samostatn jednotky (grafick, staka, nsobika) u jinch cpu je ve integrovan do ALU
moc registr, 32 32bitovch registr
registr r0 je vdycky 0 pokud potebuju nap. do r2 piadit 1 tak u CISC musm v pamti vyhradit prostor, pojmenovat jej, uloit 1 a
penst do registru u RISC procesor se sname minimalizovat pstupy do pamti tzn, pesuneme obsah r0 do r2 a udlme jednu
inkrementaci
Registr Bypassing neek se a data dojdou do registru, ale meme data brt pmo od minul instrukce kter data teprve posl do
registru a to pmo se sbrnice
Delayed Branch ped provedenm skoku se provede jet jedna instrukce za nm, tomu se k spodn skok RISC jednotka
rozpracovv instrukce hodn dopedu, tzn. Pokud zjist e se m skoit je ji dal instrukce skoro dokonen proto je j koda
nevykonat, proto se jet vykon a a po n se provede skok, toto mus fovat kompiltor
U RISC procesor nemohou pracovat instrukce s pamt, pouze s registry (mimo load a store)
2 varianty podmnnho skoku, kompiltor vyhodnocuje zda se pravdpodobn sko nebo nesko a podle toho zane rozpracovvat
dal instrukce (pipelining)(instrukce BCT pravdpodobn se sko, instrukce BC pravdpodobn se nesko)
Koprocesor
procesor sleduje instrukn tok a jakmile je instrukce uren pro nj tak ji provede
reln slo exponent, mantisa mantisa x 2^exponent
Normalizovn mantisy