|
Abruzzi
|
 |
« : Mart 10, 2008, 11:05:44 ÖÖ » |
|
ARITHMETIC LOGIC UNIT(ALU)
ARİTMETİK MANTIK BİRİMİ
Mikroişlemcinin birinci derece önem taşıyan bir birimidir. Mikroişlemcinin İŞLEM GÜCÜNÜ aritmetik lojik işlem birimi belirlemektedir. ALU ' nun değişik işlemleri yapabildiği oranda MİKROİŞLEMCİ önem kazanmaktadır.
Teknikteki gelişmelere paralel olarak ALU devreleri de sürekli gelişim içerisinde bulunmaktadır.
Başlangıçta LSI (Large Scale Integration ) tekniği ile üretilen elemanlar 1980'lerden başlayarak VLSI tekniği ile üretilmiş ve her yeni üretimde de bir taraftan işlem kapasitelerinin ve inzin artırımı sağlanırken diğer taraftan boyutlar biraz daha küçültülmüştür.
ARİTMETİK MANTIK BİRİMİN İŞLEVİ
Aritmetik mantık birimi mikroişlemcinin işlem yapan birimdir. ALU' nun yapabildiği işlemler şu iki ana gurup altında toplanır:
1- Aritmetiksel işlemler
2- Mantıksal işlemler
ARİTMETİK MANTIK BİRİMİNİN YAPISI
ALU işlemleri ADDER (toplayıcı) ve SHIFTER (kaydırıcı) denilen iki esas devre ile gerçekleştirilir. Genelde, bu esas devreler ALU olarak anılmaktadır.
Ancak bilgileri depolayıcı ve değerlendirici bazı yardımcı devrelerden de yararlanılır.
Bu yardımcı devreler:
· AKÜMÜLATÖR
Başlangıç ve sonuç bilgilerini depolamak için akümülatör kullanılır. Bazı mikroişlemcilerde akümülatör yerine VERİ KAYDEDİCİ (data reg) kullanılmıştır. MC 68000'lerde olduğu gibi
· GEÇİÇİ KAYDEDİCİ (TEMPORARY REGISTER)
Bellekten alınan işlem bilgilerinin ilk durak yeri: geçici kaydedicidir.
· BAYRAK KAYDEDİCİ (FLAG REGISTER)
Bazı mikroişlemcilerde bayrak kaydedici yerine ; ALU tarafından yapılan işlemlerin sonucunu gösteren ve bu sonuçları değerlendirme ortamını yaratan devredir.
Bu sonuçlara göre bazı düzeltmeler gerekiyorsa bilgisayar bunları kendi kendine yapabildiği gibi bayrak ekrana çağrılarak bazı uyarılarının dışarıdan yapılması da mümkün olmaktadır.
Durum kaydedici veya Koşul kodu kaydedici değimleri de kullanılır. Aritmetik lojik işlem birimi ve bu yardımcı devrelerinin tümüne birden ALU gurubu denir. Yalnızca ALU denildiğinde ise asıl işlem yürütücü kısım olan ADDER ve SHIFTER amaçlanır.
ALU gurubu mikroişlemci kaç bitlik ise o kadar bit uzunluğundaki bir kelimeyi aynı anda işlemektedir. Örneğin 8 bit 16 bit 32 bit gibi
ALU gurubu program gereğince gerek giriş-çıkış kapısından gerekse bellekten veri yoluyla gelen verileri aritmetiksel veya mantıksal oluşuna göre gerekli işlemlere tabi tutarak sonuç bilgilerini yine veri yolu üzerinden belleğe veya giriş çıkış kapısına (1/0) aktarır. Yönlendirme kontrol birimi tarafından sağlanmaktadır.
[ÝA1]
Şekil 1 de ALU nun iç yapısını da gösteren bir blok diagram verilmiştir. Şekilde görüldüğü gibi ALU, toplayıcı ve kaydırıcı gibi iki bölümden oluşmaktadır.
Buffer Sistem data bus
Akümülatör Temporary
Adder Status reg.
Aritmetıc logıc Shıfter
unıt
Şekil 1.ALU iç yapısını da gösteren Aritmetik ve Mantık grubunun blok diyagramı
Kaydırıcı çarpma ve bölme işlemleri sırasında ve programda belirtilen özel işlemlerde kullanılmaktadır. Bu işlemler sağa veya sola kaydırma yoluyla yada doğrudan gerçekleştirilir. ADDER ise toplama ve çıkarma ile ilgili bütün işlemleri yürütmektedir.
Aritmetik Ve Mantık İşlem Biriminin Yardımcı Devrelerinin Görevlerinin Açıklanması
· AKÜMÜLATÖR
Akümülatörler bilgisayarın aritmetik ve lojik işlemleri sırasında depo görevi yapan önemli bir kaydedicidir.
Başlıca iki görevi vardır:
· ALU tarafından işlem sırasında kullanılacak ilk rakam veya sayıyı kaydına almak .
· ALU tarafından yapılan işlemlerin sonuç değerlerini çoğunlukla kaydını alarak belleğe ve gerekiyorsa oradan da çıkış birimine aktarılmasını sağlamak
İşleme başlandığından makine ye AKÜMÜLATÖR 'ü YÜKLE komutu verilince kontrol devresi akümülatöre boşalma (clear) sinyali gönderir ve işlem görecek sayı veya rakamın akümülatör kaydına geçmesini sağlar.
Bu adımdan sonra bilgisayara topla (add) komutu ile birlikte ikinci sayı verilirse ALU ikinci sayıyı geçici kaydedici aracılığı ile bellekten ve birincisini de akümülatörden alarak toplama işlemini gerçekleştirdikten sonra sonucu yine akümülatöre veya doğrudan veri yoluna aktarır. Sonuç değeri duruma göre ya akümülatörde geçici olarak kalır veya doğrudan veri yoluna verilerek belleğe veya çıkış kapısına aktarılır.
Bazı bilgisayarlarda tek bazılarında ise iki veya daha fazla akümülatör bulunur.
8085 mikroişlemcileri 8 bitlik işlemciler olduğundan kullanılan diğer devreler gibi akümülatörde 8 bitlik kaydedicidir.
· GEÇİCİ KAYDEDİCİ
Veri yolundan (data bus ) aldığı bilgileri geçici olarak kaydeder. Bunları aritmetik-lojik işlem birimine (ALU) aktarır . Geçici kaydedici W ve Z harfleri ile gösterilen bir çift halindedir.
· BAYRAK VEYA DURUM KAYDEDİCİSİ
Bayrak devresi , aritmetik-lojik birimi (ALU) içindeki işlemlerin sonucunu gösteren bir bilgi ve yönlendirme devresidir.
Bayrak devresi flip-flop' lardan oluşmaktadır. 8 flip-flop devresi bir araya gelerek BAYRAK KAYDEDİCİSİ' ni (flag register) oluşturmuştur.
BAYRAK KAYDEDİCİ , Şekil 2'te görüldüğü gibi 8 kare ile sembolize edilir. Her bir kare bir flip flop devresidir. Şekil de görülen kaydedici 8085 mikroişlemcisine aittir.
S Z X AC X P X CY
D7 D6 D5 D4 D3 D2 D1 D0
Şekil 2: 8085 mikroişlemcisine ait bayrak kaydedici.
Kare içersindeki harfler her bir flip flop un görevini belirten İngilizce kelimelerin kısaltılmışıdır. Alt taraftaki D harfleri ise flip flopların sıra numarasını taşımaktadır.
Yine şekilde görüldüğü gibi D1, D3 ,D5 flip floplarına "X" harfi konmuştur. Bunlar 8085 mikroişlemcilerinde kullanılmaktadır.
Diğerleri şu işlevleri yapar:
· DO: CY (CARRY FLAG )-TAŞMA BAYRAĞI
· D2: P (PARITY FLAG) - DURUM BAYRAĞI
· D4: AC (AUXILIARY CARRY FLAG) - YARIM ELDE BAYRAĞI
· D6: Z (ZERO FLAG)- SIFIR BAYRAĞI
· D7: (SIGN FLAG)- İŞARET BAYRAĞI
Her bir flip flop ilgili olduğu işlem sonucuna göre "SET" (çalışma ) veya "RESET" (sükunet) konumuna geçer .
Flip flopların çalışma konumunu belirtmek içinde bayrak "1" bayrak "0" değimleri kullanılır.
Şöyle ki:
Flip flop "SET" halinde ise BAYRAK "1" denir.
Flip flop "RESET" halinde ise BAYRAK "0" denir.
Bayrak Kaydedicisinin Çalışma Prensibi ;
· D0- TAŞMA BAYRAĞI (CARRY FLAG ) -(CY):
TAŞMA BAYRAĞININ durumunu D0 flip flopu gösterir. Bir işlem sonunda TAŞMA var ise yani işlem sonucu 8 bitten (FFH) fazla ise D0 flip flopu set (1) konumuna geçer. TAŞMA yoksa D0 reset (0) konumunda kalır.
Örneğin ; ALU ikin binary sayı için ADD (topla) komutu almışsa ve toplama sonucunda ELDE biti oluşmuşsa D0 flip flopu set (1)konumuna geçer.
Keza çıkarma işlemi olur ve ödünç (borrow) biti oluşmuşsa yine D0 flip flopu set (1) olur. Eğer toplama ve çıkarma sonucunda "elde " ve "ödünç "bitleri oluşmamışsa ; ELDE BAYRAĞI "0" dır.
Elde bayrağı "1" olduğunda işlem B, C,D,E,H,L genel amaçlı kaydedicilerde veya bellek içeriği ile akümülatör içeriği arasında yapılır.
· D2- DURUM BAYRAĞI (PARITIY FLAG)-(P):X
Bir işlem sonunda akümülatöre aktarılmış olan sonuç ifadesi içersindeki "1"'lerin sayısı çift rakam ise "P" flip flopu set (1) konumuna geçer. "1" ler tek sayıda ise "P" flip flopu reset (0) konumunda kalır. Bazı bilgisayarlarda da bunun tersidir.
Hata kontrolünde PARITY bayrağının önemi büyüktür.
· D4- YARIM ELDE BAYRAĞI (AUXILIARY CARRY FLAG)-(AC):
8085 ler doğrudan decimal aritmetik komutlarıyla işlem yapamazlar. Bunun için program hazırlanması gerekir. Programın içeriği YARIM ELDE BAYRAĞI yardımıyla takip edilir.
BCD toplama işlemi sırasında akümülatörün D3 bitinden D4 bitine bir elde değeri geçerse veya çıkarma sırasında ödünç verme durumu olursa , bir decimal ayarlamanın yapılmakta olduğunu belirtmek için YARIM ELDE BAYRAĞI "1"olur.
· D6- SIFIR BAYRAĞI (ZERO FLAG BİT) - (Z)
ALU içersindeki aritmetik işlem sonucu "0" ise D6 flip flopu set olacak yani SIFIR BAYRAĞI "1" olacaktır. Aksi durumda bayrak "0" olur.
· D7- İŞARET BAYRAĞI-(SIGNAL FLAG) (S)
İşlem sonunda akümülatöre yüklenen sayının negatif veya pozitif olduğunu gösteren bayraktır.
Bu bayrak akümülatördeki sayının son bit 'inin yani 8 bitin aynıdır. Akümülatör 8. Bitin "1" ise bayrak kaydediciyi D7 flip flopu set durumundadır. Yani bayrak "1"dir. Aksi halde flip flop reset durumundadır ve bayrak "0" dır.
Bilindiği gibi akümülatördeki sayının 8 biti signal bitidir. Eğer akümülatördeki sayı negatif ise "SIGNAL" biti "1" dir. Sayı pozitif ise "SIGNAL" biti "0" dır.
Bayrak devreleri durum tespitinden başka mikroişlemcinin işlemekte olduğu programın başka bir bölümüne atlamasına veya başka bir programa dallanmasına sağlamak için de kullanılmaktadır.
Diğer mikroişlemcilerde 8085 mikroişlemci ailesindekinden farklı olarak aşağıdaki bayraklarda vardır:
· TAŞMA BAYRAĞI (OVER FLOW FLAG)
Aritmetik işlem sonucunun 8 bitlik sözcük limitini geçip geçmediğini belirtir. Limiti geçmişse taşma bayrağı 1 olur. 8080 ailesinin "CARRY FLAG" benzeridir.
Aşağıdaki durumlarda taşma olmaktadır:
· Pozitif iki sayının toplamı negatif sonuç verdiğinde .
· Negatif iki sayının toplamı pozitif sonuç verdiğinde.
· Pozitif bir sayıdan negatif bir sayı çıkarıldığında sonuç negatif çıkarsa.
· Negatif bir sayıdan pozitif bir sayı çıkarıldığında sonuç pozitif çıkarsa.
·KESMEYE İZİN BAYRAĞI (INTERRUP FLAG)
Bu bayrak için INTERRUP MASK veya INTERRURPT ENABLE deyimi de kullanılır. I veya IF harfleriyle gösterilir. Dıştan gelen bir işaretle yürütülmekte olan programın kesilmesine izin verilirse kesme bayrağı "0" olur. I=1 olması halinde kesme işlemi gerçekleşmez.
1-ARİTMETİKSEL İŞLEMLER
Alu Tarafından Şu Aritmetiksel İşlemler Yapılabilmektedir:
· Toplama (Addition )
· Çıkarma ( Subtraction )
· Çarpma ( Multiplication)
· Bölme ( Dividing)
· Kıyaslama ( Compare)
· Artırma ( Incremeent )
· Eksiltme (Decrement )
· Tümleme ( Complement)
· Sağa kaydırma ( Shif Right)
· Sola kaydırma ( Sihf Left)
· Sağa döndürme ( Sihf Right)
· Sola döndürme ( Sihf Left)
Dört işlem dışındaki matematiksel işlemler, programa bağlı olarak, daha gelişmiş bilgisayarlarda dört işlemden hareket edilerek yerine getirilmektedir. Bütün bu işlemler teknolojik yapısı değişik KAPI ve FLİP - FLOP' lardan oluşan bir sistem tarafından yürütülmektedir.
ALU TARAFINDDAN BİR ARİTMETİKSEL İŞLEMİN YERİNE
GETİRİLMESİNDEKİ ESASLAR:
Saat ücreti 5 dolar (5$) olan bir işçinin, 20 saatlik çalışması sonucu, yüzde - on (%10) vergi kesintisi yapıldıktan sonra eline geçecek olan toplam ücretin hesaplanması sırasında, bilgisayarın BELLEK ve ARİTMETİK LOJİK İŞLEM BİRİMİ arasındaki VERİ akışı şematik şekil 3‘ de gösterilmiştir.
00 01 02 03 04 05
06 07 08 09 10 11
Cla 01 Mul 02 Sto 15 Mul 03 Sub 15
12 13 14 15 16 17
06
07
REGISTER ADDER 07 AKUMULATÖR
08
data from address
03
09
REGISTER 09 ADDER 09 AKUMULATÖR
data 10
from REGISTER 10 ADDER 10 AKUMULATÖR
address
15
Şekil 3- Aritmetik Lojik İşlem Birimi (ALU) Çalışma Prensibi
Gerekli işlemler için hazırlanmış olan PROGRAMIN bilgisayar girilmesiyle, işlemi yapılacak VERİ' ler VERİ BELLEĞİNE, işlemi yürütecek olan komutlarda KOMUT BELLEĞİNE kaydedilerek Şekil:4 te gösterilmiş olan numara sırasına göre işlemler yürütülmektedir.
· 06 program adresindeki CLA 01 komutu gereğince ALU'daki daha önceden kalan bilgiler temizlenir ve 01 adresindeki VERİ (20 saat ) akümülatöre kaydedilir
ClA komutu, Clear ( temizle ) ve Add (ilave et - yükle ) komutlarının kısaltılmışıdır.
· 07 adresindeki MUL 02 komutu gereğimce, 02 adresindeki VERİ (5$) kaydediciye (register) alınır. Buradaki kaydedici, GEÇİCİ KAYDEDİCİ (TEMPORARY REGİSTER) dir. Yine 07 adresindeki komut gereğince, Akümülatördeki 20 sayısı ve kaydedicideki 5 sayısı ADDER' alınarak çarpılır. Sonuç (100$) yine Akümülatöre yüklenir.
" MUL" ,Multiplied'in kısaltılmışıdır.
· 08 adresindeki STO 15 komutu gereğince Akümülatördeki bilgi ($ 100),15 nolu adrese depo edilir. Ancak Akümülatördeki sonuç bilgisi olan 100 yine Akümülatörde saklı kalır."STO",store (depola)kelimesinin kısaltılmışıdır.
· 09 adresindeki MUL 03 komutu gereğince , 03 adresindeki bilgide (% 10) kaydediciye alınır ve ADDER'a aktarılır. Yine 09 komutu gereğince Akümülatördeki bilgi ($100)ADDER'e alınır ve alınan iki sayı çarpılır. Sonuç ($ 10) yine Akümülatöre kaydedilir.
· 10 Numaralı adresteki komut (SUB 15) şunu ifade etmektedir.15 nolu adresteki bilgiyi kaydediciye yükle. Bundan Akümülatördeki sayıyı ($10) çıkarmak (SUBTRACTION)için gerekli işlemi yap. Bukaomut gereğince ADDER de 100 sayısından 10 sayısı çıkarılır ve sonuç sayısı olan 90 yine Akümülatöre yüklenir.
Başkada komut olmadığından AKÜMÜLATÖRDEKİ sonuç bilgisi 17 nolu ÇIKIŞ BELLEĞİNE aktarılır ve buradan yazıcıya (PRINTER) verilir.
ARİTMETİK LOJİK İŞLEM BİRİMİNCE TEMEL ARİTMETİKSEL İŞLEMLERİN GERÇEKLEŞTİRİLİŞİ
Aritmetik Mantık Birimi(ALU) bir takım kapı devrelerinden ve flip floplardan oluşmaktadır.
Kapı devreleri işlemlerin yürütülmesini sağlamakta, flip flop devrelerde sonuç bilgilerini depolamakta diğer bir deyimle kaydetmektedir. Klavyeden işlem yapılacak sayılar belirli bir programa göre, “HEXADECIMAL” veya ON TABANLI SAYI olarak girildiğinde, programda yer alan, topla, çıkart, çarp, böl gibi komutlara göre, makine dilinde yani iki tabanlı sayı sistemine göre gerekli işlemler yapılarak sonuç bilgileri ekrana verilmektedir.
Ancak, makine yapısının toplama işlemine uygunluğu nedeniyle, geliştirme çalışmaları sırasında diğer işlemlerin de toplama işlemine dönüştürülerek yürütülmesi yöntemleri araştırılmıştır. Bugünkü uygulama bu prensibe uygun olarak yapılmaktadır.
ALU Tarafından Aritmetiksel İşlemlerin Gerçekleştirilmesi
Bugüne kadar bilgisayarlarda temel işlem olan toplama ve çıkarma için üç işlem türü denenmiştir. Bunlar :
1-Sayıların işaret ve büyüklük olarak gösterilmesi yoluyla işlem:
Bu sistemde sayıların en solundaki bit (en yüksek değerli bit) +veya - işaretleri göstermektedir. Bu nedenle en soldaki bite İŞARET BİTİ adı verilmiştir. Buna göre pozitif sayıların işaret biti 0, negatif sayıların işaret biti 1’dir. Sayının değerini diğer bir deyimle büyüklüğünü gösteren kısım, pozitif veya negatif sayılarda aynıdır.
2-1’e tümleme yöntemiyle işlem :
1’e tümleme yönteminde, çıkarma işlemi toplama işlemine dönüştürülerek sonuç bulunmaktadır.
Bu yöntemde de sayılar yine işaret biti kullanılarak gösterilmiştir. Ancak çıkan sayının 1’e tümleyeni alınarak toplama işlemi yapılmaktadır. 1’e tümleme işlemi için sayının her bir bitinin tersi alınarak işlem yapılır. 1’e tümlemeyle işlem yönteminde, sıfırın bir normal “0” halinde gösterilişi ve bir de negatif sıfır olarak “1” halinde gösterilişi bulunduğundan bu durumun da bir takım karmaşa yaratması nedeniyle fazla uygulanmamıştır.
3-2’ye tümleme yöntemiyle işlem:
Bugünkü bilgisayarlarda uygulanan yöntemdir. Bu sistemde pozitif sayılar için “0” , negatif sayılar için “1” işaret biti kullanılmıştır.
2’ye tümleme yönteminde de çıkarma işlemi toplama işlemi haline dönüştürülmektedir. Bunun için çıkan sayının 1’e tümleyenine 1 eklenerek elde edilen 2’ye tümlenmiş sayı çıkarılan ile toplanır.
MİKROİŞLEMCİDE İŞLEM YÜRÜTEN DEVRELER
4 Bitlik Bir Aritmetik Mantık Biriminin Çalışma Prensibi
Şekil 4’te ,4 bitlik bir TTL 74LS 181 ALU’ nun Lojik Diyagramı verilmiştir. Şekilde görüldüğü gibi sistemin belli giriş ve çıkışları vardır.
|