özet
İktisat. Daha yüksek saat hızından daha fazla çekirdeğe sahip bir CPU tasarımı daha ucuz ve kolaydır, çünkü:
Güç kullanımında önemli artış. Saat hızını artırdıkça CPU güç tüketimi hızla artar - saat hızını% 25 oranında artırmak için gereken termal alanda daha düşük bir hızda çalışan çekirdek sayısını iki katına çıkarabilirsiniz. % 50 için dört katına.
Sıralı işlem hızını arttırmanın başka yolları da var ve CPU üreticileri bu işlemlerden iyi bir şekilde faydalanıyor.
Kız kardeşim SE sitelerden birinde bu soruya verilen mükemmel cevaplar üzerine yoğun bir şekilde çizim yapacağım . Öyleyse git onları oyla!
Saat hızı sınırlamaları
Saat hızıyla ilgili bilinen birkaç fiziksel sınırlama vardır:
Iletim süresi
Bir elektrik sinyalinin bir devreyi geçmesi için geçen süre ışık hızı ile sınırlıdır. Bu zor bir sınırdır ve çevresinde bilinen bir yol yoktur 1 . Gigahertz-clocks'da bu sınıra yaklaşıyoruz.
Ancak henüz orada değiliz. 1 GHz, saat tik başına bir nanosaniye anlamına gelir. O zaman, ışık 30 cm yol alabilir. 10 GHz’de, ışık 3 cm hızla gidebilir. Tek bir CPU çekirdeği yaklaşık 5 mm genişliğindedir, bu yüzden 10 GHz’in üzerinde bir yerde bu sorunlarla karşılaşacağız. 2
Anahtarlama gecikmesi
Bir sinyalin bir uçtan diğerine gitmesi için geçen süreyi düşünmek yeterli değildir. İşlemci içerisindeki bir mantık geçidinin bir durumdan diğerine geçmesi için geçen süreyi de göz önünde bulundurmamız gerekir! Saat hızını arttırdıkça, bu bir sorun olabilir.
Ne yazık ki, spesifikasyonlardan emin değilim ve herhangi bir sayı sağlayamıyorum.
Görünüşe göre, içine daha fazla güç pompalamak anahtarlamayı hızlandırabilir, ancak bu hem güç tüketimine hem de ısı dağıtım sorunlarına yol açar. Ayrıca, daha fazla güç, zarar vermeden kullanabilme kabiliyetine sahip kablo kanallarına ihtiyaç duyduğunuz anlamına gelir.
Isı dağılımı / güç tüketimi
Bu büyük olanı. Fuzzyhair2 kullanıcısının yanıtından alıntı :
Son işlemciler CMOS teknolojisi kullanılarak üretilmektedir. Her zaman bir saat döngüsü olduğunda, güç harcanır. Bu nedenle, daha yüksek işlemci hızları daha fazla ısı dağılımı anlamına gelir.
AnandTech forum başlığında bazı güzel ölçümler var ve hatta güç tüketimi için bir formül bile üretti: (üretilen ısı ile el ele gider):
Idontcare'e Kredi
Bunu aşağıdaki grafikte görselleştirebiliriz:
Idontcare'e Kredi
Gördüğünüz gibi, saatin hızı belli bir noktadan geçtikçe güç tüketimi (ve üretilen ısı) oldukça hızlı bir şekilde yükseliyor. Bu, saat hızını sınırsızca artırmanın pratik olmamasını sağlar.
Güç kullanımındaki hızlı artışın nedeni muhtemelen anahtarlama gecikmesiyle ilgilidir - saat hızıyla orantılı olarak gücü artırmak yeterli değildir; Daha yüksek saatlerde kararlılığı korumak için voltaj da arttırılmalıdır. Bu tamamen doğru olmayabilir; Bir yorumdaki düzeltmeleri belirtmekten çekinmeyin veya bu cevabı düzeltmek için çekinmeyin.
Daha fazla çekirdek mi?
Peki neden daha fazla çekirdek? Kesin olarak cevaplayamam. İnsanlara Intel ve AMD'deki soruları sormalısınız. Ancak, modern CPU'larda, bir noktada saat hızını arttırmanın pratik olmadığını görebilirsiniz.
Evet, çok çekirdekli ayrıca gereken gücü arttırır ve ısı dağılımını arttırır. Ancak iletim zamanını ve anahtarlama gecikme sorunlarını dikkatlice önler. Grafikten de görebileceğiniz gibi, modern bir CPU'daki çekirdek sayısını, aynı termal ek yük ile saat hızındaki% 25'lik bir artışla kolayca ikiye katlayabilirsiniz.
Bazı insanlar yaptı - şu anki hız aşırtma dünya rekoru 9 GHz’e utangaç. Ancak, güç tüketimini kabul edilebilir sınırlar içinde tutarken, bunu yapmak önemli bir mühendislik zorluğudur. Bir noktada tasarımcılar paralel olarak daha fazla iş yapmak için daha fazla çekirdek eklemenin çoğu durumda performansta daha etkili bir artış sağlayacağına karar verdi .
Ekonominin geldiği yer orasıdır - çok çekirdekli rotaya gitmek daha ucuz (daha az tasarım zamanı, daha az karmaşık). Ve pazarlaması kolaydır - yepyeni octa-çekirdek çipini kim sevmiyor ? (Tabii ki, yazılım bunu kullanmadığında çok çekirdekli bir sistem kullanılamaz ...)
Orada olan çok çekirdekli bir dezavantajı: ekstra çekirdek koymak için daha fazla fiziksel alan gerekir. Bununla birlikte, CPU işlem boyutları sürekli olarak çok fazla küçülür, bu nedenle önceki bir tasarımın iki kopyasını koyacak kadar alan vardır - gerçek tradeoff daha büyük, daha karmaşık, tek çekirdekler oluşturamaz. Sonra tekrar, çekirdek karmaşıklığını artırmak, tasarım açısından kötü bir şeydir - daha fazla karmaşıklık = daha fazla hata / hata ve üretim hataları. Çok fazla yer kaplamayacak kadar basit, verimli çekirdeklere sahip mutlu bir ortam bulmuş gibiyiz.
Mevcut işlem boyutlarında tek bir kalıba sığabileceğimiz çekirdek sayısı ile zaten bir limite ulaştık. Yakında bir şeyleri küçültebileceğimizin sınırını aşabiliriz. Sırada ne var? Daha fazlasına ihtiyacımız var mı? Maalesef cevap vermek zor. Burada bir çırpınan var mı?
Performansı arttırmanın diğer yolları
Yani, saat hızını artıramayız. Ve daha fazla çekirdeğin ek bir dezavantajı vardır - yani, yalnızca üzerinde çalışan yazılımın bunları kullanabilmesi durumunda yardımcı olurlar.
Peki başka ne yapabiliriz? Modern CPU'lar aynı saat hızında daha eskilerinden daha hızlı nasıl?
Saat hızı gerçekten bir CPU'nun dahili çalışmalarına çok kaba bir yaklaşımdır. Bir CPU'nun tüm bileşenleri bu hızda çalışmaz - bazıları her iki onaylama işleminde bir kez çalışabilir.
Daha önemlisi, zaman birimi başına uygulayabileceğiniz talimatların sayısıdır . Bu, tek bir CPU çekirdeğinin ne kadarını başarabileceğinin çok daha iyi bir ölçüsüdür. Bazı talimatlar; bazıları bir saat döngüsü alır, bazıları üç alır. Örneğin, bölünme, eklemekten çok daha yavaştır.
Böylece, saniyede gerçekleştirebileceği komut sayısını artırarak bir işlemcinin daha iyi performans göstermesini sağlayabiliriz. Nasıl? Bir talimatı daha verimli hale getirebilirsin - belki de bölünme artık sadece iki döngü alıyor. Sonra talimat boru hattı var . Her talimatı birden fazla aşamaya bölerek, komutları "paralel olarak" yürütmek mümkündür - ancak her talimatın, daha önce ve sonra verilen talimatlara göre iyi tanımlanmış, sıralı bir düzeni vardır, bu nedenle çok çekirdekli gibi bir yazılım desteği gerektirmez yapar.
Başka bir yol daha var : daha özel talimatlar. Tek seferde büyük miktarda veriyi işlemek için talimatlar veren SSE gibi şeyler gördük. Benzer amaçlarla sürekli olarak tanıtılan yeni talimat setleri vardır. Bunlar, yine, yazılım desteği gerektirir ve donanımın karmaşıklığını arttırır, ancak iyi bir performans artışı sağlarlar. Son zamanlarda, donanım hızlandırmalı AES şifreleme ve şifre çözme sağlayan AES-NI yazılımda uygulanan bir aritmetikten çok daha hızlı oldu.
1 Zaten teorik kuantum fiziğine derinlemesine girmeden olmaz.
2 Elektrik alanı yayılımı bir vakumdaki ışık hızı kadar hızlı olmadığı için aslında daha düşük olabilir. Ayrıca, bu sadece düz çizgi mesafesi içindir - düz bir çizgiden çok daha uzun olan en az bir yol olması muhtemeldir.