İşlemciler (CPU) Nasıl Çalışır? Bir Bakalım

Marko Paşa

Suskun Nefer
Katılım
28 Şub 2006
Mesajlar
2,267
Reaction score
0
Puanları
0
Yaş
43
Konum
HackHeLL DownLoader Team
2qwdeon.jpg


İşlemciler (CPU) Nasıl Çalışır?

CPU'nun (Central Processing Unit, Merkezi İşlem Birimi), bilgisayarlarımızın temel parçası olduğunu rahatlıkla söyleyebiliriz. Bir sistemdeki herhangibir parça ne işe yararsa yarasın mutlaka işlemciye bağımlı olarak çalışır. Klavyedeki tuşlara her basışınız, yaptığınız her fare hareketi bile bir şekilde işlemciye uğrar. Kullandığınız işlemci, herşeyden önce sisteminizin performansını ve kullanabileceğiniz işletim sistemlerini belirler. Hatta çoğumuz bilgisayar alırken ilk önce işlemciyi belirleriz. Şimdi AMD - Intel savaşını bir yana bırakıp işlemcilerin nasıl çalıştığına bir göz atalım.



Mantık Kapıları ve Boolean Mantığı

Hangi işlemciyi kullanırsanız kullanın çalışma prensibi aynıdır: Bir işlemci elektriksel sinyalleri 0 ve 1 (ikili sistemle çalışan bilgisayarlarımız için anlamlı olan tek değerler) şeklinde alır ve verilen komuta göre bunları değiştirerek sonucu yine 0'lardan ve 1'lerden oluşan çıktılar halinde verir. Sinyal yollandığı zaman ilgili hatta bulunan voltaj o sinyalin değerini verir. Örneğin 3.3 voltla çalışan bir sistemde 3.3 voltluk bir sinyal 1, 0 voltluk bir sinyal de 0 değerini üretir.

İşlemciler aldıkları sinyallere göre karar verip çıktı oluştururlar. Karar verme işlemi her biri en az bir transistörden oluşan mantık kapılarında yapılır. Transistörler, girişlerine uygulanan akım kombinasyolarına göre devreyi açıp kapayabilen ve bu sayede de elektronik bir anahtar görevi gören yarıiletken devre elemanlarıdır. Modern işlemcilerde bu transistörlerden milyonlarca tanesi aynı anda çalışarak çok karmaşık mantık hesaplarını yapabilirler. Mantık kapıları karar verirken (yani akımın geçip geçmeyeceğini belirlerken) Boolean Mantığı'nı kullanırlar. Temel Boolean operatörleri AND (ve), OR (veya) ve NOT'tır (değil). Bu temel operatörlerle birlikte bunların değişik kombinasyonları kullanılır, NAND (not AND) gibi.

Bir AND kapısının 1 değerini verebilmesi (yani akımı iletebilmesi için) iki girişindeki değerin de 1 olması (yani iki girişinde de akım olması) gerekir. Aksi takdirde 0 değerini verecek; yani akımı iletmeyecektir. OR kapısında ise akımın iletilmesi için girişlerin ikisinde de akım olmalı veya ikisinde de akım olmamalıdır. NOT kapısı ise girşindeki değerin terisini çıkışına verir.



OR Kapısı


A B Q 0 0 0 0 1 1 1 0 1 1 1 1




AND Kapısı

A B Q 0 0 0 0 1 0 1 0 0 1 1 1



NOT Kapısı


A Q 0 1 1 0





NAND kapıları çok kullanışlıdır, çünkü bu kapılar sadece iki transistör kullanarak üç transistörlü AND kapılarından daha fazla işlevsellik sağlarlar.


NAND Kapısı

A B Q 0 0 1 0 1 1 1 0 1 1 1 0


