Bir bilgisayardaki çoğu şeyin anlaşılması nispeten kolaydır: RAM, depolama, çevre birimleri ve yazılım, bir bilgisayar işlevi yapmak için birlikte çalışır. Ancak sisteminizin kalbi olan CPU, birçok teknoloji insanı için bile sihir gibi görünüyor. Burada, onu çözmek için elimizden geleni yapacağız.
Bu makale için yapılan araştırmaların çoğu, "Ama Nasıl Biliyor?" J. Clark Scott tarafından. Harika bir okuma, bu makaleden çok daha derinlere iniyor ve Amazon'daki birkaç kuruşa değer.
Başlamadan önce bir not: Modern CPU'lar, burada ana hatlarıyla belirttiğimizden çok daha karmaşık siparişlerdir. Bir milyardan fazla transistör içeren bir çipin her nüansını tek bir kişinin anlaması neredeyse imkansızdır. Bununla birlikte, hepsinin nasıl birbirine uyduğunun temel ilkeleri aynı kalır ve temelleri anlamak, modern sistemleri daha iyi anlamanızı sağlar.
Küçük Başlamak
Bilgisayarlar çalışır ikili . Sadece iki durumu anlıyorlar: açık ve kapalı. İkili olarak hesaplamalar yapmak için transistör denen şeyi kullanırlar. Transistör, geçit boyunca akım varsa, yalnızca kaynak akımın kanalizasyona akmasına izin verir. Esasen bu, ikinci bir giriş sinyaline bağlı olarak kabloyu kesen ikili bir anahtar oluşturur.
İLİŞKİLİ: İkili Nedir ve Bilgisayarlar Neden Kullanır?
Modern bilgisayarlar hesaplamaları gerçekleştirmek için milyarlarca transistör kullanır, ancak en düşük seviyelerde, kapılar olarak bilinen en temel bileşenleri oluşturmak için yalnızca bir avuç dolusu ihtiyacınız vardır.
Mantık kapıları
Birkaç transistörü düzgün bir şekilde istifleyin ve mantık kapısı olarak bilinen şeye sahip olursunuz. Mantık kapıları iki ikili giriş alır, bunlar üzerinde bir işlem gerçekleştirir ve bir çıktı döndürür. OR geçidi, örneğin, girdilerden herhangi biri doğruysa doğru döndürür. AND geçidi, her iki girişin de doğru olup olmadığını kontrol eder, XOR, girişlerden yalnızca birinin doğru olup olmadığını ve N-değişkenlerinin (NOR, NAND ve XNOR) temel kapılarının tersine çevrilmiş versiyonları olup olmadığını kontrol eder.
Gates ile Matematik Yapmak
Sadece iki kapı ile temel ikili toplamayı yapabilirsiniz. Yukarıdaki bu şema kullanılarak oluşturulan yarım toplayıcı gösterilmektedir. Mantıksal mantık kapıları için ücretsiz bir çevrimiçi oyun alanı. Buradaki XOR geçidi, girişlerden sadece biri açıksa, ancak ikisi birden açılmazsa açılacaktır. AND geçidi, her iki giriş de açıksa açılacaktır, ancak giriş yoksa kapalı kalacaktır. Yani her ikisi de açıksa, XOR kapalı kalır ve AND geçidi açılarak ikinin doğru cevabına gelir:
Bu bize üç farklı çıktıyla basit bir kurulum sağlar: sıfır, bir ve iki. Ancak bir bit, 1'den yüksek hiçbir şeyi depolayamaz ve bu makine, mümkün olan en basit matematik problemlerinden yalnızca birini çözdüğü için çok kullanışlı değildir. Ancak bu yalnızca yarım bir toplayıcıdır ve ikisini başka bir girişe bağlarsanız, tam bir toplayıcı elde edersiniz:
Tam toplayıcının üç girişi vardır - eklenecek iki sayı ve bir "taşıma". Taşıma, son sayı tek bir bitte saklanabilecek sayıyı aştığında kullanılır. Tam toplayıcılar bir zincire bağlanır ve taşıma bir toplayıcıdan diğerine aktarılır. Taşıma, ilk yarı toplayıcıdaki XOR geçidinin sonucuna eklenir ve açık olması gerektiğinde her iki durumu da ele almak için fazladan bir OR geçidi vardır.
Her iki giriş de açık olduğunda, taşıma açılır ve bunu zincirdeki bir sonraki tam toplayıcıya gönderir:
Ve bu, toplamanın aldığı kadar karmaşıktır. Daha fazla bit'e geçiş, aslında daha uzun bir zincirde daha fazla tam toplayıcı anlamına gelir.
Diğer matematik işlemlerinin çoğu toplama ile yapılabilir; çarpma sadece tekrarlanan toplamadır, çıkarma biraz süslü bit ters çevirme ile yapılabilir ve bölme sadece tekrarlanan çıkarma işlemidir. Ve tüm modern bilgisayarlar, daha karmaşık işlemleri hızlandırmak için donanım tabanlı çözümlere sahipken, hepsini teknik olarak tam toplayıcıyla yapabilirsiniz.
Otobüs ve Bellek
Şu anda bilgisayarımız kötü bir hesap makinesinden başka bir şey değil. Bunun nedeni hiçbir şey hatırlayamaması ve çıktılarıyla hiçbir şey yapmamasıdır. Yukarıda gösterilen, hepsini yapabilen bir hafıza hücresidir. Kaputun altında çok sayıda NAND geçidi kullanır ve gerçek hayatta depolama tekniğine bağlı olarak oldukça farklı olabilir, ancak işlevi aynıdır. Ona bazı girişler verirsiniz, "yazma" bitini açarsınız ve bu, girişleri hücrenin içinde depolar. Bu sadece bir hafıza hücresi değil, çünkü ondan bilgi okumak için bir yola ihtiyacımız var. Bu, bellekteki her bit için VE kapılarından oluşan ve tümü başka bir girişe, "okuma" bitine bağlı olan bir etkinleştirici ile yapılır. Yazma ve okuma bitlerine genellikle "set" ve "etkinleştirme" de denir.
Tüm bu paket, kayıt olarak bilinen bir pakete sarılmıştır. Bu yazmaçlar, her bileşene bağlı, tüm sistem etrafında dolaşan bir kablo demeti olan veri yoluna bağlanır. Modern bilgisayarların bile bir veri yolu vardır, ancak çoklu görev performansını iyileştirmek için birden çok veri yolu olabilir.
Her kayıtta hala bir yazma ve okuma biti vardır, ancak bu kurulumda giriş ve çıkış aynı şeydir. Bu aslında iyidir. Örneğin. R1'in içeriğini R2'ye kopyalamak istiyorsanız, R1'in içeriğini veri yoluna iten R1 için okuma bitini açarsınız. Okuma biti açıkken, veri yolu içeriklerini R2'ye kopyalayan R2 için yazma bitini açarsınız.
Kayıtlar, RAM yapmak için de kullanılır. RAM genellikle iki yöne giden kablolarla bir ızgaraya yerleştirilir:
Kod çözücüler bir ikili giriş alır ve ilgili numaralı kabloyu açar. Örneğin, "11" en yüksek 2 bitlik sayı olan ikili sayıdaki 3'tür, bu nedenle kod çözücü en yüksek kabloyu açar. Her kavşakta bir sicil bulunur. Bunların tümü merkezi veri yoluna ve merkezi bir yazma ve okuma girişine bağlıdır. Hem okuma hem de yazma girişi, yalnızca yazmaç üzerinden kesişen iki tel de açıksa açılacak ve böylece yazma ve okuma yazmaçlarını etkili bir şekilde seçmenize olanak tanır. Yine, modern RAM çok daha karmaşık, ancak bu kurulum hala çalışıyor.
Saat, Adımlayıcı ve Kod Çözücü
Yazmaçlar her yerde kullanılır ve verileri CPU'da taşımak ve depolamak için temel araçtır. Peki onlara şeyleri hareket ettirmelerini söyleyen nedir?
Saat, CPU'nun çekirdeğindeki ilk bileşendir ve hertz cinsinden ölçülen belirli bir aralıkta veya saniyedeki döngülerde kapanıp açılır. Bu, CPU'ların yanında reklamını gördüğünüz hızdır; 5 GHz'lik bir yonga saniyede 5 milyar döngü gerçekleştirebilir. Saat hızı, bir CPU'nun ne kadar hızlı olduğu konusunda genellikle çok iyi bir ölçüttür.
Saatin üç farklı durumu vardır: temel saat, etkinleştirme saati ve ayarlanan saat. Temel saat yarım döngü açık olacak ve diğer yarısı kapalı olacaktır. Etkinleştirme saati, kayıtları açmak için kullanılır ve verilerin etkinleştirildiğinden emin olmak için daha uzun süre açık kalması gerekir. Ayarlanan saatin her zaman etkinleştirme saati ile aynı anda açık olması gerekir, aksi takdirde yanlış veriler yazılabilir.
Saat, bir adımdan maksimum adıma kadar sayacak ve bittiğinde kendini bire geri sıfırlayacak olan adımlayıcıya bağlıdır. Saat ayrıca CPU'nun yazabileceği her kayıt için AND geçitlerine bağlıdır:
Bu AND geçitleri ayrıca başka bir bileşenin, komut kod çözücünün çıkışına da bağlanır. Komut kod çözücü, "SET R2 TO R1" gibi bir komut alır ve bunu CPU'nun anlayabileceği bir şekilde çözer. Mevcut işlemin depolandığı "Komut Kaydı" adı verilen kendi dahili kaydına sahiptir. Bunun tam olarak nasıl olduğu, üzerinde çalıştığınız sisteme iner, ancak kodu çözüldüğünde, doğru kümeyi açacak ve saate göre ateşlenecek olan doğru yazmaçlar için bitleri etkinleştirecektir.
Program talimatları RAM'de (veya modern sistemlerde CPU'ya daha yakın olan L1 önbelleğinde) saklanır. Program verileri yazmaçlarda depolandığından, tıpkı diğer tüm değişkenler gibi, program içinde atlamak için anında değiştirilebilir. Programlar, döngüler ve if ifadeleriyle yapılarını bu şekilde alır. Bir atlama talimatı, talimat kod çözücünün farklı bir konuma okuduğu bellekteki mevcut konumu ayarlar.
Hepsi Nasıl Bir Araya Geliyor
Şimdi, bir CPU'nun nasıl çalıştığına dair büyük ölçüde basitleştirmemiz tamamlandı. Ana veri yolu tüm sistemi kapsar ve tüm kayıtlara bağlanır. Tam toplayıcılar, bir dizi başka işlemle birlikte Aritmetik Mantık Birimi veya ALU'ya paketlenir. Bu ALU'nun otobüse bağlantıları olacak ve ayrıca üzerinde çalıştığı ikinci numarayı saklamak için kendi kayıtları olacak.
Bir hesaplama yapmak için, program verileri sistem RAM'inden kontrol bölümüne yüklenir. Kontrol bölümü RAM'den iki sayı okur, ilkini ALU’nun komut yazmacına yükler ve sonra ikincisini veriyoluna yükler. Bu arada, ALU'ya ne yapacağını söyleyen bir talimat kodu gönderir. ALU daha sonra tüm hesaplamaları yapar ve sonucu, CPU'nun okuyabileceği ve ardından işleme devam edebileceği farklı bir kayıt defterine kaydeder.
Resim Kredisi: Rost9 / Shutterstock