Merkezi işlem birimi
Merkezi işlem birimi (CPU) her bilgisayarın önemli bir parçasıdır. CPU bilgisayarın diğer parçalarını kontrol etmek için sinyaller gönderir, tıpkı bir beynin vücudu kontrol etmesi gibi.
CPU, talimatlar adı verilen, bilgisayarın yapması gerekenlerin bir listesi üzerinde çalışan elektronik bir makinedir. Talimat listesini okur ve her birini sırayla çalıştırır (yürütür). Bir CPU'nun çalıştırabileceği talimatların listesi bir bilgisayar programıdır.
Saat hızı veya bir CPU'nun dahili parçalarının hızı hertz (Hz) cinsinden ölçülür. Modern işlemciler genellikle o kadar hızlı çalışır ki bunun yerine gigahertz (GHz) kullanılır. Bir GHz saniyede 1.000.000.000 döngüdür.
Masaüstü (ev) bilgisayarlarda kullanılan CPU'ların çoğu Intel ya da Advanced Micro Devices (genellikle AMD olarak kısaltılır) tarafından üretilen mikroişlemcilerdir. CPU üreten diğer bazı şirketler ARM, IBM ve şu anda lider olan ATI Technologies altındaki AMD'dir. CPU'larının çoğu, cep telefonları, arabalar, oyun konsolları veya ordu gibi daha özel şeyler için gömülü sistemlerde kullanılır.
Bilgisayarın içinde bir Pentium CPU
CPU Türleri
20. yüzyılda mühendisler birçok farklı bilgisayar mimarisi icat ettiler. Günümüzde çoğu masaüstü bilgisayar 32-bit CPU ya da 64-bit CPU kullanmaktadır. 32 bit CPU'daki talimatlar 32 bit boyutundaki verileri işlemekte iyidir (çoğu talimat 32 bit CPU'da 32 bit olarak "düşünür"). Aynı şekilde, 64 bitlik bir CPU da 64 bit boyutundaki verileri işlemekte iyidir (ve genellikle 32 bitlik verileri işlemekte de iyidir). Bir CPU'nun en iyi işlediği veri boyutu genellikle CPU'nun kelime boyutu olarak adlandırılır. 70'ler, 80'ler ve 90'ların başlarındaki birçok eski CPU (ve birçok modern gömülü sistem) 8 bit veya 16 bit kelime boyutuna sahiptir. CPU'lar 20. yüzyılın ortalarında icat edildiğinde birçok farklı kelime boyutuna sahipti. Bazılarında talimatlar ve veriler için farklı kelime boyutları vardı. Daha az popüler olan kelime boyutları daha sonra kullanılmayı bıraktı.
Çoğu CPU mikroişlemcidir. Bu, CPU'nun sadece tek bir çip olduğu anlamına gelir. İçinde mikroişlemci bulunan bazı çipler başka bileşenler de içerir ve tam bir tek çipli "bilgisayar "dır. Buna mikrodenetleyici denir.
Kayıtlar
CPU bir bilgisayar programını çalıştırdığında, talimatların üzerinde çalıştığı verileri (okudukları ve yazdıkları verileri) saklamak için bir yere ihtiyaç duyar. Bu depolama alanına register adı verilir. Bir CPU'da genellikle çok sayıda yazmaç bulunur. Kayıtlara erişim (okuma ve yazma) çok hızlı olmalıdır. Bu nedenle, CPU çipinin bir parçasıdırlar.
Hafıza
Tüm verileri kayıtlarda saklamak çoğu CPU'yu çok karmaşık (ve çok pahalı) hale getirecektir. Bu nedenle, yazmaçlar genellikle yalnızca CPU'nun "şu anda" üzerinde çalıştığı verileri depolar. Program tarafından kullanılan verilerin geri kalanı RAM'de (bellek) saklanır. Mikrodenetleyiciler hariç, RAM genellikle CPU'nun dışında ayrı çiplerde saklanır.
CPU, RAM'deki verileri okumak veya yazmak istediğinde, bu verilere bir adres çıkarır. RAM'deki her baytın bir bellek adresi vardır. Adreslerin boyutu genellikle kelime boyutuyla aynıdır: 32 bitlik bir CPU 32 bitlik adresler kullanır, vb. Ancak, 8 bit CPU'lar gibi daha küçük CPU'lar genellikle kelime boyutundan daha büyük adresler kullanır. Aksi takdirde maksimum program uzunluğu çok kısa olur.
Adreslerin boyutu sınırlı olduğundan, maksimum bellek miktarı da sınırlıdır. 32 bit işlemciler genellikle yalnızca 4 GB'a kadar RAM kullanabilir. Bu, 32 bitlik bir adres kullanılarak seçilebilecek farklı bayt sayısıdır (her bit iki değere sahip olabilir -0 ve 1- ve 232 bayt 4 GB'dir). 64 bitlik bir işlemci 16 EB'ye kadar RAM (16 eksabayt, yaklaşık 16 milyar GB veya 16 milyar milyar bayt) kullanabilir. İşletim sistemi daha küçük miktarları kullanmakla sınırlayabilir.
RAM'de depolanan bilgiler genellikle uçucudur. Bu, bilgisayar kapatıldığında kaybolacağı anlamına gelir.
Önbellek
Modern bilgisayarlarda RAM, yazmaçlardan çok daha yavaştır, bu nedenle RAM'e erişim programları yavaşlatır. Bellek erişimlerini hızlandırmak için, RAM ile CPU'nun ana parçaları arasına genellikle önbellek adı verilen daha hızlı bir bellek türü yerleştirilir. Önbellek genellikle CPU çipinin bir parçasıdır ve bayt başına RAM'den çok daha pahalıdır. Önbellek RAM ile aynı verileri depolar, ancak genellikle çok daha küçüktür. Bu nedenle, program tarafından kullanılan tüm veriler önbelleğe sığmayabilir. Önbellek, çok kullanılması muhtemel verileri depolamaya çalışır. Örnekler arasında yakın zamanda kullanılan veriler ve bellekte yakın zamanda kullanılan verilere yakın veriler yer alır.
RAM için bir önbelleğe sahip olmak ne kadar mantıklıysa, "önbellek için önbelleğe" sahip olmak da o kadar mantıklıdır. Çok seviyeli önbelleklemede, L1 önbellek, L2 önbellek ve benzeri olarak adlandırılan birçok önbellek vardır. L1 önbellek en hızlı (ve bayt başına en pahalı) önbellektir ve CPU'ya "en yakın" olanıdır. L2 önbellek bir adım uzaktadır ve L1 önbellekten daha yavaştır, vb. L1 önbelleği genellikle L2 önbelleği vb. için bir önbellek olarak görülebilir.
Otobüsler
Bilgisayar veri yolları, CPU tarafından RAM ve bilgisayardaki diğer bileşenlerle iletişim kurmak için kullanılan kablolardır. Neredeyse tüm CPU'larda en azından veri okumak ve yazmak için kullanılan bir veri yolu ve adres çıkışı için kullanılan bir adres yolu vardır. CPU içindeki diğer veri yolları CPU'nun farklı bölümlerine veri taşır.
Talimat setleri
Bir komut seti (ISA - Komut Seti Mimarisi olarak da adlandırılır), belirli bir CPU tarafından doğrudan anlaşılan bir dildir. Bu diller makine kodu veya ikili kod olarak da adlandırılır. CPU'ya bellekten bir yazmaca veri yüklemek veya iki yazmaçtaki değerleri toplamak gibi farklı şeyleri nasıl yapmasını söyleyeceğinizi belirtirler. Bir komut setindeki her komutun bir kodlaması vardır, bu da komutun bir bit dizisi olarak nasıl yazıldığını gösterir.
C ve C++ gibi programlama dillerinde yazılan programlar doğrudan CPU tarafından çalıştırılamaz. CPU'nun onları çalıştırabilmesi için önce makine koduna çevrilmeleri gerekir. Derleyici, bu çeviriyi yapan bir bilgisayar programıdır.
Makine kodu sadece 0'lar ve 1'lerden oluşan bir dizidir, bu da insanların onu okumasını zorlaştırır. Daha okunabilir hale getirmek için, makine kodu programları genellikle assembly dilinde yazılır. Assembly dili 0'lar ve 1'ler yerine metin kullanır: Örneğin A yazmacına 0 değerini yüklemek için "LD A,0" yazabilirsiniz. Assembly dilini makine koduna çeviren bir programa assembler denir.
İşlevsellik
İşte bir CPU'nun yapabileceği temel şeylerden bazıları:
- Bellekten veri okuma ve belleğe veri yazma.
- Bir sayıyı başka bir sayıya ekleyin.
- Bir sayının başka bir sayıdan büyük olup olmadığını test edin.
- Bir sayıyı bir yerden başka bir yere taşıyın (örneğin, bir kayıttan diğerine veya bir kayıt ile bellek arasında).
- Komut listesinde başka bir yere atlayın, ancak yalnızca bazı testler doğruysa (örneğin, yalnızca bir sayı diğerinden büyükse).
Çok karmaşık programlar bile bunun gibi birçok basit talimatın bir araya getirilmesiyle oluşturulabilir. Bu mümkündür çünkü her bir komutun gerçekleşmesi çok kısa zaman alır. Günümüzde birçok CPU tek bir saniyede 1 milyardan (1.000.000.000) fazla komutu yerine getirebilmektedir. Genel olarak, bir CPU belirli bir sürede ne kadar çok şey yapabiliyorsa, o kadar hızlıdır. Bir işlemcinin hızını ölçmenin bir yolu MIPS'dir (Saniyede Milyon Talimat). Floplar (saniye başına kayan nokta işlemleri) ve CPU saat hızı (genellikle gigahertz cinsinden ölçülür) da bir işlemcinin belirli bir sürede ne kadar iş yapabileceğini ölçmenin yollarıdır.
Bir CPU mantık kapılarından oluşur; hareketli parçası yoktur. Bir bilgisayarın CPU'su, ekran kartı veya BIOS gibi bilgisayarın diğer parçalarına elektronik olarak bağlanır. Bir bilgisayar programı, bilgisayarın belleğindeki özel yerlere sayılar okuyarak veya yazarak bu çevre birimlerini kontrol edebilir.
Talimat boru hatları
Bir CPU tarafından yürütülen her komut genellikle birçok adımda gerçekleştirilir. Örneğin, basit bir CPU'da "INC A" (A yazmacında saklanan değeri bir artır) komutunu çalıştırma adımları şu şekilde olabilir:
- Komutu bellekten okuyun,
- talimatın kodunu çözme (talimatın ne yaptığını anlama) ve
- A kaydına bir tane ekleyin.
CPU'nun farklı bölümleri bu farklı şeyleri yapar. Genellikle farklı talimatlardan bazı adımları aynı anda çalıştırmak mümkündür, bu da CPU'yu daha hızlı hale getirir. Örneğin, bir komutu bellekten okurken aynı anda başka bir komutun kodunu çözebiliriz, çünkü bu adımlar farklı modüller kullanır. Bu, aynı anda birçok talimatın "boru hattının içinde" olması olarak düşünülebilir. En iyi durumda, tüm modüller aynı anda farklı talimatlar üzerinde çalışır, ancak bu her zaman mümkün değildir.
Bellek yönetim birimleri (MMU'lar) ve sanal bellek
Modern CPU'lar genellikle bir bellek yönetim birimi (MMU) kullanır. MMU, adresleri CPU'dan (genellikle) farklı RAM adreslerine çeviren bir bileşendir. Bir MMU kullanıldığında, bir programda kullanılan adresler (genellikle) verilerin depolandığı "gerçek" adresler değildir. Buna sanal ("gerçek" belleğin tersi) bellek denir. Bir MMU'ya sahip olmanın iyi olmasının nedenlerinden birkaçı aşağıda listelenmiştir:
- Bir MMU, diğer programların belleğini bir programdan "gizleyebilir". Bu, program çalışırken herhangi bir adresi "gizli" adreslere çevirmeyerek yapılır. Bu iyidir çünkü programların diğer programların belleğini okuyamayacağı ve değiştiremeyeceği anlamına gelir, bu da güvenliği ve istikrarı artırır. (Programlar birbirlerini "gözetleyemez" ya da "birbirlerinin ayak parmaklarına basamaz").
- Birçok MMU, belleğin bazı bölümlerini yazılamaz, okunamaz veya çalıştırılamaz (yani belleğin o bölümünde saklanan kod çalıştırılamaz) hale getirebilir. Bu, kararlılık ve güvenlik nedenlerinin yanı sıra diğer nedenlerle de iyi olabilir.
- MMU'lar farklı programların farklı bellek "görünümlerine" sahip olmasını sağlar. Bu, birçok farklı durumda kullanışlıdır. Örneğin, bir programın "ana" kodunun diğer programlarla çakışmadan aynı (sanal) adreste olması her zaman mümkün olacaktır. Ayrıca programlar arasında paylaşılan birçok farklı kod parçası (kütüphanelerden) olduğunda da kullanışlıdır.
- MMU'lar, bir program her çalıştırıldığında kütüphanelerdeki kodun farklı adreslerde görünmesini sağlar. Bu iyi bir şeydir çünkü bellekteki şeylerin nerede olduğunu bilmemek genellikle bilgisayar korsanlarının programlara kötü şeyler yaptırmasını zorlaştırır. Buna adres alanı rastgeleleştirmesi denir.
- Gelişmiş programlar ve işletim sistemleri, verileri bellekteki farklı yerler arasında kopyalamak zorunda kalmamak için MMU'larla ilgili hileler kullanabilir.
Çoklu çekirdek
Çok çekirdekli işlemciler 21. yüzyılın başlarında yaygınlaştı. Bu, aynı çip üzerinde çok sayıda işlemciye sahip oldukları ve böylece birçok talimatı aynı anda çalıştırabildikleri anlamına gelir. AMD Epyc 7601 gibi bazı işlemciler otuz iki çekirdeğe kadar sahip olabilir.
Üreticiler
Aşağıdaki şirketler bilgisayar CPU'ları üretmektedir:
- ARM
- Intel
- Gelişmiş Mikro Cihazlar
- MCST
- SRISA
- Sun Microsystems
Daha fazla bilgi
- Mikroişlemci
- ALU
- Yürütme birimi
- Kayan nokta birimi
- Intel
- AMD
Sorular ve Yanıtlar
S: CPU nedir?
C: CPU (merkezi işlem birimi) her bilgisayarın önemli bir parçasıdır. Bilgisayarın diğer parçalarını kontrol etmek için sinyaller gönderir, neredeyse bir beynin bir vücudu kontrol etmesi gibi. CPU, belirli görevleri yapmak için bir talimat listesi üzerinde çalışan elektronik bir makinedir.
S: CPU nasıl çalışır?
C: CPU talimat listesini okur ve her birini sırayla çalıştırır (yürütür). Bir CPU'nun çalıştırabileceği talimatların listesi bir bilgisayar programıdır.
S: Bir CPU'nun saat hızı veya hızı ne ile ölçülür?
C: Bir CPU'nun dahili parçalarının saat hızı veya hızı hertz (Hz) cinsinden ölçülür. Modern işlemciler genellikle o kadar hızlı çalışır ki bunun yerine gigahertz (GHz) kullanılır - bir GHz saniyede 1.000.000.000 döngüdür.
S: CPU üreten bazı şirketler kimlerdir?
C: CPU üreten bazı şirketler Intel, Advanced Micro Devices (AMD), ARM (yakın zamanda Nvidia tarafından satın alındı), IBM ve şu anda pazarda lider olan ATI Technologies bünyesindeki AMD'dir.
S: En çok CPU nerede kullanılır?
C: Masaüstü bilgisayarlarda kullanılan CPU'ların çoğu Intel veya AMD tarafından üretilen mikroişlemcilerdir, diğerleri ise cep telefonları, arabalar, video oyun konsolları veya askeri uygulamalar gibi daha özel şeyler için gömülü sistemlerde kullanılır.