Bunların yanında NOR (not OR), XOR (eXclusive OR) ve XNOR (eXclusive not OR) gibi değişik kapıların değişik kombinasyonlarından oluşan ve çok daha farklı aritmetik ve mantık işlemleri için kullanılan kapılar vardır.
Bu mantık kapıları dijital anahtarlarla beraber çalışırlar. Oda boyutundaki bilgisayarların zamanında bunlar bildiğimiz fiziksel anahtarlardı fakat günümüzde MOSFET (Metal-Oxide Semiconductor Field-Effect Transistor) denen bir çeşit transistör kullanılır. Bu transistörün basit ama hayati öneme sahip bir görevi vardır: Voltaj uygulandığında devreyi açarak veya kapatarak tepki verir. Genel olarak kullanılan MOSFET türü, üst sınırda veya ona yakın voltaja sebep olan bir akım uygulandığında devreyi açar, uygulanan voltaj 0'a yaklaşınca da devreyi kapatır. Bir programın verdiği komutlara göre milyonlarca MOSFET aynı anda çalışarak gerekli sonucu bulmak için akımı gerekli mantık kapılarına yönlendirir. Her mantık kapısı bir veya daha fazla transistör içerir ve her transistör akımı öyle kontrol eder ki, sonuçta devre kapalıyken açılır, açıkken kapanır veya mevcut durumunu korur.


AND ve OR kapılarının şemalarına bakarak nasıl çalıştıkları hakkında fikir sahibi olabiliriz. Bu iki kapıda iki sinyal alıp onlardan bir sinyal üretir. AND kapısından akım geçmesi için girişlerine uygulanan sinyallerinin ikisinin düşük de voltajlı (0) veya ikisinin de yüksek voltajlı (1) olması gerekir. OR kapısında ise giriş sinyallerinden birinin değerinin 1 olması yeterlidir akımın geçmesi için.
Her girişteki elektrik akışını o girişin transistörü belirler. Bu transistörler devrelerden bağımsız ayrı elemanlar değillerdir. Çok miktarda transistör yarı-iletken bir maddenin (çoğu zaman silikonun) üzerine yerleştirilip kablolar ve dış bağlantılar olmadan birbirine bağlanır. Bu yapılara entegre devre denir ve ancak bu entegre devreler sayesinde karmaşık mikroişlemci tasarımları yapılabilir.
Güncel işlemciler mikroskobik boyuttaki transistörlerin dirençler, kondansatörler ve diyotlarla bir araya getirilmesinden oluşan milyonlarca karmaşık mantık kapısından oluşur. Mantık kapıları entegre devreleri oluştururken entegre devreler de elektronik sistemleri oluşturur.

İşlemci nedir? İşlemci, ya da MİB (Merkezi İşlem Birimi) (ingilizce adı CPU - Central Processing Unit), bilgisayarın beyni diyebileceğimiz parçasıdır. Bilgisayarın gerçekleştirdiği işlemlere temel oluşturan hesaplamaları yapan parçadır.

Ne tür bir işlemci seçmeliyim? Seçeceğiniz işlemcinin modeli ve hızı (saniyede gerçekleştirebildiği işlem sayısı), bilgisayarınızla ne tür bir çalışma yapacağınızla ilgilidir. Özellikle grafik kalitesi yüksek oyun ya da mimarlık ve mühendislik programları, bu yüksek kaliteli grafikleri ortaya çıkarmak için yüksek işlemci kapasitesine ihtiyaç duymaktadırlar. İşlemcinizi seçmeden önce yapacağınız en doğru şey, bilgisayarını sizin kullanacağınız amaçla kullandığını düşündüğünüz arkadaşlarınızın işlemcilerinin performanslarından memnun olup olmadıklarını araştırmaktır. Sizin için en sağlıklı bilgiyi ortaya koyacak olan bu tür bir tecrübedir.

İşlemci Nedir?
İşlemci normal bir bilgisayarın kalbidir, masaüstü, sunucu yada taşınabilir olması fark etmez. Kullandığınız işlemci bir Pentium, Athlon, PowerPC, Sparc yada herhangi bir şey olabilir fakat hepsi aşağı yukarı aynı şeyi aynı yoldan yaparlar. Oyun oynarken veya bir yazı yazarken işlemcilerin çalışma şeklini ve sayısal mantığın nasıl işlediğini merak ediyorsanız okumaya devam edin.

Tarihçe
İşlemci yada diğer ismiyle CPU (central processing unit - merkezi işlem birimi) aslında bir yonga (chip) üzerine yerleştirilmiş bir hesap makinesinden başka bir şey değildir. İlk işlemci Intel 4004 1971 üretildiğinde çok güçlü değildi. Yapabildiği tek şey toplama ve çıkarmaydı ve bir kerede sadece 4bit işlem yapabiliyordu. Fakat her şeyin bir yonga üzerine sığdırılmış olması o zamanlar için gerçekten bir başarıydı. 4004'ün üretiminden önce mühendisler bilgisayarları çok sayıda yonga ve parçaların birleşiminden yapabiliyorlardı. 4004 ilk taşınabilir elektronik hesap makinesine hayat verdi.

