Bilgisayar Nedir-Temel Kavramlar Üzerine

Süleyman.
22-12-2009, 01:53   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 3
16,587 mesaj
Kayıt Tarihi:Kayıt: Mar 2009

Uzunca bir zamandan beri özellikle donanım konusunda bilgi sahibi olunmamasından da kaynaklanan ve bu yüzden de yanlış olarak bilinen bir takım meseleleri yazmak niyetindeydim. Çokça yapılan yanlışları muhtelif defalar forumda verdiğimiz cevaplarda ifade etmemize rağmen bunu derli toplu da olsa, maddeler halinde sıralamanın da çok iyi bir yöntem olmadığını düşünüyorum. Kanaatimce böyle bir işe kalkışmanın en iyi yolu en temelden bilgisayar dünyasıyla ilgili kavramları ele almaktır; çünkü bir şeyi anlamanın yolu onun dilini ve kelimelerini (terimlerini) öğrenmekten geçer.
 
Böyle bir çalışma ne bir doktora tezi detayında ve bir anlamda sıkıcılığında olmalı, ki zaten birikimimiz itibarıyla buna imkan yok, ne de gereğinden uzun olup okumayı zorlaştırmalı. Sonuçta yapmak istediğimiz, bazı temel hususları biz amatörlerin anlayabileceği bir kıvamda ele almak ve bunu bir forum ortamında yayımlamak.
 
Yukarıda da anlatmaya çalıştığım üzere; işlemci, rem ve ekran kartlarının performansına ilişkin bazı konuları ele almak üzere bunların yapı ve mimarilerinden bahsedeceğiz. Ama buna başlamadan önce bazı kavramları ele almamız gerekiyor çünkü bilgisayar dünyasındaki her şey (hatta aslında mühendisliğe ait ne varsa) bir hesap iledir, yani matematik.
 
Başlamadan evvel şunu da belirtelim ki; tanımlar Wikipedia’nın ilgili maddelerinden süzülerek derlenmiştir.
 
Bilgisayar (Computer):
 
Bilgisayar, verileri bir takım komut setlerine göre veya başka bir tabirle bir takım talimatnamelere göre işleyen bir makinedir. Bu geniş tanıma birçok makine girebilir ama bizi ilgilendiren günümüz bilgisayarları, özellikle de kişisel bilgisayarları (PC) olduğu için tanımı biraz daraltacak olan ve modern bilgisayarları diğerlerinden ayıran en önemli özelliği de ilave edeceğiz: Programlanabilirlik; yani bilgisayara verilen bir dizi komutun (program) depolanıp gerektiğinde kullanılmak üzere işlenmesidir. Yani kısaca bilgisayar; bir bütün olarak donanım ve yazılımıyla, önceden tanımlanmış işlemleri programlar aracılığıyla gerçekleştiren bir sistemdir, diyebiliriz.
 
Bugün kullandığımız kişisel bilgisayarları oluşturan temel bileşenler şunlardır:
 
-       Merkezi işlem birimi, işlemci (CPU).
-       Rastgele erişim hafızası, rem (RAM).
-       Giriş-Çıkış aygıtları, (I/O)
              Sabit diskler
              Grafik işleme birimleri, ekran kartları (GPU).
              Flaş diskler
              Optik sürücüler
              Yazıcılar vs.
 
Yukarıda bahsi geçen birimler birbirlerine “bus” denen veri yollarıyla veya kablolarla bağlıdırlar.
 
Komut (Instruction):
 
İngilizcede “Command” ve “Instruction” birbirine benzese de, iki farklı terim olmalarına rağmen Türkçe’de yaygın biçimde “komut” olarak karşılanmış gözüküyor. Halbuki “command” için daha uygun karşılık “komut" kelimesi olmakla beraber, “instruction” kelimesine karşılık “talimat” daha uygun düşüyor. Biz daha çok yerine göre “komut” kelimesini kullanacağız.
 
Komut, bir “komut seti mimarisi” tarafından önceden tanımlanmış, işlemcinin gerçekleştirdiği herhangi tek bir işleme verilen addır.
 
