
Aritmetik mantık birimi (AMB; İngilizce: arithmetic logic unit, ALU), iki işlenen üzerinde toplama, çıkarma gibi aritmetik işlemleri ve VE, VEYA gibi bit düzeyinde mantık işlemlerini yapan sayısal bir birleşimsel devredir. İşlemcinin hangi işlemi yapacağını denetim birimi seçer; AMB işlenenleri çoğunlukla yazmaçlardan alır, sonucu bir yazmaca yazar ve sonucun sıfır, negatif ya da taşmış olup olmadığını bayraklarla bildirir. En basit mikrodenetleyiciden süper bilgisayarlara kadar bütün merkezî işlem birimlerinin temel yapı taşıdır; grafik işlem birimlerinde de binlerce AMB birlikte çalışır.
Aritmetik işlemler için ayrı bir birim fikri John von Neumann'ın 1945 tarihli EDVAC raporuna dayanır. Tek yonga üzerinde üretilen AMB'lerin en eskisi ve en ünlüsü, Texas Instruments'ın 1970'te çıkardığı 4 bitlik 74181'dir.
John von Neumann, 30 Haziran 1945 tarihli EDVAC raporunda makinenin en sık toplama, çıkarma, çarpma ve bölme işlemlerini yapacağını, bu yüzden yalnızca bu işlemler için özelleşmiş birimler içermesi gerektiğini yazdı ve bu kısma "merkezî aritmetik kısım" (central arithmetical part, CA) adını verdi. Raporun 11. bölümü, CA'nın düzenini ve yapabildiği işlemlerin tam listesini verir. Aynı raporda işlemlerin doğru sırayla yapılmasını ayrı bir merkezî denetim biriminin sağlaması öngörülüyordu.
IAS makinesi için yazılan 28 Haziran 1946 tarihli rapor da makinede temel aritmetik işlemleri yapabilen bir "aritmetik organ" bulunması gerektiğini söyler. Raporda sayılar ikili tabanda tutuluyor, toplamada bütün basamak çiftleri aynı anda işlenen koşut bir düzen benimseniyordu. Aritmetik organın ilk parçası, gelen bir sayıyı içindekine ekleyebilen ve sonucu saklayan bir biriktiriciydi. Rapor, belleği oluşturan 40 Selectron tüpüne koşut erişim sağlandığı için koşut bir makineyi seçmişti. IAS makinesi 1951 yazında Los Alamos için büyük bir hesap yürüttü ve tamamlandığı 10 Haziran 1952'deki açılışla duyuruldu.
"Aritmetik mantık birimi" terimi daha sonra yerleşti. von Neumann'ın raporunda geçmez; raporda "mantık" sözcüğü yalnızca denetim için kullanılır. IBM'in Stretch projesini anlatan 1962 tarihli kitapta "aritmetik ve mantık birimi" (arithmetic and logic unit) ifadesi geçer. Merriam-Webster sözlüğü ise terimin bugünkü biçiminin bilinen ilk kullanımını 1972'ye tarihler.
Tümleşik devrelerdeki kapı sayısı yüze yaklaşınca tam bir aritmetik birimi tek yongaya sığdırmak olanaklı hâle geldi; bu yongaların en eskisi ve en ünlüsü Texas Instruments'ın 74181'idir. TI'nin veri sayfasına göre 74181, 75 kapı karmaşıklığında tek bir yongadır; iki 4 bitlik sözcük üzerinde 16 ikili aritmetik işlem yapar ve iki Boole değişkeninin 16 olası mantık işlevinin hepsini sağlar. PDP-11 ailesinin orta başarımlı modelleri 74181 ya da onun hızlı sürümü 74S181 ile kuruldu; en eski model PDP-11/20'nin AMB'si ise yalnızca bir toplayıcıydı. PDP-11/04 ile PDP-11/10'da 74181'ler, 74182 önceden elde üreticisiyle birlikte kullanıldı. Xerox Alto'nun AMB'si de bir SN74181'di.
1971'de piyasaya çıkan Intel 4004, AMB'yi yazmaçlar ve denetim birimiyle birlikte tek bir yonga üzerine toplayan bir mikroişlemciydi. Daha büyük makineler için ise AMB, birbirine bağlanabilen dilimler hâlinde üretildi: AMD'nin 1975'te tanıttığı Am2901, 4 bitlik bir bit dilimiydi ve toplama, iki çıkarma ile beş mantık işlevini yapan sekiz işlevli bir AMB içeriyordu. Aynı dilimde AMB'nin yanında 16 sözcük × 4 bitlik iki kapılı bir RAM de bulunuyordu.
AMB, sayıları işlemcinin öteki birimleriyle aynı gösterimde işler. Tamsayılar için bugün hemen bütün işlemciler ikiye tümleyen gösterimini kullanır. Intel'in x86 mimarisinde işaretli tamsayılar üzerindeki bütün işlemler bu gösterimi varsayar. C dili de C23 standardında öteki gösterimleri bırakıp yalnızca ikiye tümleyeni tanımlar. İkiye tümleyenin amacı çıkarma için ayrı bir devre kurma gereğini ortadan kaldırmaktır: A − B, B'nin bütün bitleri evrilip toplayıcının elde girişine 1 verilerek aynı toplayıcıyla hesaplanır.:224, 380 Eski bilgisayarlarda bire tümleyen ve işaret-büyüklük gibi gösterimler de kullanıldı; ikiye tümleyeni endüstrinin en yaygın gösterimi yapan, 1964'te tanıtılan IBM System/360 oldu. Dar bir işaretli sayı daha geniş bir yazmaca yüklenirken işaret biti yeni bitlere kopyalanır; buna işaretle genişletme denir.:383 Örneğin 4 bitte −3, +3'ün gösterimi 0011'in bütün bitleri evrilip 1 eklenerek 1101 olarak yazılır; 0011 ile 1101 toplandığında çıkan elde atılır ve sonuç 0000 olur.:380
AMB hangi işlemi yapacağına kendisi karar vermez; işlemi denetim biriminden gelen bir denetim sinyali seçer.:229 Yapılan işlemler üç öbekte toplanır:
ADD R0, R1, R2, LSL #3 buyruğu R2'yi üç bit sola kaydırıp R1'e ekler.:138AMB sonuçla birlikte, sonuç hakkında bilgi taşıyan tek bitlik bayraklar da üretir.:116 En yaygın dört bayrak şunlardır:
| Bayrak | x86 | ARM | Anlamı |
|---|---|---|---|
| Sıfır | ZF | Z | Sonuç sıfırdır. |
| İşaret | SF | N | Sonucun en anlamlı biti; 1 ise işaretli sonuç negatiftir. |
| Elde | CF | C | En anlamlı bitten dışarıya elde ya da borç çıkmıştır; işaretsiz aritmetikte taşmayı gösterir. |
| Taşma | OF | V | İşaretli sonuç hedefe sığmayacak kadar büyük ya da küçüktür. |
Arm'ın belgesine göre sıfır sonucu çoğu zaman bir karşılaştırmada iki değerin eşit çıktığını gösterir.
x86'da bunlara ek olarak eşlik bayrağı (PF) ve BCD aritmetiği için yardımcı elde bayrağı (AF) vardır. Eşlik bayrağı, sonucun en düşük baytında çift sayıda 1 biti bulunduğunda 1 olur; yardımcı elde bayrağı ise sonucun 3. bitinden dışarıya elde ya da borç çıktığını gösterir. Elde ile taşma farklı durumları gösterir: iki artı sayının toplamı eksi ya da iki eksi sayının toplamı artı çıkarsa işaretli taşma olur.:224-225 Donanım taşmayı, en anlamlı bit konumuna giren elde ile oradan çıkan elde birbirinden farklı olduğunda saptar. Sıfır bayrağı ise sonucun bütün bitleri bir VEYA kapısında toplanıp çıkış evrilerek elde edilir.:235-236 74181'in A = B çıkışı da sonuç bitlerinden çözülerek iki sözcüğün eşitliğini bildirir. A − B, A + B̄ + 1 olarak hesaplandığında, işaretsiz çıkarmada çıkan eldenin 1 olması borç gerekmediğini, 0 olması ise borç gerektiğini gösterir.:224-225 x86 ise CF bayrağını en anlamlı bitten borç alındığında 1 yapar.
x86 ve ARM'da aritmetik ve mantık buyrukları bayrakları bir bayrak yazmacında kendiliğinden günceller; koşullu dallanmalar bu bayraklara bakar.:116 RISC-V ise bayrak yazmacı kullanmaz: koşullu dallanmalar iki yazmacı doğrudan karşılaştırır ve hiçbir tamsayı buyruğu aritmetik kural dışı durum üretmez. ADD ve SUB buyrukları taşmayı yok sayar ve sonucun yazmaç genişliğindeki alt bitlerini hedef yazmaca yazar. Taşma gerektiğinde sonraki buyruklarla denetlenir; işaretsiz toplamadaki taşma, toplamanın ardından tek bir işaretsiz karşılaştırmalı dallanmayla anlaşılır.
Aşağıdaki 4 bitlik örnekler, aynı toplama işleminin bayrakları nasıl etkilediğini gösterir. İşaretli yorumda 4 bit −8 ile +7 arasındaki sayıları gösterir::384-385
| İşlem | Sonuç | Çıkan elde | Taşma | Sıfır | İşaret | Açıklama |
|---|---|---|---|---|---|---|
| 0111 + 0001 | 1000 | 0 | 1 | 0 | 1 | +7 + 1 = +8 dört bite sığmaz; iki artı sayının toplamı eksi çıktı |
| 1111 + 0001 | 0000 | 1 | 0 | 1 | 0 | İşaretsiz 15 + 1 taştı; işaretli −1 + 1 = 0 doğru |
| 1000 + 1000 | 0000 | 1 | 1 | 1 | 0 | −8 + (−8) = −16 sığmaz; iki eksi sayının toplamı artı çıktı |
| 0101 + 1101 | 0010 | 1 | 0 | 0 | 0 | 5 + (−3) = 2; çıkan elde işaretli sonucu etkilemez |
| 0011 − 0101 | 1110 | 0 | 0 | 0 | 1 | 3 − 5 = −2; 0011 + 1010 + 1 olarak hesaplanır, çıkan elde 0 olduğu için işaretsiz çıkarmada borç gerekir |