Ev bilgisayarları için kullanılan ilk işlemci Intel 8080'di. 1974 yılında üretilen bu işlemci 8bit'lik bir yongaydı. Fakat piyasalar asıl etki yapan işlemci yine Intel'in 8088 adlı işlemcisiydi ve bu işlemci 1979 yılında üretildi. IBM PC makinelere hayat veren bu işlemci tam olarak adını 1982 yılında duyurmaya başladı. Eğer bilgisayarlarla biraz ilgiliyseniz PC pazarının 8088'den 80286 oradan 80386, 80486, Pentium, Pentium II, Pentium III ve son olarak Pentium 4'e geçtiğini bilirsiniz. Bütün bu işlemciler Intel tarafından üretildi ve hepside temelde 8088 tasarımının geliştirilmesiyle ortaya çıktı. Günümüzde kullandığımız Pentium 4, 8088'lerdeki her hangi bir kodu çalıştırabilir fakat 5000 kez daha hızlı!

Tarih, işlemcinin ilk üretildiği tarihtir. Çoğu işlemcinin daha sonra daha hızlı versiyonları da çıkmıştır.
Mikron, yonga üzerindeki en küçük kablonun genişliğidir. Karşılaştırmak için insan saçının 100 mikron kalınlığında olduğunu söyleyebiliriz. Yonga üzerindeki kablo kalınlığı azaldıkça transistör sayısının arttığını görebiliriz.
Saat Hızı, yonganın ayarlanabildiği en yüksek saat hızıdır. Bir sonraki bölümde ayrıntılı olarak incelenecektir.
Veri Genişliği, işlemcinin ALU (arithmetic/logic unit - aritmetik/mantık birimi) biriminin genişliğidir. 8 bitlik bir ALU 2 adet 8 bitlik sayı üzerinde topla, çıkarma, çarpma, bölme yapabilirken, 32 bitlik bir ALU 32 bitlik 2 sayı üzerinde aynı işlemleri yapabilir. 8 bitlik bir ALU 32bitlik 2 sayı üzerinde 4 seferde işlem yaparken, 32 bitlik bir ALU aynı işlemi 1 kerede yapabilir. Genellikle dış veri yolu genişliği ALU veri genişliğiyle aynı olur. Fakat 8088 işlemciler 16 bit ALU' ya sahipken 8 bit veri yolları vardı. Modern Pentiumlar ise 32bit ALU' ya 64 bit veri yoluyla hizmet sunarlar.
MIPS, "millions of instructions per second" yani saniyede yapılan işlem miktarıdır ve işlemcinin performansı hakkında genel bir bilgi verebilir. Günümüzde işlemcilerde kullanılan farklı teknikler bu MIPS değerinin önemi azaltsa da, genel anlamda işlemci performansıyla ilgili bilgi verebilir.
Yonga, genellikle küçük, ince bir silikon parçası üzerine asitle oyularak yerleştirilen transistörlerin oluşturduğu bütünleşik devredir. Bir yonga 2-3 cm büyüklüğe milyonlarca transistör sığdırılarak üretilir.
Yukarıda ki tablodan saat hızıyla MIPS arasında bir bağlantı olduğunu görebilirsiniz. En yüksek saat hızı yonganın üretim teknolojisine bağlıdır. Ayrıca transistör sayısı ve MIPS arasında da bir bağlantı vardır. Örnek olarak 8088 işlemci 5 Mhz hızında çalıştığı halde 0.33 MIPS (yaklaşık olarak 15 saat turunda 1 işlem) yapabilmektedir. Günümüzde ise modern işlemciler yaklaşık olarak her saat turunda 2 işlem yapabilmektedir.

İşlemcilerin İç Yapısı? İşlemcilerin nasıl çalıştığını anlamak için iç yapılarını bilmek ve üretim teknolojilerinin arkasında ne yattığını bilmek yardımcı olabilir. Bu aşamada assembly dilini ve mühendislerin işlemci hızlarını artırmak için neler yaptığını öğrenebilirsiniz.