Komut Seti (Instruction Set):
 
Komut seti, bir işlemcinin yürütebileceği bütün işlemlerin ve bu işlemlere ait varyasyonların listesi, yani talimatnamesidir. Komut seti daha çok programlama ile ilgilidir; veri türlerini, komutları, kayıtları, adresleme türlerini, hafıza mimarisini, kesme, hata yakalama ve harici giriş-çıkışı (I/O) ve “opcode” denen belli tür işlemcilere ait kök komutları, yani makine dilini içerir.
 
Birçok komut seti bulunmakla birlikte bizi daha çok ilgilendiren x86 komut seti mimarisidir (ISA). Komut seti mimarisiyle işlemci mimarisi birbirinden farklıdır; mesela Intel ve AMD işlemcileri aynı komut seti mimarisini kullanmalarına rağmen işlemci mimarileri oldukça farklı olabilmektedir.
 
Makine Dili (Opcode):
 
İşlemcinin direkt olarak yürüttüğü komutların formuna denir. Bir nevi kök komutlardır. “0 ve 1”lerden oluşurlar çünkü çoğunlukla makine dilinde “ikilik sistem (binary)” kullanılır. Programlama dilindeki komutlar “çeviricilerce” işlemci tarafından yorumlanabilecek bu sayılara dönüştürülürler.
 
Mesela “Kırk Haramilerin” mağarasını açmak isteyen Ali Baba’nın sesle verdiği “Açıl susam açıl” komutudur. Eğer aynı işi Ali baba bir mikro işlemci vasıtasıyla yapacak olursa ve sihirli kelimelerin birer makine komutu olduğunu farzedersek, “Açıl” ve “Susam” kelimelerine karşılık gelen komut setinde belirlenmiş mesela “0101001100110101” gibi, makine dilindeki 16 bitlik kodu (tabi 16 bit olması gerekmiyor, örnek olarak verdim) girmesi gerekmektedir.
 
Komut satırına bir örnek:
 

 
Program:
 
Program, komut setlerine göre yazılan, işlemcinin yürüteceği komutlar yığınıdır ve belli bir fonksiyonu gerçekleştirmeye yaralar. Programlar direkt olarak makine dilinde yazılmazlar, arada çeşitli yazılım dilleri ve çeviriciler bulunmaktadır. Sonuçta program komutları işlemci tarafından dekode edilerek makine diline çevrilir ve komut uygulanır.
 
Veri (Data):
 
Bilgisayarın işleyebileceği yapıdaki herşeye veri denir. Ama daha spesifik olarak, işlemci komutları yani program olmayan her şeydir denebilir.
 
İşlem (Process):
 
İşlem, belli bir programa ait komutların, yine programın belirlediği sıraya göre yürütülmesidir.
 
İşlemci (Processor):
 
Merkezi işlem birimi (Central Processing Unit-CPU), programlara ait komutları yerine getiren bilgisayarın temel bileşenidir. Günümüz yarı-iletken teknolojisinde, yazımıza konu olan işlemciler milyonlarca minik mikro devreden oluşmaktadır ve bunlar aracılığıyla kısa sürelerde milyonlarca işlemi gerçekleştirebilmektedirler.
 
Bir örnekle izah edecek olursak; mesela bir lambayı yakan basit bir elektrik devresine ait iki durum söz konusudur: Açık-kapalı. Devre açıkken lamba sönük (0), devre kapalıyken lamba yanıktır (1). Yani bu basit elektrik devresinde ön tanımlı olarak iki durum söz konusudur ve yürütülebilecek iki komut bulunmaktadır; aç-kapa.
 
Yukarıdaki basit devrenin aksine, işlemci içerisindeki mikro devrelerde komut setine göre ön tanımlı olarak bulunan bir hayli durum bulunmaktadır ve uyumlu programlardan gelen komutlar bu mikro devrelerde işlenerek verilen emir yerine getirilir.
 