İşlemci birçok işlemi bir ya da daha çok AMB ile yapar. AMB işlenenleri giriş yazmaçlarından alır ve sonucu bir çıkış yazmacına yazar; yazmaçlarla bellek arasında veri taşımak işlemcinin öteki birimlerinin işidir. AMB'nin yapacağı işlemi seçen AMBİşlem denetim sinyali buyruğun bit alanlarından üretilir; RISC-V'te bu alanlar funct3 ve funct7'dir.:313
AMB çoğu zaman bitlere bölünerek tasarlanır: önce bir bitlik bir AMB kurulur, sonra bundan n tane yan yana konarak n bitlik AMB elde edilir.:229, 233 Bir bitlik AMB'de VE ile VEYA kapıları mantık işlemlerini, bir tam toplayıcı toplamayı yapar; 4×1'lik bir çoklayıcı bu sonuçlardan birini seçer.:233 Çıkarma için ayrı bir devre gerekmez: Çıkar sinyali B'nin bitlerini dışlayan VEYA kapılarından geçirerek evirir ve en az anlamlı bitin elde girişine 1 verilir; devre A + B̄ + 1 = A − B hesaplar.:232
Kitaptaki 32 bitlik AMB örneğinde, Çıkar sinyali ile iki bitlik işlem denetimi birlikte şu işlemleri seçer::236
| Çıkar | İşlem denetimi | İşlem |
|---|---|---|
| 0 | 00 | VE |
| 0 | 01 | VEYA |
| 0 | 10 | Toplama |
| 1 | 10 | Çıkarma |
| 1 | 11 | Küçükse 1 yap |
Son satırdaki işlemde AMB, A − B çıkarmasını yapar ve sonucun işaretine göre en az anlamlı bite 1 ya da 0 yazar; bu, karşılaştırma buyruklarının donanımdaki karşılığıdır.:235-236 Aynı yaklaşım yonga düzeyinde de kullanıldı: 74181 dört bitlik bir dilimdi ve daha geniş sözcükler için birkaç tanesi elde hatlarıyla ya da 74182 önceden elde üreticisiyle birbirine bağlanırdı.

