Ana içeriğe atla

İşlemcilerin Üretimi


Çoğu insan kenarlarından ufak iğnelerin çıktığı dörtgen parçanın işlemci çipi olduğunu sanır. Aslında bu yanlıştır. Bilinen bu şey çipi saran plastik parçanın kendisidir. Asıl çip bu plastiğin içerisinde tırnak büyüklüğü kadar bulunan üçgen şeklindeki minik bir silikondur.


Moore Kanunu...

Çipler FAB (Fabrication Plant-Üretim Tesisi)'larda hazırlanır. Bir çip üretmek için kurulması düşünülen fab'ın maliyeti 1 milyon dolardan fazladır. Bu fab'larda tozların imalat sürecine zarar vermemesi için süper filitrelerle donatılmış temiz odaları bulunur. İşçiler de toz geçirmeyen kıyafetler giyer. (Intel reklamlarından aşina olduğumuz tavşan kılıklı kıyafetler) Üretim tesisi, minyatürize litografi tekniği ile milyonlarca transistörü wafer (gofret) denilen silikon tabakasının üzerine kazır. Hassas makineler her silikon dilimini düzinelerce ya da yüzlerce kalıba (çipe) ayırır. Günümüz çiplerinde silikon ve metalden oluşan birkaç tabaka bulunur. Metal tabakalar iletken, silikon tabakalar ise yarı iletkendir. Yarı iletkenler, üzerlerinden geçen sinyallere bağlı olarak, yalıtkan ya da iletken davranırlar. Bu zaten transistörlerin çalışma mantığıdır. Bunu anlamak için biraz elektronik bilgisi gerekir.


Teknolojik ilerlemeye bağlı olarak transistörlerin de boyları küçüldü. 2001 yılı verilerine göre üretilen transistörlerin büyüklüğü 0.18 mikron kadardır. Bir saç kalınlığının 100 mikron olduğunu düşünürsek karşımıza bayağı ufak bir şey çıkar. Bu anlamda ufalan transistör büyüklüğü bir çipin içine sığdırılacak transistör sayısını arttırır. CPU tarihini incelendiğinde, bir işlemci çipinin kalıbına sığdırılan transistör sayısının, her 18 veya 24 ayda bir ikiye katlandığını görülür. Bunu işlemci kronolojisi bölümünde verilen tabloya bakarak inceleyebilirsiniz. Söz konusu bu trende Moore Kanunu denir.


Üretim işleminin her yeni kuşağında daha güçlü, daha hızlı az enerji harcayan, daha ucuz çipler imal edilmektedir. Bu durumun en az 10 yıl daha böyle devam etmesi beklenmektedir. Söz konusu verilen zamanın ötesinde fiziksel problemler görülmektedir. Ama bakalım yeni teknolojiler yeni çözümler getirebilecek mi


İşlemci Üniteleri...

Esasen mikro işlemciler, açma kapama düğmeleri gibi çalışan milyonlarca transistörden oluşur. Elektrik sinyalleri, yazılmış bir program önderliğinde mikro işlemcide değişik sinyallere dönüştürülmektedirler. Bu işlemler Binary düzeyinde temel matematiksel işlemlerle yapılır. Bunlara Bit denir. CPU bu Bitler üzerinde işlem yapabilmek için temel bir yazılıma ihtiyaç duyar ki bu söz konusu temel yazılım mikro işlemcinin çalışması için gereklidir. Bu yazılım veya program bir komut listesinden ibarettir ve işlemcinin içindedir. Bu komutlar duruma göre toplama işlemini yapabilir veya Conditional Branch ile cevap verebilir. Komutları yerine getirme işini ise işlemci içinde bulunan uygulama ünitesi (Execution Unit) veya fonksiyon ünitesi (Function Unit) sağlar. Modern işlemcilerde değişik komutların işlenmesi amacıyla birden fazla fonksiyon ünitesi bulunmaktadır. Bundan başka işlemci içinde tamsayı (Integer) işlemlerini yapan aritmetik/mantıksal ünitesi (Arithmetic /Logic Unit) ve küsuratlı sayı işlemlerini yapan kayan nokta ünitesi (FPU-Floating Point Unit) bulunmaktadır. Bir işlemcideki fonksiyon ünitesi ne kadar çoksa çalıştırılabilecek komut sayısı da o kadar çoktur.