Temel görevi, bilgisayardaki herhangi bir hafıza biriminde depolanan ve program dediğimiz komut yığınlarını uygulamak olan işlemci, bunu dört adımda gerçekleştirir: çağırma, dekode etme, yürütme ve geri yazma.
 
Çağırma diyebileceğimiz ilk aşamada komut, sayı veya sayılarca temsil edilen program hafızasından işlemciye getirilir. Komutun program hafızasındaki yeri bir program sayacı tarafından belirlenir, ki bu da işlemcinin programa ait komutları yürütmede nerede kaldığını işaretler.
 
İşlemcinin hafızadan çağırdığı komut, işlemcinin ne yapacağını belirler. Çağrılan komutun dekode edilmesi aşamasında, komut, işlemci içindeki bölümlere (belli tip işlemleri belli mikro devreler gerçekleştirir) gönderilecek şekilde parçalara ayrılır. Bu komutun sayısal yapısı komut seti mimarisince önceden tanımlanmıştır. Çoğunlukla komut satırındaki sayılardan bir bölümü yapılacak işlemin ne olduğu bilgisini, diğer bölümleri ise işleme ait lüzumlu verilerin kendisini veya bunların bulunduğu hafıza kısmına ait adresi içerir, ki adreslemeye de ait muhtelif usuller bulunmaktadır.
 
Komutun çağrılması ve dekode edilmesinden sonra komutun yerine getirilmesi aşaması gelir. İstenen işlemin yapılması için işlemcinin birçok bölümü birbirine bağlı olarak çalışır. Mesela bir toplama işlemi için, toplanacak girdilerin gönderileceği kısım, basit aritmetik işlemleri ve mantık işlemlerinin gerçekleştirilebileceği devrelere sahip işlemci bölümü olan “Aritmetik Mantık Birimi”dir (ALU: Arithmetic Logic Unit).
 
Son aşama ise basitçe, yürütülen işlemin sonucunun yazılması işlemidir. Duruma göre işlemci içindeki “register” denen kısma, önbelleğe veya daha yavaş hafıza birimlerine sonuç kaydedilebilir.
 
Bir komutun işlenmesi için uygun bölümlere aktarılması, işlemci içindeki kontrol birimi tarafından gerçekleştirilir. Bilgisayarın muhtelif bileşenleri bu kontrol birimi tarafından yönetilir; komutları okur, dekode eder ve komutun gerektirdiği bileşenlere elektrik sinyalleri gönderir. Kontrol birimindeki bir diğer önemli bileşen de, özel bir hafıza hücresidir (register) ve burada bir sonraki komutun nereden alınacağının bilgisi tutulur. Kontrol ünitesi kabaca şu işi yapar:
 

1. Program sayacının belirlediği bir sonraki komutu içeren kodu ilgili hafıza hücresinden okur.
2. Gelen sayısal komutu ilgili bileşenler için bir dizi komut veya sinyale dönüştürür.
3. Program sayacını yükselterek komut dizisinde kalınan yeri işaretler.
4. Komutun ihtiyaç duyduğu verileri ilgili hafıza hücresinden okur, ki bu verilerin hafızadaki adresi gelen kodda belirlenmiştir.
5. Aritmetik mantık birimi (ALU) veya “register”a gerekli veriyi sağlar.
6. Komut eğer bir aritmetik işlem birimi (ALU) veya özel bir donanım bileşenini gerektiriyorsa, ilgili bileşene gerekli bilgiyi aktarır.
7. Aritmetik işlem biriminden veya diğer donanım bileşeninden gelen sonuç bir hafıza hücresine, “register”a veya bir çıkış aygıtına yazılır.
8. Tekrar birinci adıma dönülür.
 
Bütün birimleri bir saat sinyaline göre senkronize edilen devrelere senkronize devre denir. İdeal bir senkronize devrede, depolama birimlerine ait her mantık seviyesindeki değişimler senkronizedir, yani eşzamanlıdır. Bu geçişler, saat adı verilen özel bir sinyal değişimine tabidir. Yani devreye ait bütün birimler, bir sonraki saat sinyalinden önce işlemlerini tamamlayarak nihai durumlarına gelmiş olurlar. Böylece devrenin neyi nasıl yapacağı tam olarak öngörülebilir hale gelir.
 