Bir işlemci belli bir işlemi yapabilmek için belli bir talimat dizisi çalıştırır, bunu yaparken üç şey yapar:
Bir işlemci ALU birimini kullanarak toplama, çıkarma, çarpma ve bölme gibi matematiksel işlemler yapabilir. Modern işlemciler üzerlerinde daha karmaşık işlemler yapabilmek için kayar nokta işlemcisi (FPU- floatin point processin unit) bulundururlar.
Bir işlemci bir bellek adresindeki veriyi başka bir bellek adresine gönderebilir.
Bir işlemci kararlar verip o kararları uygulamak için yeni talimatlar dizisine atlayabilir.
Bir işlemci çok karışık işlemler yapabilir fakat asıl olan 3 temel işlem vardır. Aşağıda ki akış şemasında bu temel üç işi yapabilen çok basit bir işlemci görüyorsunuz.

2a5aadl.gif


Şekilde görülen en basit işlemcinin sahip olması gereken olmazsa olmaz parçalar:
Adres yolu (8 bit , 61 bit ve 32 bit olabilir) belleğe adres gönderebilmek için.
Veri yolu (8 bit , 61 bit ve 32 bit olabilir) belleğe veri gönderip almak için.
RD (read - okuma) hattı ve WR (yazma - hattı) belleğe veriyi göndermek mi yoksa okumak mı istediğini belirtmek için.
Saat hattı, saat vuruşlarını sisteme göndermek için.
Sıfırlama hattı, yazılım sayacını sıfırlamak ve yürütmeye yeniden başlamak için.
Bu örnek için adres yolu ve veri yolunu 8 bit olarak kabul edelim. Şimdi bu basit işlemcinin parçaları:
Kütük (register) A,B ve C basitçe flip-flop devrelerden oluşan kilitlerdir.
Adres kilidi (latch) ise kütük A,B ve C ile aynıdır.
Yazılım sayacı ise, emir geldiği zaman 1'lik bir artış sağlayabilen basit bir kilittir.
ALU sadece 8 bit sayıları toplayabilecek kadar basit olabileceği gibi, toplama, çıkarma, çarpma ve bölme yapabilenleri de vardır.
Deneme (test) kütüğü üzerinde değer tutabilen özel bir kilittir ve ALU tarafından yapılan karşılaştırmalarda kullanılır. ALU iki sayıyı bu kilit sayesinde karşılaştırabilir ve birbirine eşit mi yoksa hangisinin daha büyük olduğuna karar verebilir. Deneme kütüğü ayrıca bir toplama işleminde oluşan elde sayıyı tutmak içinde kullanılabilir. Bu kütük verileri flip-flop devrelerde saklar ve sonra talimat çözücüsü bu verileri karar vermekte kullanır.
Şekilde "3-State" adı altında 6 kutucuk görüyorsunuz. Bunlara üç durum tamponu (tri-state buffer) denir. Bir üç durum tamponu üzerinden 1, 0 geçirebilir veya gerektiği takdirde kendini sistemden ayırabilir. Bir üç durum tamponu çoklu sonuçların bir kabloya bağlanmasını sağlar.
Talimat kütüğü ve talimat çözücüsü ise diğer bileşenlerin denetlenmesinden sorumludur.
Ayrıca bu şekilde gözükmeyen başka hatlarda vardır:
A kütüğüne veri yolundaki değeri kilitlemesini söyle
B kütüğüne veri yolundaki değeri kilitlemesini söyle
C kütüğüne veri yolundaki değeri kilitlemesini söyle
Yazılım sayacı kütüğüne veri yolundaki değeri kilitlemesini söyle
Adres kütüğüne veri yolundaki değeri kilitlemesini söyle
Talimat kütüğüne veri yolundaki değeri kilitlemesini söyle
Yazılım sayacına değeri bir arttırmasını söyle
Yazılım sayacına yeniden başlamasını söyle
Altı üç durum tamponundan birine çalışmasını söyle (Bunun için altı ayrı yol kullanılır)
ALU' ya hangi işlemi yapacağını söyle
Deneme kilidine ALU' nun deneme değerlerini tutmasını söyle
RD (okuma) hattını etkinleştir
WR (yazma) hattını etkinleştir
Talimat çözücüsüne gelenler ise deneme kütüğünden, saat hattından ve talimat kütüğünden gelir.​
 
Geri
Üst