|
Jednostka arytmetyczno-logiczna (z ang. Arithmetic and Logical Unit lub Arithmetic Logic Unit, ALU) to jedna z głównych części procesora, prowadząca proste operacje na liczbach całkowitych.
ALU jest układem cyfrowym, służącym do wykonywania operacji arytmetycznych (takich jak dodawanie, odejmowanie itp.) oraz operacji logicznych (np. Ex-Or) pomiędzy dwiema liczbami. ALU jest podstawowym blokiem centralnej jednostki obliczeniowej komputera.
Typowe ALU ma dwa wejścia odpowiadające parze argumentów i jedno wyjście na wynik. Operacje jakie prowadzi to:
* operacje logiczne AND, OR, NOT, XOR * dodawanie * często też, odejmowanie, negacja liczby, dodawanie z przeniesieniem, zwiększanie/zmniejszanie o 1 * przesunięcia bitowe o stałą liczbę bitów, czasem też o zmienną liczbę * dość często mnożenie i czasem dzielenie/modulo
Przyczyną dla której operacje te grupuje się w ALU jest to, że bramek logicznych potrzebnych do zaimplementowania wszystkich operacji z zestawu: dodawanie (z przeniesieniem i bez), odejmowanie (z przeniesieniem i bez), negacja liczby zwiększanie i zmniejszanie o 1, AND, OR, NOT, XOR jest niewiele trudniejsze od zaimplementowania samego dodawania. Mnożenie jest już droższe, a dzielenie jest bardzo drogie w porównaniu do tych operacji.
Klasyczne procesory zawierały jedno ALU. Procesory o architekturze superskalarnej zawierają kilka ALU, i mogą ich używać jednocześnie. Często ALU te są nieidentyczne ─ np. z trzech ALU wszystkie potrafią wykonywać podstawowe operacje (dodawanie, odejmowanie i logiczne), a jedynie jedno potrafi mnożyć i dzielić. Taki procesor w jednym cyklu może wykonać np. 1 mnożenie i 2 dodawania, nie może natomiast wykonać 2 mnożeń. Jest to uzasadnione, ponieważ typowy program wykonuje o wiele więcej dodawań (często niejawnych dla programisty, np. przy wyliczaniu adresu pola obiektu na podstawie adresu obiektu czy dostępu do n-tej zmiennej na stosie) niż mnożeń, a dodanie mnożenia mocno komplikuje ALU.
wikipedia.pl
|