İşlemciler de yapıları itibarıyla senkronize devrelerdendir, yani bir senkronizasyon sinyaline ait varsayımlara göre dizayn edilir ve çalışırlar. Saat sinyali denen bu sinyal genellikle periyodik kare dalga şeklindedir. İşlemcinin muhtelif devrelerine elektrik sinyallerinin azami ulaşım süresi hesaplanarak, işlemci için uygun saat sinyalinin periyodu belirlenir. Bu periyot işlemci içinde elektrik sinyalinin dolaşımından daha uzun bir zamanlamaya sahip olmak zorundadır. Yani ikinci saat vuruşu, en kötü durum hesaba katılarak, önceki elektrik sinyali işini bitirdikten sonra gerçekleşecek şekilde belirlenir.
 
Saat hızı ile ifade edilen ise; herhangi senkronize devre için saniyedeki saat vuruşu sıklığıdır ve “herts” olarak ölçülür. Her ne kadar saat hızı dense de, “hız” kelimesi nedeniyle, belli zamandaki yer değiştirme miktarını ifade eden hız ile (mesela m/sn.) karıştırılmamalıdır.
 
İşlemciler için saat hızı, ancak üretim süreci bittikten sonra belli testlerin uygulanması ve testler için yeterli sonuçların alınması neticesinde belirlenir. Mesela bir işlemci ailesine ait bazı işlemciler düşük saat hızına sahipken bazılarının saat hızları çok daha yüksektir ve daha pahalıdırlar. Aynı işlemci ailesine mensup işlemcilerin performansı saat hızına göre değerlendirilebilir ama özellikle günümüzde, farklı işlemci ailelerine mensup işlemcilerin karşılaştırılmasında saat hızını baz alma gibi bir hataya düşülmemeli, testlere müracaat edilmelidir. Yukarıda temel ve basit olarak izah etmeye çalıştığımız nedenlerden ötürü, saat hızı sadece işlemcinin devreleri arasındaki senkronizasyon sinyalinin sıklığını ifade eder. Halbuki işlemcinin gücünü esas olarak belirleyen, birim zamanda (mesela saniyede) ne kadar komutu işleyebildiğidir (Instructions per second) ve bunu da belirleyen birçok faktör vardır: işlemcinin mimarisi, komut seti mimarisi, çekirdek sayısı, saat hızı, ön bellek miktarı vs.
 
RAM (Rastgele Erişim Hafızası-Random Access Memory):
 
Rem, bir bilgisayar hafızası çeşididir. İşlemci remde bulunan veriyi herhangi bir sırayla çağırabilir ve bu verinin aktarılması, verinin remde işgal ettiği konumdan bağımsız olarak sabit ve belirli olan bir sürede gerçekleşir. Sabit disk gibi bileşenlerde olduğu üzere, verinin konumuna göre erişim hızında değişiklik söz konusu değildir. Yani “RAM” isminde geçen “rastgele” olma durumu, verinin konumundan bağımsız olarak, erişim hızının sabit olması nedeniyledir. İşlemciye “bus” denen bağlantı şekliyle bağlıdırlar ve bu hızlı veri alış-verişi sağlar. Remde depolanan veriler geçicidir, bilgisayar kapatıldığında veriler de silinmiş olur.
 
Remlere bir sürü hücreden oluşan depolama birimleri gözüyle bakabiliriz. Her bir hücre tıpkı kapı numarası gibi numaralandırılmıştır ve bu numaraya adres denir. İşlemciye gelen komut satırındaki hafıza adresine göre işlemci remdeki verileri çağırır.
 
32-bit, 64-bit:
 