En basit çok bitlik toplayıcı, her tam toplayıcının çıkan eldesini bir sonrakinin giren eldesine bağlayan dalga eldeli toplayıcıdır. Elde en az anlamlı bitten en anlamlı bite doğru dalgalanarak ilerlediği için n bitlik bir toplayıcının elde gecikmesi n kapı gecikmesidir; 32 bitlik bir toplayıcıda son elde ancak 32 kapı gecikmesinden sonra hazır olur.:231, 237 Eldeyi önceden üreten toplayıcılar her bit için bir geçirme (p = a ⊕ b) ve bir üretme (g = a · b) sinyali hesaplar ve eldeleri önceki bitleri beklemeden bu sinyallerden bulur.:237-238 74181 de dört bitlik öbeği için bu türden iki çıkış verir; TI'ın 74182 yongası bunları kullanarak dört toplayıcı öbeğinin eldesini önceden hesaplar. Veri sayfasına göre 74S181 ile kurulan bir toplayıcı 1-4 biti tipik olarak 11 ns'de, önceden elde üretimiyle 17-64 biti ise 28 ns'de toplar. Dalga eldesiyle bağlanan iki yongada 5-8 bitlik toplama 18 ns sürer.
Elde ile seçmeli toplayıcı, her öbeğin toplamını giren eldenin 0 ve 1 olduğu iki durum için koşut olarak hesaplar ve önceki öbeğin eldesi gelince doğru sonucu bir çoklayıcıyla seçer.:239 Koşut önek toplayıcılar ise eldeleri bir ağaç yapısında hesaplayarak gecikmeyi log2 n düzeyine indirir.:239 Bu ailenin bilinen iki düzeni, Kogge ile Stone'un 1973'te Illiac IV gibi koşut bilgisayarlarda yinelemeli denklemleri çözmek için önerdiği özyinelemeli ikileme yöntemine dayanan Kogge-Stone toplayıcısı ile Brent ve Kung'un 1982'de yonga üzerinde düzenli bir yerleşimle önerdiği Brent-Kung toplayıcısıdır. Kogge-Stone en düşük gecikmeyi sağlar ve 32 bit için yalnızca 5 düzey yeter, ama O(n log n) kablo gerektirdiği için yongada yoğun bir kablo trafiği doğurur. Brent-Kung daha az kablo kullanır ama 2 log2 n − 1 düzeye çıkar; ikisinin arasında duran Han-Carlson düzeni uygulamada sık yeğlenir. Bu toplayıcılar bugün yüksek başarımlı işlemcilerde, grafik işlemcilerinde ve yapay zekâ hızlandırıcılarında kullanılır; bir grafik işlemcisindeki çarpma-toplama birimlerinin son toplama aşaması da koşut önek toplayıcıyla yapılır.:239-240
Bir AMB'ye konan her işlem yongada alan ve enerji ister; bu yüzden çarpma ve bölme gibi karmaşık işlemler her işlemcide bulunmaz. Örneğin RISC-V'in temel buyruk kümesi RV32I'da çarpma buyruğu yoktur; çarpma desteği isteğe bağlı M uzantısıyla eklenir.:242
En basit çarpma donanımı, çarpanın bitlerine sırayla bakıp çarpılanı kaydırarak toplayan kaydır ve topla yöntemidir. Bu yöntemde döngü 32 kez yinelenir ve her yineleme bir saat çevriminde tamamlanabildiği için 32 bitlik bir çarpma 32 çevrim sürer.:249 Koşut çarpıcılar ise saat sinyali gerektirmeyen birleşimsel devrelerdir; bunlar arasında dizi çarpıcı ile 1964'te Chris Wallace'ın dizi çarpıcının gecikme sorununu çözmek için önerdiği Wallace ağacı vardır.:253-254 m bitlik bir sayı ile n bitlik bir sayının çarpımı en çok m + n bit uzunluğunda olduğundan, iki 32 bitlik sayının çarpımı 64 bite kadar çıkabilir. İkiye tümleyen gösterimindeki işaretli sayılar, işaretleri ayrıca ele almadan Booth algoritmasıyla doğrudan çarpılabilir. Çağdaş çarpıcılarda değiştirilmiş Booth kodlaması (radix-4) kısmi çarpım sayısını yarıya indirir ve bu kısmi çarpımlar Wallace ya da Dadda ağaçlarıyla sıkıştırılır.:239-240 Çarpmanın süresi işlenene de bağlı olabilir: ARM7TDMI işlemcisinde MUL buyruğunun süresi, çarpanın üst bitlerinin hepsinin sıfır ya da hepsinin bir olmasına göre değişir.
Yinelemeli yöntemlerin hepsinde bölme çarpmadan yavaştır: n bitlik çarpma Wallace ağacı gibi yapılarla birkaç çevrime indirilebilirken yinelemeli bölme en az n çevrim gerektirir ve her çevrimde bir koşullu karar içerir.:268 Çok çevrimli bir RISC-V işlemcisinde 32 bitlik bölme, yinelemeli bir bölücüyle Yürüt aşamasında 32 çevrim sürer.:352
Yazmaçtan geniş sayılar sözcük sözcük işlenir ve bir sözcükten taşan elde bir sonraki sözcüğün toplamına katılır. x86'nın ADC (eldeyle topla) buyruğu hedef işleneni, kaynak işleneni ve elde bayrağını toplar; elde bayrağı bir önceki toplamanın eldesini taşır. Çok baytlı ya da çok sözcüklü bir toplama, bir ADD buyruğunun ardından gelen ADC buyruklarıyla yapılır.
Kayan nokta birimi de AMB gibi iki işlenen üzerinde işlem yapar, ama işlenenleri işaret, üs ve anlamlı kısımdan oluşan kayan nokta biçimindedir. Bu biçimi belirleyen evrensel standart IEEE 754'tür; standarttan önce her işlemci üreticisi kendi biçimini kullanıyordu.:273 Standardın ilk sürümü IEEE 754-1985, 21 Mart 1985'te onaylandı; toplama, çıkarma, çarpma, bölme, karekök, kalan ve karşılaştırma işlemlerini ve temel ile genişletilmiş sayı biçimlerini tanımlar. Bu sürümün yerini 2008'de IEEE 754-2008 aldı.
Intel, 1980'de 8086 işlemcisini desteklemek için 8087 matematik yardımcı işlemcisini çıkardı; Intel'e göre 8087'li bir 8086 sistemi matematik hesaplarını onsuz bir sistemden yaklaşık yüz kat hızlı yapıyordu ve 8087 IEEE'nin yeni kayan nokta standardına uyuyordu. 8087, 80 bitlik genişletilmiş duyarlıkta kayan nokta aritmetiği yapan ayrı bir yongaydı ve kullanıcı onu ayrıca satın alıp ana karta takıyordu; kayan nokta birimi daha sonra 80486DX ile işlemcinin içine alındı.:298
Çok çevrimli bir işlemcide AMB, buyruğun Yürüt aşamasında çalışır; yapacağı işlem buyruğun funct3 ve funct7 alanlarından çözülür.:357
Çoklu buyruk başlatımlı işlemciler her çevrimde birden çok buyruğu yürütebilmek için birden çok AMB içerir. Intel'in Golden Cove mikromimarisinde yürütme kapılarının sayısı 10'dan 12'ye çıkarıldı ve beşinci bir tamsayı AMB kapısı eklendi.
Tek buyruk, çoklu veri (SIMD) birimleri aynı işlemi birden çok veri öğesine aynı anda uygular. Örneğin x86'nın MMX teknolojisi, MMX yazmaçlarına paketlenmiş baytlar, sözcükler ya da çift sözcükler üzerinde aritmetik ve mantık işlemlerini bu yöntemle yapar. Grafik işlem birimlerinde ise AMB sayısı binlerle ölçülür: NVIDIA'nın Ampere mimarisindeki GA10x yongalarında her akış çoklu işlemcisinde (SM) 128 CUDA çekirdeği bulunur ve tam bir GA102 yongası 10.752 CUDA çekirdeği içerir. SM'nin iki veri yolundan biri 16 FP32 biriminden, öteki hem FP32 hem INT32 işlemi yapabilen 16 birimden oluşur.