Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

1/1

ALU

ALU je základním prvkem operační části procesoru a je určená pro vykonávání operací nad strojovými kódy. Základem struktury ALU je většinou paralelní kombinační sčítačka, která je přizpůsobena (pomocí řídících povelů) k vykonávání předem definovaných elementárních aritmetických operací.

V mnoha dnešních procesorech je na jednom procesoru více než jedna ALU, obvykle rozdělené na jednotky pro práci s celočíselnými operandy a jednotky pro práci s operandy v plovoucí řádové čárce (ty se někdy neoznačují jako ALU, ale jako FPU, floating-point unit).

Jednotlivé ALU pracují relativně nezávisle, takže procesor může v jednom hodinovém taktu provést více instrukcí ve více jednotkách současně.


A, B — operandy
F — funkce
R — výsledek (Result)
S — stav výsledku


8bit ALU Texas Instruments SN74AS888

Sčítačka

Poloviční sčítačka

Poloviční sčítačka (angl. Half adder) realizuje sčítaní dvou jednomístných binárních čísel. Vstupem jsou dva jednobitové sčítance (A, B). Výstupem je jednobitový součet (S) a jednobitový příznak přenosu do vyššího řádu (C, z angl. Carry flag).

Poloviční sčítačka odevzdává příznak přenosu do dalšího řádu, sama však nedokáže zpracovat přenos z předcházejícího řádu. Nestačí proto na realizaci vícebitového sčítání.

Booleovský zápis:

\begin{eqnarray} S &=& A \oplus B \\ C &=& A \cdot B \end{eqnarray}

pravdivostní tabulka:

vstup výstup
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Úplná sčítačka (Full adder)

Úplná sčítačka je složená ze dvou polovičních sčítaček a hradla OR.

Hradlo OR je navíc možné bez vlivu na funkčnost nahradit hradlem XOR, kombinace vstupů (1, 1), při kterých by se jejich výstup lišil nemůže v případě sčítaní nastat (buď nastane přenos jen v první poloviční sčítačce, nebo jen ve druhé). Na vytvoření úplné sčítačky tak stačí jen 2 typy hradel, což je praktické při jejich realizaci.

Úplná sčítačka (angl. Full adder) realizuje sčítání dvou jednomístných binárních čísel s ohledem na přenos s předcházejícího řádu.

Vstupem jsou tři jednobitové sčítance: A, B, Ci . Výstupem je jednobitový součet (S) a jednobitový příznak přenosu do vyššího řádu (Co).

Booleovský zápis:

\begin{eqnarray} S &=& (A \oplus B) \oplus C_i \\ C_o &=& (A \cdot B) + (C_i \cdot (A \oplus B)) \\ &=& (A \cdot B) + (B \cdot C_i) + (C_i \cdot A) \end{eqnarray}

Pravdivostní tabulka úplné sčítačky:

vstup výstup
A B Ci Co S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

Sériová sčítačka

Jedná se v zásadě o jednobitovou sčítačku používanou pro sériové sčítání dvou n-bitových čísel připravených ve vstupních registrech. Na výstupu Si se postupně objevují bity součtu počínaje nejnižším bitem 0 a výstup přenosu Ci-1 se zachycuje na dobu jednoho taktu v klopném obvodu D.

Paralelní sčítačka s postupným přenosem (Ripple carry adder — RCA)

Vznikne spojením několika úplných sčítaček vedle sebe. Je velice jednoduchá, ale má zásadní nevýhodu:

Každá sčítačka musí čekat na korektní příznak přenosu od sčítačky realicující součet nižšího řádu. Je li doba průchodu signálu hradlem T, je pak doba průchodu signálu sčítačkou 2T. Při sčítání dvou 32-bitových čísel by pak sčítání trvalo 64T. To je příliš dlouhá doba.

Paralelní sčítačka s rychlým přenosem (Carry Lookahead Adder — CLA)


(sčítačka s predikcí přenosu)

Příznak přenosu v každém řádu lze vypočítat pomocí kombinačního obvodu. Všechny přenosy mezi řády se vypočítají současně v obvodu nazývaném jednotka predikce přenosu (angl. Lookahead Carry Unit — LCU).

Součet je definován takto:
$S = A \oplus B \oplus C_i$

Kromě toho je ještě k dispozici vlastní přenos
$G_i = A_i \cdot B_i$

a tranzitní přenos
$P_i = A_i \oplus B_i$

příznak přenosu lze potom vypočítat jako
$C_{i+1} = P_i \cdot C_i + G_i$

