16 bitlik İşlemciler 16 bitlik işlemciler basit olarak 8 bitlik işlemciler gibi •Kaydedici •ALU •Zamanlama/kontrol Birimlerine sahiptirler. Fakat mimari yapıları çoklu görev (multitasking) ortamına uygun hale getirildiğinden, işlemci içerisindeki bölümler fonksiyonel açıdan iki mantıksal ana bölümde açıklanabilirler. 1. Veri yolu bağdaştırma birimi( Bus interface Unit) 2. İcra birimi (execution unit) D7 1 16 bitlik İşlemciler BIU birimi EU birimini veri ile beslemekten sorumlu iken icra birimi komut kodlarının çalıştırılmasından sorumludur. BIU bölümünde; • Segment kaydediciler • IP- Instruction Pointer • Komut kuyrukları • Veri alıp getirme birimleri varken EU bölümünde • Genel amaçlı kaydediciler • Kontrol birimi • Ve ALU bulunmaktadır. D7 2 EU BIU GPR’s Segment kaydedicileri AH AL BH BL CH CL CS DH DL DS SI SS DI ES BP IP SP VeriYolu Kontrolü ve adres üretimi Mantıksal olarak ayrılmış bu iki bölüm chip üzerinde fiziksel olarak birbirine bağlı durumdadır. Sistem veri Yolu ALU Komut Kuyruğu Bayraklar Kontrol Birimi 3 BIU:(Bus Interface Unit) İşlenecek komutların kodları sistem tarafından bellekte ilgili segmentlerdeki adreslere yerleştirilir. Bellekteki bu komutlar çalıştırılacağı zaman doğrudan veriyolu bağdaştırma birimi tarafından bellekten alınarak kod çözme birimine getirilirler. 4 Aynı şekilde icra edilen bir komutun sonucu belleğe yazılacağı zaman veri yolu bağdaştırma biriminden geriye yazma talep edilir. Verinin bellekten alınıp getirilmesi ve tekrar depolanması gibi işlemlerde ençok çalıştırılan iki komut LOAD ve STORE komutlarıdır. İcra birimi (EU) komutlarıyla, verinin alınıp getirilmesi veya belleğe depolanması sırasında veriyolu bağdaştırma birimi otomatik olarak getirilen verilerdeki komutları komut kuyruğuna yerleştirir. Komut kuyruğuna bazen tamponda denilir. Ve işlemciye göre kapasitesi değişir. 5 Bellekten alınıp getirilip işlenecek bu komutların yeri CS:IP (code segment- Instruction Pointer) kaydedici ikilisi tarafından tutulur. Bellekte işlenecek ilk komutun bulunduğu adres bu birim tarafından otomatik olarak CS:IP kaydedicilerine yerleştirilir. Bu ilk komutla birlikte sıradaki komutlar komut kuyruğunun kapasitesine göre BIU tarafından alınıp getirilip sıraya konulurlar. 6 Sıradaki bu komutların işlenmesiyle birlikte bellekten veri alıp getirmek için kuyruk veya kanal kapasitesi kadar beklenmeyecek hemen sıradan alınıp icra birimi tarafından işlenecektir. Bellekten veya I/O birimlerinden her ne yöntemle olursa olsun bir şekilde komut kuyruğuna getirilen komut kod veya operand bilgileri icra birimi tarafından işlenmek için hazır durumdadır. 7 İCRA BİRİMİ Bu birim BIU ile birlikte paralel çalışarak komut kuyruğuna sürülen makine dilindeki komutların kodunun çözülmesi ve işlemci içerisindeki her bir komutun doğru bir biçimde ele alınarak işlenmesinden sorumludur. Eğer komutun işlenmesi sırasında herhangi bir veriye gerek duyulursa; Veri GPR lardan birisinde ise alınıp getirilmesini Harici ortamda ise (bellek veya çevresel cihazlar) BIU’dan bu verinin talep edilmesi gibi işlemleri EU yapar. 8 EU, komut kuyruğunun en üstündeki komut kodunu alıp getirdikten sonra, kodlar bir komut kod çözücüsü vasıtasıyla kodları çözülerek ALU’ya gönderilir. Eğer kodu belirlenen bir komut aritmetik veya mantık komutuysa, icra birimindeki adres üreteci vasıtasıyla BIU uyarılarak, bellekten veri alıp getirerek icra birimindeki kaydedicilere veya doğrudan ALU’ya yollar ve kontrol biriminin denetiminde bu veriyle ne yapılması gerekiyorsa o yapılır. 9 Eğer büyük değerlikli ve kesirli sayılar varsa FPU birimine gönderilir. ( küçük değerlikli sayılar ve mantıksal komutlar için ALU yeterlidir.) Komutlar işlendikten sonra sonuç bilgisi nereye depolanacaksa, (bir kaydedici veya bellek alanına) oraya gönderilir. Bir komutun işlenmesinden sonra komut kuyruğunda bulunan sıradaki komutun ele alınması için kontrol birimi sinyal gönderir. 10 KAYDEDİCİLER İşlemci içerisinde çeşitli verilerin manevrasında kullanılmak üzere 14 özel amaçlı kaydedici vardır. Bunlar fonksiyonlarına göre 4 gruba ayrılırlar. 4 tanesi segment kaydedicisi 3 tanesi işaret kaydedicisi 2 tanesi indis kaydedicisi 4 tanesi GPR 1 tanesi Bayrak kaydedicisidir. 11 EAX EBX ECX EDX ESI EDI ESP EBP EIP EFLAGS AH BH CH DH SI DI SP BP AX BX CX DX IP Bayraklar AL BL CL DL Akümülatör Taban adres İndisçisi Sayıcı/Sayaç Veri Kaynak indisçisi Hedef indisçisi Yığın işaretçisi Yığın Taban indisçisi Komut İşaretçisi Bayraklar CS DS ES SS Kod segment Data Segment Extra Segment Yığın Segment FS GS Extra Data segmentleri 12 Segment kaydedicileri Gelişmiş mikroişlemcili sistemlerde, kullanılan bellek adresleri günümüzde iki parça halinde ifade edilirler. Segment Ofset adresleri Bunun sebebi, büyük kapasiteli belleklerde bilginin yönetimi (yüklenmesi saklanması ve sırasını beklemesi)oldukça karmaşıktır. 13 Bu sebeple büyük bellekler belli amaçlarla 64 KB’ lık küçük gruplara (segment) ayrılarak daha kolay yönetilirler. Bellekte bu bölümlerin başlangıç adresleri segment kaydedicilerinde tutulur. Bu bölümdeki verilerin adresleri ise segment kaydedici içeriğine uzaklığıdır ve ofset adres olarak saklanır 14 Örnek: Bir okulda A,B,C blokları bulunsun. Bu bloklarda 01… 20 ye kadar sınıflar bulunsun . 05 no’ lu sınıf dendiğinde eksik adres bildirilmiş olur. Gidip her bloktaki 05 nolu sınıf taranmalıdır. Eğer A blok 05 nolu sınıf diye adres verilirse kesin adres bilgisi verilmiş olur. A,B,C segment 01…20 ise ofset adreslerine karşılık gelir. 15 Segmentlere adları, gösterdikleri bellek alanlarının oluşumuna göre özel amaçlı olarak verilmiştir. Buna göre, programcı tarafından yazılan komut kodlarının assemblere bağlı olarak sistem tarafından bellekte saklandığı adreslere Kod segment (code segment) adı verilir. Kod segmentteki komutlarla ilgili olan veya bu kodların işleyeceği verilerin saklandığı bölüme data segment adı verilir. Verilerin çok büyük olduğu istatistiksel bilgilerin tutulduğu data segmentinin yetmediği durumlarda kullanılan segmente extra segment adı verilir. 16 F ve G segmentleri 386 + işlemcilerde artan bellek nedeniyle görülen ihtiyaç üzerine eklenmişlerdir. Mikroişlemcilerde komutların işlenmesi sırasında kaydedicilerin yetersiz geldiği durumda verinin geçici olarak atıldığı bölüme Yığın segmenti (stack segment) adı verilir. Bellekteki bu bölümlerin başlangıç adresleri kendi adlarıyla işlemci içerisinde yer alan kaydedicilerde tutulur. 17 Kod Segment Kaydedicisi Kod segment, bellekte çalıştırılacak komutların bulunduğu bölümdür. Programcı tarafından yazılan programların kodları assemblere (derleyicilere) bağlı olarak sistem tarafından, komut kodu önce operandı sonra konulacak şekilde bu bellek birimine sıralanır. İşlenecek olan komutun kodu bu kaydedicinin gösterdiği adresten BIU tarafından alınarak komut kuyruğuna atılır. Bilgisayar ilk açıldığında ilk işlenecek komut bu segmentin başındadır. Segmentin başlangıç adresini kısaca CS denilen kod segment kaydedicisi gösterir. 18 Bu kaydedici otomatik olarak bir sonraki komutun alınıp getirilmesi için kontrol birimi tarafından yönetilir. Ve programcı buna genelde müdahale edemez. Ve değiştiremez. Eğer değiştirmeye çalışırsa program akışı değişebilir ve kilitlenmeler meydana gelir. Eğer uzun program yazımından dolayı kod alanı büyüklüğü (64KB) yetmiyorsa programda model bölümünde bellek tanımlaması değiştirilerek değişik adlarla birden fazla kod alanı tanımlanabilir. 19 DATA Segment Kaydedicisi Normalde işlenecek verinin depolandığı bellek alanının başlangıç adresini gösterir. Diğer segment kaydedicileri gibi tam adresin segment tarafını gösterir. Sistemdeki veriler genelde ilk veri segmenti olan data segmentinde depolanır. Kısaca DS olarak adlandırılan data segment kaydedicisi data segmentinin ilk adresini gösterir. 20 Bu alana sabit değerler, stringler değişkenler ve matris şeklindeki veriler depolandığından bunlara erişim için sadece DS kaydedicisi yetmez. DS ile birlikte verilerin adresini göstermede BX veya SI kaydedicisi yada etiket adresleri ofset adresi olarak kullanılabilir. DS:BX veya DS:SI etkin adres çiftleri iyi bir tanımlama oluşturur. Bu segmente de ayrılan alan yetmezse önce extra segment sonra da F veya G segmentleri kullanılır. 21 Extra Segment Kaydedicisi ES olarak adlandırılan bu kaydedici programcı tarafından tanımlanmadıkça işlemci bunu kullanmaz. Genellikle string (harfdizi) işlemlerinde hedef adresi olarak algılanır. Harfdizi işlemleri bellekte fazla yer kapladıkları için kaynakla hedef arasında bir ayırım yapmak gerekirse kaynak veriler data segmentinde, sonuçlar extra segmentte tutulur. Extra segment string işlemlerinde kullanılırken ofset adreslerini genelde BI kaydedicisi üzerine alır. 22 Yığın Segment Kaydedicisi Kısaca SS olarak bilinen bu bellek, bir takım veri işlenirken yer yokluğundan veya kaydedici yetersizliğinden dolayı verinin geçici olarak yerleştirildiği yerdir. SS kaydedicisi yığın alanının ilk adresini gösterirken, ofset adresini SP ve yığın indisçisi olarak BP gösterir. 23 Genel Amaçlı Kaydediciler Genel amaçlı kaydediciler, mikroişlemcide program komutlarının icrası sırasında verilerin manevrasında kullanılan ve yapısal olarak en küçük bölümü 8 bitlik bellek hücresine benzeyen elektronik elemanlardır. GPR lar kendi aralarında yaptıkları işe göre iki gruba ayrılır. Birinci EAX, EBX, ECX, EDX, ESI, EDI VE EBP İkinci Grupta Çok Amaçlı Kaydediciler Grupta Özel Amaçlı Kaydediciler ESP, EIP VE BAYRAK kaydedicileri yer almaktadır. 24 386 işlemcilere kadar bu kaydediciler; AX, BX, CX, DX şeklinde 16 bit olarak işlem görmüşlerdir. 8 bitlik olarak daha küçük parçalara bölünebilirler. AH, AL, BH, BL, CH, CL, DH VE DL gibi… AX serisi kaydediciler 16 bitlik verilerin saklanmasında EAX serisi kaydediciler 32 bitlik verilerin saklanmasında kullanılmaktadırlar. X’in manası High (H) ve Low(L) değerlerinin birlikte kullanımını, E ise extended (genişletilmiş) anlamına gelmektedir. 25 EAX EBX ECX EDX ESI EDI ESP EBP EIP EFLAGS AX BX CX DX SI DI SP BP IP Bayraklar 26 AX kaydedicisi Akümülatör, AX kodu ile tanımlanır. Verilerin ilk ele alınmasında başrol oynadığından baş kaydedici olarak düşünülebilir. 8, 16 ve 32 bitlik verilerle çarpma, bölme, bazı I/O işlemlerinde ve bazı harf dizi işlemlerinde etkin bir biçimde kullanılmaktadır. 27 BX kaydedicisi Taban adres kaydedicisi olarak bilinen ve BX koduyla tanımlanan kaydedici, bellekteki veri gruplarının ofsetinin tutulmasında bir indisçi gibi davranır. Verilerin adreslenmesinde kullanılmaktadır. 28 CX kaydedicisi • Sayaç kaydedicisi olarak bilinen CX, string işlemlerinde bir sayaç elamanı veya döngü işlemlerinde tekrarlama sayıcısı gibi görevleri yerine getirirler. 29 DX kaydedicisi Data kaydedicisi diye tanımlanan DX, genellikle akümülatöre yardımcı olan ve bütün işlemlerde bir tampon gibi davranan kaydedicidir. I/O işlemlerinde port numarasını üzerinde tutarken, büyük değerlikli sayıların (worddoubleword) çarpılması ve bölünmesinde AX ile birlikte kullanılır. 30 İŞARETÇİ VE İNDİS KAYDEDİCİLERİ Mikroişlemcili Sistemlerde bellekteki ara adresleri gösteren kaydedicilere İŞARETÇİ (POİNTER ) DENİR. KOD segmentte bulunan bir komutun yerinin belirlenmesinde CS kaydedicisine ofset değerini bulmada komut kaydedicisi (IP) yardımcı olur. CS:IP çifti, kod segmentteki bir sonraki işlenecek komutun kodunu gösterir. 31 Ayrıca yığın bölgesindeki bir verinin yerinin belirlenmesinde yığın kaydedicisi ile birlikte ofset değeri olarak SP ve BP yardımcı olur. SS:SP çifti, yığındaki boş bir alanı veya daha önceden atılmış bir veri yerinin gösterilmesinde kullanılır. Source ındex(SI; Kaynak İndisçisi) ve Destination Index (DI) kaydedicileri adres indislemesinde kullanılır. Bu indis kaydedicileri özellikle string işlemlerinde fazlaca kullanılır. 32 BAYRAK KAYDEDİCİSİ Bu kaydedici, bütün mikro işlemcilerde olduğu gibi tipine bağlı olarak 8,16,32 bit olmak üzere bir işlemin sonunda sonucun ne olduğunu kaydedici bitlerine yansıtan bir bellek hücresini oluşturur. BAYRAK denmesinin nedeni, karar vermeye dayalı komutların yürütülmesinde sonuca göre daha sonra ne yapılacağını bit değişimiyle bu kaydedicinin 1 bitlik hücrelerine yansıtmasıdır. Kaydedicideki bitlerin mantıksal 1 olması bayrak kalktı, 0 olması bayrak indi anlamındadır. Karşılaştırma ve aritmetik komutların çoğu bayraklara etki eder. 33 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL O D I T S Z P A C Durum Bayrakları C :Carry (elde) P :Parity(Eşlik) A :Auxiliary carry (ara elde) Z :Zero(sıfır) S :Sign(İşaret) O :Overflow(Taşma) Kontrol Bayrakları T : Trap (tuzak biti) I :Interrupt Enable( Kesme Yetkisi) D : Direction(yön Biti) Özel alan Bitleri IOPL :I/O privilige Level (G/Ç Muafiyet Düzeyi) NT : Nested Task (İç içe görevler) 34