Bir mikroişlemci nedir ve nasıl çalışır? İşlemciler bir zamanlar ayrı bir kutuda bulunurken artık tek bir çipe entegre edildiğinden isimleri mikroişlemci oldu. İşlemciler şaşırtıcı derecede karmaşık bir tasarıma ve işleyişe sahip. Diğer çoğu modern teknoloji gibi işlemciler de transistörden oluşuyor. En basit haliyle bir transistörü akımla kontrol edilen üç pimli anahtar olarak düşünebilirsiniz. Kapı (Gate) açıkken elektrik transistörden geçer. Kapı kapalıyken akım geçmez. Tıpkı duvardaki ışık düğmesi gibidir sadece çok daha küçüktür, çok daha hızlıdır ve elektrikle kontrol edilebilir.
Bir işlemcinin çalışma prensibi
Modern işlemcilerde kullanılan iki ana transistör bulunuyor: pMOS ve nMOS. Bir nMOS transistörü sadece kapı yüklüyken yani "yüksek" ayarlıyken akımın akmasına izin verir ve pMOS transistörü ise kapı yüksüzken veya düşük ayarlıyken akımın geçişine izin verir. Bu tür transistörleri tamamlayıcı bir şekilde birleştirerek CMOS mantık kapılarını oluşturursunuz.
Mantık kapısı, girdiyi alan, bazı işlemler gerçekleştiren ve çıktı sunan basit bir cihazdır. Örneğin, bir AND kapısı ancak ve ancak kapıya giden tüm girişler açıksa çıktı verir. NOT kapısı ise tüm girişler kapalıysa çalışır. Bu ikisini birleştirmek NAND veya not-and kapısını oluşturur ve ancak ve ancak girişlerden hiçbiri açık değilse çalışır. OR, NOR, XOR ve XNOR gibi farklı mantık işlevleri olan başka kapılar da var.
İşlemciler tam olarak bu yolla üretiliyor: Transistörleri bağlayarak oluşturulan bu tarz basit ağlar, işlemcilerin içindeki gelişmiş mantık kapılarını ve diğer devreleri meydana getirir.
Mantık kapısı gibi basit yapılarla nasıl işleyen bir bilgisayarın yapıldığını hayal etmek zor olabilir. Bu tür birkaç kapının birleştirilmesi ile önce basit işlevleri yerine getiren küçük cihazlar oluşturursunuz ve bu cihazların pek çoğunu birbirine bağlayarak tasarımı geliştirebilirsiniz. Mikroişlemci gibi çiplerin oluşturulma süreci tam olarak budur. Tek fark modern bir çipin milyarlarca transistörden oluşmasıdır.
Ayrıca: Çip nasıl üretiliyor? Bir yığın kumu işlemciye dönüştürmek
Intel, AMD ve Nvidia gibi şirketler işlemcilerinin nasıl çalıştığına dair şema sunmuyor, bu yüzden modern bir işlemcinin tam şemasını göstermek imkansızdır. Bununla birlikte bir işlemcinin en karmaşık parçalarının bile temelde mantık kapıları, hafıza birimleri ve transistörden oluştuğunu düşünebilirsiniz.
Frekans önemlidir
Bir işlemcide tüm bileşenlerin eş zamanlı çalışması şarttır. Bu yüzden işlemcideki tüm temel bileşenler saat sinyali denilen bir düzene bağlı. Bu sinyal önceden tanımlanmış bir aralıkta yükselir ve düşer ve buna frekans denir. İşlemcinin işleyişinde herhangi bir aksaklık olmaması için verilerin her zaman doğru zamanda ulaşması önemli.
Saat sinyali bu yüzden bir işlemcinin tasarımındaki başlıca zorluktan biri çünkü frekans arttıkça fizik yasaları engel oluşturmaya başlıyor. Işık hızı son derece hızlı olsa da yüksek performanslı işlemciler için yeterince hızlı değildir. Saati çipin bir ucuna göre baz alırsanız sinyal diğer uca ulaşana kadar önemli miktarda senkronizasyon kaybı olur. Çipin tüm kısımlarını aynı saatte tutmak için H-Ağacı denilen yaratıcı bir yöntem kullanılıyor. Bu tasarım ile tüm uç noktalar merkezden tam olarak aynı mesafede bulunur.
Bir işlemcinin voltajını yükselterek transistörler arası geçiş hızını artırmak hesaplama gücünü artırır. Ancak çok fazla voltaj uygulamak işlemciyi yakabilir.
Tıpkı bilgisayar programlarını kod aracılığıyla tanımlamak gibi, tasarımcılar da donanımı kod aracılığıyla tanımlıyor. Verilog ve VHDL gibi diller, donanım tasarımcılarının tasarladıkları her devrenin işlevselliğini ifade etmesini sağlıyor. Ardından devreyi oluşturmak için transistörleri kullanıyorlar.
Yeni bir tasarımın doğrulanması genellikle yonganın kendisini oluşturmaktan çok daha fazla zaman ve para gerektirir. Bir şirkette her tasarım mühendisi başına beş veya daha fazla doğrulama mühendisi düşebilir. Şirketler doğrulama için çok fazla zaman ve para harcıyor çünkü bir çip üretime girdiğinde onu düzeltmenin yolu yoktur. Intel'in bazı Pentium yongalarında ortaya çıkan kayan nokta bölme birimindeki hata şirkete bugünün değeriyle 2 milyar dolara mal oldu.
Bir işlemcinin nasıl birkaç milyar transistöre sahip olduğunu ve hepsinin ne işe yaradığını düşünmek zor olabilir. Ancak işlemciyi kendi iç bileşenlerine böldüğünüzde işler biraz daha kolay hale geliyor. Transistörler mantık kapılarını oluşturur, mantık kapıları birleştirilir ve belirli bir görevi yerine getiren işlevsel birimler halini alır ve bu işlevsel birimler birbirine bağlanarak işlemcinin bilgisayar mimarisi oluşturulur.
İşlemci komutları nasıl anlar?
Bir işletim sistemi veya oyun gibi bir programı çalıştırmak istediğinizde bu program aslında CPU'nun yürütmesi gereken talimatlardır. Bu talimatlar bellekten yüklenir ve program bitene kadar tek tek yürütülür. Yazılım geliştiriciler programlarını C++ veya Python gibi yüksek seviyeli dillerde yazsa da işlemci bunu anlayamaz. İşlemci sadece 1 ve 0'ları görür, bu nedenle bilgisayar kodunun bu formatta temsil edilmesi gerekiyor.
Programlar assembly dili denilen düşük düzeyli yönergeler ile derleniyor. Assembly dili Komut Kümesi Mimarisi'nin (ISA) bir parçasıdır ve CPU tarafından anlaşılabilir ve yürütülebilir olan yönergeler içerir. En yaygın ISA'lar arasında x86, MIPS, ARM, RISC-V ve PowerPC var. Tıpkı C++'daki bir sözdiziminin Python'dan farklı olması gibi, her ISA'nın farklı bir sözdizimi bulunuyor.
ISA'lar iki ana kategoriye ayrılabilir: Sabit uzunluklu ve değişken uzunluklu. RISC-V ISA sabit uzunlukta komutlar kullanıyor ve her komutta yer alan önceden tanımlanmış belirli sayıda bit o komutun ne türde olduğunu belirliyor. Bu yaklaşım, değişken uzunlukta komutlar kullanan x86'dan farklıdır. x86'da talimatlar farklı parçalar için farklı şekillerde ve farklı sayıda bit ile kodlanabiliyor. Bu karmaşıklık nedeniyle x86 CPU'lardaki komut kod çözücüsü genelde tüm tasarımın en karmaşık parçası olur.
Sabit uzunluktaki talimatlar düzenli yapıları nedeniyle kod çözmeyi kolaylaştırıyor ancak aynı zamanda ISA'nın destekleyebileceği toplam talimat sayısını sınırlıyor. RISC-V mimarisinin açık kaynaklı sürümleri yaklaşık 100 talimata sahipken, x86 tescillidir ve kimse kaç tane talimat içerdiğini bilmiyor. Genellikle birkaç bin x86 talimatı olduğuna inanılır ancak kesin sayı net değil. ISA'lar arasında farklılık olsa da hepsi temelde aynı temel işlevselliğe sahip.