Do rovnic dosadíme za $i$ postupně 0, 1, 2, 3 a dostaneme logické rovnice pro Ci:
\begin{eqnarray} C_1 &=& C_0 \cdot P_0 + G_0 \\ C_2 &=& C_1 \cdot P_1 + G_1 = C_0 \cdot P_0 \cdot P_1 + G_0 \cdot P_1 + G_1 \\ C_3 &=& C_2 \cdot P_2 + G_2 = C_0 \cdot P_0 \cdot P_1 \cdot P_2 + G_0 \cdot P_1 \cdot P_2 + G_1 \cdot P_2 + G_2 \\ C_4 &=& C_3 \cdot P_3 + G_3 = C_0 \cdot P_0 \cdot P_1 \cdot P_2 \cdot P_3 + G_0 \cdot P_1 \cdot P_2 \cdot P_3 + G_1 \cdot P_2 \cdot P_3 + G_2 \cdot P_3 + G_3 \end{eqnarray}

Násobení v pevné řádové čárce

Vlastní násobení může být prováděno sekvenčně (postupně), nebo kombinačně v jednom kroku. Používají se postupy, která známe z matematiky ze ZŠ. Jako příklad nám poslouží násobení pod sebou.

$3 \cdot 4 = 12$

     0011
     0110
 ---------
     0000
    0011
   0011
  0000 
 ---------
  0010010 

Násobení je v tomto případě realizováno pomocí opakovaného sčítání a bitových posunů

Bitové posuny

Realizují se zásadně jako operace probíhající v jednom taktu, tedy nikdy jako sekvence.

Vzhledem k tomu, že základní operací je zde cyklický posuv, (rotace), pojmenovává se tento operační blok válcovým posouvačem (barrel shifter). Jeho konstrukce je založena na použití multiplexorů s počtem vstupů, který odpovídá šířce bytového slova. Použijeme-li 4-vstupového multiplexoru, potřebujeme k realizaci 4-bitového válcového posouvače 4 multiplexery. Velikost posunutí je 0 až 3. Toto číslo se v dvojkovém tvaru přivádí na adresové vstupy všech 4-řech multiplexorů.

Matematické operace v plovoucí řádové čárce

http://www.root.cz/clanky/aritmeticke-operace-s-hodnotami-ve-formatu-plovouci-radove-carky/

Číslo je rozděleno na mantisu a exponent

\begin{eqnarray} X+Y &=& (M_X \cdot 10^{E_X-E_Y} + M_Y) \cdot 10^{E_Y}
;\ \mathrm{kde}\ E_X \leq E_Y \\ X-Y &=& (M_X \cdot 10^{E_X-E_Y} - M_Y) \cdot 10^{E_Y}
;\ \mathrm{kde}\ E_X \leq E_Y \\ X \cdot Y &=& (M_X \cdot M_Y) \cdot 10^{E_X+E_Y} \\ \frac{X}{Y} &=& \frac{M_X}{M_Y} \cdot 10^{E_X-E_Y} \\ \end{eqnarray}

Iterace a součty řad

Dělení čísel s pohyblivou čárkou a celá řada dalších operací se provádějí iteračními algoritmy. Například výpočet exponenciální funkce leze provést pomocí součtu nekonečné řady na základě Taylorova rozvoje.

$$ e^x=1+{x \over 1!}+{x^2 \over 2!}+ \dots +{x^n \over n!} $$

http://cs.wikipedia.org/wiki/Taylorova_řada

Newtonova metoda — Metoda tečen

http://cs.wikipedia.org/wiki/Metoda_tečen

Newtonova metoda tečen slouží k nalezení řešení rovnice f(x) = 0 za předpokladu, že známe derivaci funkce $f'(x)$, tedy směrnici tečny.

Dalším nezbytným předpokladem je znalost počáteční hodnoty $x_0$, v jejíž blízkosti hledáme řešení. Pokud se funkce $f(x)$ chová rozumně (je spojitá, hladká a monotónní v intervalu, ve kterém hledáme řešení), lze očekávat řešení v místě, kde tečna sestrojená z bodu $f(x0)$ protíná osu x. (Směrnice této tečny je $f'(x0)$.) Tento průsečík označíme $x_1$ a vypočteme jej podle následujícího vztahu.

$$ x_1 = x_0 - \frac{f(x_0)}{f'(x_0)} $$

Další krok iterace — přiblížení se provede stejným postupem. Potom můžeme psát:

$$ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} $$

Příklad

Jako příklad uvedeme výpočet odmocniny:

\begin{eqnarray} x &=& \sqrt{x} \Rightarrow x^2 - 2 = 0 \\ f(x) &=& x^2 - 2 \\ f'(x) &=& 2x \\ x_{k+1} &=& x - \frac{x^2-2}{2x} = \frac{2x^2-x^2+2}{2x} = \frac{x^2+2}{2x} \end{eqnarray}

odhad: $x_0 = 1$
$x_1 = 1 \cdot 1+{2 \over 2} = 2$
$x_2 = (1.5^2+2)/(2 \cdot 1.5) = 1.4166$
$x_3 = (1.41666^2+2)/(2 \cdot 1.41666)= 1.4142$

| navigace |

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net