Yukarıda ifade ettiğimiz birçok hususa nazaran daha “magazinel” diyebileceğimiz, çok fazla sorunun sorulduğu bir meseleye gelmiş bulunuyoruz. En yalın haliyle "x"-bit; işlemciye ait komutların ikilik sistemdeki uzunluğunu, yani kaç karakterden oluştuğunu ifade eder. Yani işlemciye gelen ve işlemcinin bir seferde gerçekleştirdiği operasyona ait emir, 32 veya 64 karakterden oluşur. Sadece komut satırları değil, hafıza hücrelerine ait adresler ve diğer veriler de 32 veya 64-bit uzunluğundadır. Basit bir örnekle izah edece olursak; mesela "Ali gel" ve "Okul açıldı" cümlelerinin birer 32-bitlik birer komut olduğunu farzedelim. 32-bit bir işlemci veya işletim sistemi "Ali gel/Okul açıldı" komutlarını iki defada işleyebilir. Ama 64-bit bir işlemci ve işletim sistemi ise yukarıdaki cümleyi tek seferde işeyebilecektir.

Dolayısıyla, günümüz şartlarını göz önüne alacak olursak, bit meselesi öncelikle işlemciyle ilgili olup mesela 64-bit komut setini öncelikle işlemci desteklemelidir. Buna paralel olarak 64-bit işlemci üzerine 64-bit işletim sistemi ve programlar kurulduğu durumda ancak bunun getirilerinden yaralanılabilir. Sonuçta 64-bit sistem üzerine 32-bit işletim sistemi veya program uygulanması durumunda, işlemciye gelen komutlar 32-bit uzunluğunda olacak ve işlemcinin bir seferde işleyebileceği komut daha sınırlı olacaktır.

32 ve 64-bit komut seti mimarisinin en belirgin noktalarından biri de hafıza adreslemesidir. İkilik sayı düzeninde 32-bit sistemde en fazla 2^32 (iki üzeri otuz iki) = 4.294.967.296 = 4 GB adette hafıza hücresi işaretlenebilir, yani adreslenebilir. Bu yüzden çoğu durumda (özel durumlar hariç) 32-bit işletim sistemi yapısal olarak 4 GB rem kullanabilir en fazla.

64-bit ile ilgili daha detaylı bilgi için bakınız:
https://www.chip.com.tr/forum/64- ... gildir_t104043.html

Ekran Kartı (Grafik İşlem Birimi-GPU):
 
Ekran kartı, salt grafik verilerinin işlenmesi için tasarlanmış ve grafik işlenmesine ait komutların işlemci tarafından kendisine gönderildiği, kendine has bir işlemcisi, komut seti mimarisi, remleri ve hatta anakartı olan apayrı bir donanım bileşenidir. Bir nevi sistem üzerinde sistem de denebilir.
 
Yukarıda bilgisayara ait temel meseleleri işlerken çok açık bir şekilde gördüğümüz üzere işlemci sistemin esas işi yapan temel bileşenidir. Bu durum ekran kartları için de aynıdır ve ekran kartının performansını belirleyen esas faktör, ekran kartının işlemcisidir (GPU). Çoğunlukla ekran kartının hafıza büyüklüğüne veya komut seti yapısına göre veya hafıza hızına göre bir performans algısı bulunmaktadır ama bu yanlıştır. Konuyla ilgili şimdilik ekran kartı performans sınıflandırmasına ait bir link vererek bu kısmı geçiyoruz:
 
https://www.chip.com.tr/forum/ekr ... in-alma_t82149.html
  
Sabit Disk (HDD):
 
Kısaca program ve verilerin depolandığı, okunup yazılabilen, sabit ama daha düşük hızlarda veri alış-verişi yapılan, çoğunlukla yüksek kapasiteli ve esas işi depolamak olan donanım bileşenidir.

Anakart:

Bilgisayarı oluşturan bütün önemli donanım bileşenlerini bir arada tutan ve birbirine bağlayan iskelet yapıdır diyebiliriz kısaca.
 
Buraya kadar ifade ettiğimiz konular, inşallah bir süre sonra ele alacağımız işlemci mimarileri, remler ve ekran kartlarıyla ilgili kısa incelemelerin havada kalmamasını sağlayacak temel bilgileri kısaca ve mümkün olduğunca basitçe açıklığa kavuşturabilmek içindi.
 