İşlemci Mimarileri...

Mikro işlemciler, mimari (Architecture) sınıfınca gruplandırılırlar. Ortak mimariye sahip işlemciler, aynı komutları tanıdıkları için, aynı yazılımı çalıştırabilirler. Bir işlemcinin tanıdığı komutlar seti, o işlemcinin mimarisinin özelliğini belirleyen en büyük kriterdir. Bir başka özellik de register seti (register set) veya register grubu (register file) olarak bilinir.


Intel ilk x86 çipi olan 8o86©yı 1978 yılında çıkardı. O zamanlarda x86 modeli 6 kuşak evrim geçirdi. (Pentium II, III altıncı kuşak Pentium Pro'nun varyasyonlarıdır) Söz konusu çipteki bu gelişmeler;kronoloji bölümünde tablo olarak verilmiştir. Diğer şirketler de x86 ile uyumlu işlemciler üretmektedirler. Bunlar üstteki tabloda gösterilen AMD, CYRIX (National Semiconductor'a ait), CENTAUR TECHNOLOGY (IDT'nin İştirakıdır) ve RISE TECHNOLOGY. Diğer mimariler ise şöyle sıralanmaktadır: PowerPC, Digital, Compaq, Silicon Graphics'in Mips Rxooo serisi, HP (Hewlett Packard)... vs. bu mimarilerin hiç biri ne kendi aralarında ne de x86 ile uyumlu değillerdir.


Mimariler ortaya çıktıkları dönemin hakim dizayn felsefesini yansıtırlar. X86'nın dünyaya geldiği 1970'lerde, veri saklama cihazları ve hafıza bugünün standartlarına göre çok kısıtlıydı. Bu kaynakları tasarruflu bir şekilde kullanabilmek için CISC diye bilinen bir mimari benimsendi.


1980'lerin sonuna gelindikçe hafızayı tasarruflu kullanma konusu önemini yitiriyordu. CISC'in kısıtlamaları da mühendislerin ellerini kollarını bağlıyordu. Bu sebepten dolayı CISC'a rakip olarak RISC ortaya çıkmıştır. RISC'in sağladığı özellikler sayesinde fetch (komutu hafızaya taşıma), decode (komutun anlamını çözme) ve komutu çalıştırma işlemleri daha kolay yapılmakta idi. RISC'in kötü bir özelliği ise tüm komutları 32 bit olarak kabul etmesidir. Bu durumda 32 bitten kısa olan komutlar daha uzun gözükmektedir ve daha fazla hafıza gerektirmektedir.


RISC komutları sabit bir zaman diliminde işlem görmektedir. Bu da Süperskalar Pipelining özelliğini kullanan işlemciler için önemli bir özelliktir. Pipelining seri üretim yapan bir fabrika tekniği ile çalışır. Basit bir pipeline'da 5-6 aşama olabilir. Süperpipeline'da ise en az 10 aşama bulunur. Bu sayede birden fazla komut birden fazla aşamada işlem görebilmektedir. RISC bu teknige daha uygundur. Çünkü basitleştirilmiş komutlar pipeline'dan pürüzsüz bir şekilde akarlar ve CISC'ın neden olabildiği tıkanmalara yol açmaz. RISC işlemcilerinin başka avantajları da vardır. mesela register‘ları ve register grupları daha büyüktür. Ama bu biraz RISC'in, CISC işlemcilerinin dizayn edildigi zaman mevcut olmayan teknolojik ilerlemelerden yararlanmasindan kaynaklanmiştir.


RISC ve CISC birbirleriyle taban tabana zit degillerdir. Modern CISC işlemcilerinde RISC ilkelerinden bazilari kullanilir. Mesela Intel ve AMD'nin altınca kuşak işlemcileri, karmaşık komutları süperscalar pipeline'larda çalıştırmadan önce bunları daha basit, RISC'e benzer komutlara çevirirler.


İşlemcilerin Seçimi...

Bilgisayar almak isteyenler bu kadar işlemci karşısında ne yapacaklarını bilmezler. Öyle ki şu anda iki düzineden çok fazla seçeneğe sahipsiniz. Intel'in rakipleri, ilgi çekmek için ürettikleri çiplerin fiyatlarını Intel'inkilere göre önemli miktarlarda düşürmek zorunda olduklarindan bu durum onlari degerli kiliyor. Rekabet Intel'in üzerindeki fiyat kırma baskısını arttırdığından, piyasadaki tüm fiyatların düşmesine de neden oluyor. Böylece geniş işlemci seçenekleri arasında size uygun olan fiyat/performans oranını seçebiliyorsunuz. Yine de en iyi işlemciyi seçmede sizi pek çok tuzak bekliyor. Bu işlemcilerin bilgisayara takılması pek anlam ifade etmemekte. Çünkü her işlemci bir uygulamadan bir diğerine bayağı farklılık gösteriyor.


İşlemcilerin Hızları...

Mikro işlemci hızları genelde Mhz (MegaHertz) olarak ifade edilirler. Bir işlemcinin xxx Mhz hızında çalışması demek iç saatinin saniyede xxx milyon çevrim yaptığının göstergesidir. Saat frekansları işlemcinin performans ölçümünden çok motor devir göstergesidir. Bu rakamlar ancak aynı mikro mimariye sahip işlemcilerin karşılaştırılmasında geçerli olabilirler. Yoksa Pentium 200 Mhz ile Pentium Pro 200 Mhz aynı olurdu. Ama mikro mimarileri farklı olduğundan Pro daha hızlı çalışmaktadır.


Dizayn mühendisleri performansı daha arttırmak için branch prediction, speculative execution gibi teknikler kullanarak daha büyük ön bellek (cache) hafızalarına başvururlar. Branch prediction bir nevi kumardır. Programın karar verme noktasına ulaştığında kullanıcının vereceği kararı önceden kestirmeye çalışmasıdır. Static yöntemlerde her zaman aynı mantık yürütülür ve %50'den fazla ihtimal değerlendirilerek sonuca ulaşılır.


Daha gelişmiş işlemciler ise dinamik branch yöntemini uygulayarak kullanıcının önceden vermiş olduğu kararları değerlendirerek bir karar ulaşırlar. Speculative execution ise bu tekniği bir adım öteye taşır. İşlemci, sonucu tahmin ettikten sonra dallanma ardından çalıştıracağı komutları çalıştırmaya başlar. Ancak, dallanma sonucunun gerçekten de öyle olduğu teyit edilene kadar işlemci sonucu kendisine saklar. Tahmin yanlış çıkarsa bütün tahminler çöpe atılır ve yeni dallanma tahminine geçilir. Bu durumda karşılaşılan birka saat çevrimlik maliyete Misperdict Penalty (Yanlış Tahmin Cezası) denir. Bu maliyet özellikle süperpipeline işlemcilerde önem kazanır. Çünkü bu sistemlerde komutların işlendiği çok fazla aşamada vardır. Bu durumda yapılacak hatalı tahmin sonucunda boşaltılması gereken aşama sayısı çok olacaktır.


İşlemcilerde Slot ve Soket...

İşlemcilerde yapılan bu iki ayırım sadece üretim modelleriyle ilgilidir. Aşağıdaki şekilde her iki model gösterilmektedir. Alacağınız işlemciye uygun ana kartınızın olması gerektiğini unutmayın. Eğer ana kartınız soket 370 modellerini destekliyorsa slot işlemcileri kullanamazsınız. Slot işlemciler genelde yeni çıkan işlemcilerde gözükmektedir. Ancak ne varsa Intel firması nostalji rüzgarları estirerek eskiye dönüş yapma çabasında. Bu demek değildir ki soket modeller kalkacak. Sadece elinde eski ana kart modelleri olanlara kolaylık sağlamak amacı vardır...

Yorumlar

Bu blogdaki popüler yayınlar

Java Deger Atama ve Local Değişkenler

Değişkenlereilk değerlerini atama Javauygulamalarında üç tür değişken çeşiti bulunur , yerel (local) değişkenler, obje'ye ait global değişkenler ve son olarak sınıfa aitglobal değişkenler(statik değişkenler). Bu değişkenlerin tipleri ilkel(primitive) veya herhangi bir obje tipi olabilir. ör-javada-degiskenler public class DegiskenGosterim {int x ; //objeye ait global degiskenstatic int y ; // sınıfa ait global degiskenpublic void metod () {int i ; //yerel degisken//static int y = 5 ;// yanlis}} Yerel(local)değişkenlerYereldeğişkenlere kesin olarak ilk değerleri kodu yazan kişi tarafındanverilmelidir. İlk değeri verilmeden kullanılan yerel değişkenlere uyarı ,derleme(compile-time) anında verilir. gösterim-11 public int hesapla () { // yerel değişkenlere ilk değerleri her zaman verilmelidir.int i ; i++; // ! Hata ! ilk deger verilmeden üzerinde işlem yapılamazreturn i ;} Objeyeait global değişkenlerObjelereait global değişkenler'e ilk değerlerini kodu kişi vermek zorunda değildir.Ja…

Anakart ve Bileşenleri Nelerdir?

Anakart
Mainboard olarak da adlandırılır. Sistemdeki bütün kartların, işlemcinin üzerine takıldığı, diğer donanım aygıtlarının kablolar vasıtasıyla bağlandığı ve bilgisayarın en karmaşık parçalarından biridir.
Anakart Bileşenleri
1. İşlemci soketi: İşlemcinin takıldığı sokettir.
2. Bellek soketi: RAM denilen sistem belleğinin takıldığı soketdir.
3.Genişleme Yolları Anakart üzerine ekran kartı, modem, ses kartı, vs gibi parçalar anakart üzerindeki genişleme yuvaları ya da veri yolu yuvaları denilen soketlere takılır. Yani kartların işlediği veriler ve kartlara giden bilgiler, bu yuvalar ve anakart üzerindeki veri yolları aracılığı ile işlemciye ve diğer aygıtlara ulaşırlar.
4. Güç Konnektörleri(Güç kaynağı girişi): Anakart üzerine güç kaynağından gelen kablolar bu konnektörlere bağlanır.
5. Klavye/Fare Konnektörleri(portları): Klavye ve fare yuvarlak 6 pinli bir fiş (PS/2 fişi) kullanılarak anakartaki klavye ve fare portlarına bağlanır.
6. Yonga Setleri (Chipsets): Bilgisayarların trafik pol…

Örnek Java Kodları

Java Örnekler:...

1. Ekrandan girilen n*m matrisin istenilen satırların toplamını veren java programını yazınız.

Java Kodu 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package odev1.matris;
import java.util.Scanner;
/**
 *
 * @author aycan
 */
public class Odev1Matris {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Scanner keybord  = new Scanner(System.in);
        int satir,sutun,cevap;


        System.out.println("Matrisin Satır Sayisini Giriniz ");
        satir= keybord.nextInt();
        System.out.println("Matrisin Sutun Sayisini Giriniz ");
        sutun= keybord.nextInt();

        int[][] matris = new int[satir+2][sutun+2];
        int [] top = new int[satir+2];

        for(int i=1 ;i<=satir ; i++ )
            for(int j =1 ; j <=sutun ;j++)
            { System.out.println("Girmis oldugunuz matrisini( "+i+","+j+" )giriniz");
  …