Bilgisayar hızındaki hemen hemen tüm gelişmeler bu alanlardan birinden geliyor:
Küçük transistörler
Transistörleri küçültmek iki şeyden kaynaklanır:
- Fiziksel olarak birbirine daha yakın olduklarından elektrik sinyalinin kaynaktan hedefe gitmesi için geçen süre kısalır. Bu nedenle, elektrik sinyalleri 50 yıl öncesinden daha hızlı gitmese de, şimdi sık sık daha kısa mesafeler kat ediyorlar .
- Bir çip üzerine daha fazla transistör eklenebilir; bu, aynı anda daha fazla "iş" yapılabileceği anlamına gelir. Ne kadar fazla transistör eklenirse, yapmaları için yararlı bir iş bulmak zorlaşır, ancak birçok akıllı numara kullanılır (aşağıya bakınız).
Her talimat için daha fazla "yararlı iş"
Örneğin, bazı işlemciler tam sayıları çarpma veya bölme talimatlarından yoksundur; bunun yerine bu görev yavaş yazılım rutinleriyle yapılmalıdır. Çarpma ve bölme talimatlarını eklemek işleri önemli ölçüde hızlandırır. Kayan nokta talimatları eklemek , kayan nokta sayıları gerektiren yazılımı hızlandırabilir.
Her talimat için daha fazla "faydalı iş" yapmanın önemli bir yolu, kelime boyutunu artırmaktır . 32 bit sayılarla işlem yapabilen CPU'lar, 16 bit veya 8 bit CPU'larla aynı görevi gerçekleştirmek için genellikle daha az talimat gerektirir.
Bazı işlemciler aynı anda birçok şeyi yapan talimatları, özellikle birden fazla veri öğesinde ( SIMD ) aynı işlemi yapan talimatları destekler .
Döngü başına daha fazla talimat
"Saat döngüsü", işlemcinin şu andaki durumundan bir sonraki durumuna nasıl geçtiğini gösterir. Bir anlamda, işlemcinin bir anda yapabileceği en küçük çalışma birimidir. Bununla birlikte, belirli bir talimatın aldığı saat döngüsü sayısı işlemcinin tasarımına bağlıdır.
Borulu işlemcilerin ortaya çıkmasıyla, ayrı talimatların "üst üste gelmesi" mümkün oldu; yani bir tanesi bir öncekinden önce başlayacaktı. Bununla birlikte, bazı talimatlar bir sonraki talimatın kısmen yerine getirilmesine kadar bilinmeyecek olan bir sonraki talimatı geçersiz kılabilir, böylece işler karmaşıklaşabilir. (Pipelined işlemciler her şeyin yolunda gittiğinden emin olmak için mantık içerir - ancak performans özellikleri daha karmaşıktır.)
Superscalar işlemciler bunu kelimenin tam anlamıyla aynı anda iki komutun uygulanmasına izin veren bir sonraki seviyeye götürür ve sıra dışı çalıştırma , talimatların sıra dışı çalıştırılmasına izin vererek bir adım daha ileri götürür. Bu özellikler, hangi komutların birbiriyle çakışmadığını belirlemek için talimat akışının analizini gerektirir.
Bu tür başka hileler olmasına rağmen (örneğin şube tahmini , spekülatif uygulama ), daha önemli olan genel resimdir:
- Her komutun tamamlanması için belirli sayıda saat döngüsü gerekir (zorunlu olarak sabit değil)
- ancak aynı anda birden fazla talimat verilebilir
- bu nedenle, ileri teknoloji işlemciler için> 1 olan ölçülebilir bir " çevrim başına talimat " vardır.
- ama iş yüküne çok kuvvetli bir şekilde bağlı
Saniyede daha fazla döngü
Başka bir deyişle, daha yüksek saat hızı . Saat hızını artırmak yalnızca üretilen ısıyı arttırmakla kalmaz, aynı zamanda daha disiplinli bir yonga tasarımı gerektirir, çünkü devrenin stabilizasyonu için daha küçük bir zaman sınırı vardır. Bazı pratik sınırlara ulaştığımızda 2000'lere kadar bundan çok daha fazla kilometre geçtik.
Doğru zamanda doğru yerde bulunan veriler
İşlemci içerisindeki bileşenler küçülen transistörler nedeniyle birbirine yaklaşıyor ve yaklaşıyor olsa da, CPU ve RAM hala 5-10 cm. Bir komut RAM'den bir şeye ihtiyaç duyuyorsa, bu komutun tamamlanması 5 veya 6 döngü almayacaktır, yaklaşık 200 civarında sürecektir. Bu von Neumann darboğazı problemidir.
Buna karşı temel silahımız önbellektir . Son zamanlarda erişilen verilere tekrar erişme olasılığı daha yüksektir, bu nedenle CPU çipinde bulunan özel bellekte (önbellek adı verilen) erişilmesi çok daha hızlı hale getirilir.
Bununla birlikte, diğer teknikler ( boru hattı ve branş tahmini gibi ) verinin gelmesini beklerken işlemcinin yararlı çalışmasına izin vererek ve ayrıca hangi verilere yakında ihtiyaç duyulabileceğini öngörerek yardımcı olur.
Çoklu ve / veya özel işlemciler
Tek bir işlemci için yazılım yazmak birden çok işlemciden çok daha kolaydır. Bununla birlikte, bazen performans / maliyet / güç tüketiminin yararları bunu değerli kılmaktadır.
Ayrıca, bazı işlemciler belirli görevler için özellikle uygundur. Örneğin, GPU'lar 2D ve 3D grafikler ve efektler oluşturmak için gereken hesaplamalar için özel olarak tasarlanmıştır.
Çok çekirdekli işlemciler , temel olarak, tek bir yonga üzerinde bulunan birden çok işlemcidir.