Katkıları için Serdar Gökçen'e (PCMAKER) teşekkür ederim.

Son Düzenleme: Süleyman. ~ 12 Ocak 2010 19:59
_hEro
22-12-2009, 02:55   |  #2  
_hEro avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
3,428 mesaj
Kayıt Tarihi:Kayıt: Tem 2009

Özellikle işlemci ve işleyişi konusunda önemli bilgiler mevcut.Mutlaka okunmalı.
Ellerine kollarına sağlık Süleyman abi :)

Son Düzenleme: _hEro ~ 22 Aralık 2009 02:56
Süleyman.
22-12-2009, 03:38   |  #3  
OP Yıllanmış Üye
Teşekkür Sayısı: 3
16,587 mesaj
Kayıt Tarihi:Kayıt: Mar 2009
Alıntı: _hEro  
Özellikle işlemci ve işleyişi konusunda önemli bilgiler mevcut.Mutlaka okunmalı.
Ellerine kollarına sağlık Süleyman abi :)
Teşekkür ederim abicim. Okuyanlara da sağlık. :)

01apachi
22-12-2009, 23:31   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,618 mesaj
Kayıt Tarihi:Kayıt: Ağu 2008

abi peki sanal çekirdek ile ilgili bilgi verirmisin?

Süleyman.
23-12-2009, 00:35   |  #5  
OP Yıllanmış Üye
Teşekkür Sayısı: 3
16,587 mesaj
Kayıt Tarihi:Kayıt: Mar 2009
Alıntı: 01apachi  
abi peki sanal çekirdek ile ilgili bilgi verirmisin?
İlgili Wikipedia maddesine bakalım:
http://en.wikipedia.org/wiki/Hyper-threading
 
Öncelikle, HT (Hyper Threading) Intel'e ait bir teknoloji. Uygun, yani destekleyen işlemcilerin tek seferde birden fazla işlemi yapması temeline dayanıyor. Gerçekte var olan her bir işlemci çekirdeği için işletim sistemi iki adet sanal işlemci adresler ve mümkün olduğu zaman da iş yükünü bunlar arasında paylaştırır. HT için gereken, işletim sisteminin çoklu çekirdeği desteklemesidir.
 
HT, işlemci içindeki bazı bölümlerin (mimari yapının depolandığı bölümler, temel işlem bölümleri değil) iki adet olarak tasarlanmasıyla çalışır. Bu sayede HT destekli işlemcinin her bir çekirdeği, işletim sistemi tarafından iki mantıki çekirdek olarak algılanır.
 
Konuyla alakalı Intel'e ait iki demo:
 
http://www.cti-phil.com/demo.htm
http://www.intel.com/technology/product/demos/multi/demo.htm

Son Düzenleme: Süleyman. ~ 23 Aralık 2009 02:47
01apachi
23-12-2009, 03:03   |  #6  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,618 mesaj
Kayıt Tarihi:Kayıt: Ağu 2008

sağolasın ağbey

Süleyman.
23-12-2009, 11:09   |  #7  
OP Yıllanmış Üye
Teşekkür Sayısı: 3
16,587 mesaj
Kayıt Tarihi:Kayıt: Mar 2009
Alıntı: 01apachi  
sağolasın ağ
Rica ederim.

ADEM-KAYA
31-12-2009, 21:26   |  #8  
ADEM-KAYA avatarı
Yıllanmış Üye
Teşekkür Sayısı: 10
12,271 mesaj
Kayıt Tarihi:Kayıt: Oca 2009

Süleyman abi emeğine saygılar.Forumda böyle bir yazı olması geçrekten çok faydalı olmuş.
 
Serdara da teşekkürler.
 
Rem hakkında şunuda ekleyebiliriz;
Remin çalışma frekansından çok  kapasitesi önemlidir.
Remin görevi depolamaktır.

alper35.5
14-03-2010, 00:13   |  #9  
alper35.5 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Oca 2010

eline sağlık abi.