Bir Bilgisayar Nasıl Çalışır? Bit & Byte
Bir Bilgisayarı Neler Oluşturur? Bilgisayar gibi düşündüğümüzde ilgilenmemiz gereken 3 alan bulunur Hardware: Bilgisayarın fiziksel kısmı System Software: Donanımı kullanmak ve kontrol etmek için kullanılan genel program (OS / İşletim Sistemi) Application Software: Bilgisayarı çalıştıran veri ve uygulamalar Bu sunumuzda bitler ve byte’lar; sayısal bilgiler işleyen bir bilgisayarın nasıl çalıştığını göreceğiz. Sunumun tümünü detaylı olarak dinlemenizi öneririm. Dersin tümü animasyonlar ve çeşitli simülasyonlar ile anlatılmıştır. Dersi kendileri anlatmak amacında olan teknik lise öğretmenlerimiz için tüm bu araçlar sunum ile birlikte sizlere verilmiştir. Bir bilgisayarın nasıl düşündüğünü anlamak için önce bazı kavramlara bakalım. Bir bilgisayarı neler oluşturur? Hardware – Bilgisayarın fiziksel kısmı, örneğin ekranı, işlemcisi, hafıza ve hard disk bölümü..vesaire, System Software – bu donanımı kullanmak ve kontrol etmek için kullanılan genel program (OS – işletim sistemi) ve Application Software – bilgisayarı çalıştıran veriler, girdi ve çıktılar ve uygulamalardır. Bu kavramları bildiğinize eminim.
Bilgisayar Ana Ünitesi İçindeki Bileşenler Processor (İşlemci) Memory (Hafıza) Anakart Adaptör Kartları Ses Kartı Ekran kartı Portlar Sabit disk veya optik sürücüler ve yuvaları Power Supply (Güç kaynağı) Power Supply Drive Bays Processor Ports Memory Bilgisayarın ana ünitesi bazen işlemcisi olarak da adlandırılır. Aslında işlemci bu ana ünitenin içindeki bileşenlerden sadece biridir. İşlemci yani CPU yanından ana ünitenin içinde hafıza birimleri, anakart, ses kartı veya video kartı gibi ek kartlar, bu birimlere dış Dünyadan bağlantıyı sağlayan portlar, Hard disk, DVD veya CD gibi optik sürücüler ve bunların tümünü besleyen güç kaynağı bulunmaktadır. İşte bunların hepsi ana ünitenin dahili bileşenleri olarak adlandırılır. Sound Card Video Card
İşlemci / Processor CPU bilgisayarın beynidir Tüm aritmetik işlemler I/O birimleri yönetimi Hafıza ve HDD üzerindeki bilgi akışının organizesi Kontrol işaretlerini üretme Komutları yorumlama Komutları işleme CPU 2 ana bölümden oluşur Control Unit Arithmetic Logic Unit (ALU) İşlemci Kontrol Birimi Aritmetik Birim (ALU) Komutlar Veri Bilgi Hafıza (Bellek) Giriş Aygıtları Veri Bilgi Çıkış Aygıtları İşlemci bir bilgisayarın tüm artimetik logic hesaplama işlemlerini yapan, bilgisayarın giriş çıkış birimlerini yöneten, hafıza ve hard disk üzerindeki bilgi akışını organize eden, bu amaçla tüm kontrol işaretlerini üreten adeta beynidir. Bir bilgisayarın çalışmasını anlatırken aslında bir anlamda bilgisayarın çalışmasını sağlayan basit komutları yorumlayan ve işleyen işlemciyi anlatıyoruzdur. İşlemci iki ana bölümde incelenebilir. Kontrol devresi ve aritmetik logic devreleri. Hafıza birimi ile işlemci arasında veri ve komut akışı, yine burada gördüğünüz depolama birimleri ile hafıza birimi arasında veri program komutları akışı söz konusudur. Yine işlemci burada gördüğünüz örneğin tuş takımı gibi girdi birimlerinden ve ekran gibi çıktı birimlerine olan veri akışını da kontrol eder. Komutlar Veri Bilgi Depolama Aygıtları
İşlemcinin Ana Çalışma Döngüleri Bellek (RAM) 4. Evre: Store Sonuçlar hafızaya geri yazılır 1. Evre: Fetch Veri yada program komutları hafızadan alınır İşlemci Bu temel çalışma anlatımından sonra daha detaya girelim. İşlemcinin basit komutları arka arkaya işlediğini biliyoruz. Peki işlemci çalışma süreci hangi döngüleri içerir. Burada bunu görüyoruz. 1. adım Fetch Komut alma yani hafızada “program” olarak adlandırılan yazılıma ait tek bir satırın okunması aşamasıdır. 2. adım Decode yani komutun çözüldüğü, işlemcinin ne işlem yapacağını anladığı adımdır. 3. Adıma gelindiğinde komut okunmuş ve ne yapılması gerektiği çözülmüştür. 3. adım Execute yani yürütme adımıdır. ALU biriminde komut yürütülür; işlem yapılır. 4. adım ise işlem sonucunun hafızaya tekrar yazılması yani Store aşamasıdır. Bu aşamalar işlemcinin ana döngüleri olarak adlandırılır. İşlem Birimi (ALU) Kontrol Birimi 3. Evre: Execute Komutlar işlenir 2. Evre: Decode Alınan komutlar yorumlanır
System Kristali / Saati (Clock) Tüm bilgisayar işlemlerinin zamanlamasını kontrol eder Sistemde çalışan parçaların senkron bir şekilde çalışması için düzenli elektronik pulse yada tick oluşturur Sistem saatinin hızı clock speed ile ifade edilir Genellikle saat hızları gigahertz’ler (GHz) seviyesindedir 1 GHz, saniyede sistem saatinin bir milyar darbe oluşturmasıdır İşlemcideki tüm işlemler bir kristale bağlı saat devresinin oluşturduğu saat darbeleri ile senkronizedir. Günümüzde GHz, yani saniyede milyar kere darbe üreten saat devreleri işlemcinin çalışma frekansını belirler.
Veri Gösterimi, İkili Sistem ve Bit Kavramı Bilgisayarda veriler “digital” şekilde, yani ikili tabanda gösterilir Bilgisayarlar yanlızca 1 ve 0 değerleri üzerinde işlem yaparlar 1 ve 0, “on/off” veya “açık/kapalı” durumlarını tanımlar Bu iki durumu tanılamak için ikili (binary) sistem kullanılır İkili sistem 1 ve 0 sayılarından oluşan matematiksel bir sayma sistemidir. Her sayıya “binary digits” kelimelerinin kısaltılmışı olan “Bit” denir Bilgisayar verileri nasıldır? Nasıl gösterilir ve bilgisayar bunları nasıl algılar. Biraz da buna bakalım. Bilgisayarın ikili tabanda işlem yaptığını hemen hemen hepimiz biliriz. Elektriksel olarak ON ikili tabanda “1” seviyesine ve yine elektriksel olarak OFF ise ikili tabanda “0” seviyesine karşı düşer. Sadece “0” veya “1” değeri alabilen bu sayma sistemine Binary, yani ikili sistem denir. Bu sayma sisteminin tek bir hanesine bit denir.
Byte Kavramı 8 Bit’in gruplanması ile oluşturulan birimdir Veriler Byte ve Byte’ın katları olarak depolanır (KB, MB, GB) 256 farklı karakterin gösterimi için “1” ler ve “0” lardan oluşan yeterli farklı kombinasyonu sağlar Numaralar Büyük ve küçük harfler Noktalama işaretleri 8 tane bitin yan yan gelmesi ile bir byte oluşur. “0” veya “1” lerden oluşan sayısal bilgiler onluk sayma düzeninde olduğu gibi yan yana gelen rakamların basamaklar şeklinde farklı ağırlıkta olması ve yan yana gelerek veri ifade edebildiği gibi burada 3. örnekteki gibi belirli bir kodlama tekniği ile farklı bilgiler, örneğin alfabetik harfleri de simgeleyebilir. 8 tane bit, yani bir byte ile 256 farklı sayısal bilgi ifade edilebilir. Bunlar sayılar, büyük veya küçük harfler veya bildiğimiz tüm noktalama işaretleri olabilir.
Onlu (Decimal) Gösterim Her basamak için 10 olası değer (0-9) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ??? Sonra ne yaparız? En sağdaki basamak birler basamağı (0’dan 9’a), Sonraki onlar basamağı (10’dan 90’a), Sonraki yüzler basamağıdır (100 den 900 e) vb... 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, …, 98, 99, 100, vb. Örneğin, 506 6 bir, 5 yüz (6 x 100) + (0 x 101) + (5 x 102) = 506 (6 x 1) + (0 x 10) + (5 x 100) = 506 İnsanın algılayabileceği sayma sistemi onluk düzendir. Onluk sayma siteminde 0,1,2,3,4,5,6,7,8 ve 9 simgeleri bulunmaktadır; ki biz buna rakam diyoruz. Daha yüksek sayılar için bu rakamların yan yana gelmesi gerekir. Onluk sayma sisteminde bu simgelerin en düşük anlamlı hane yani birler basamağındaki değeri ile örneğin bir sonraki basamak olan onluk hanesindeki değeri on misli farklıdır. Örneğin onluk düzende 506 sayısında 6 tane bir, 0 tane on ve 5 tane yüz vardır. Bunu biliyoruz. Burada yine 506 sayısının 10’un katları şeklinde gösterimi görülmektedir. 6 x 10^0 (herhangi bir sayının sıfırıncı kuvveti birdir) + 0 x 10^1 + 5 x 10^2
İkili (Binary) Gösterim Her basamakta sadece 2 olası değer (0 veya 1) 0, 1, ??? Sonra ne yaparız? En sağdaki basamak birler basamağı (0 ve 1), Sonraki ikiler basamağı (1’den 2’ye), Sonraki dörtler basamağı (1’den 4’e) vb... 0, 1, 1 0, 1 1, 1 0 0, 1 0 1, …, 1 1 0 1, 1 1 1 1, vb. Örneğin, 1 1 0 1 iki, 1 dört (0 x 20) + (1 x 21) + (1 x 22) = 1 1 0 (0 x 1) + (1 x 2) + (1 x 4) = 1 1 0 Şimdi ikili düzende benzer bir düşünüşe yakından bakalım. Burada sadece “0” ve “1” simgeleri birinci yani en az anlamlı haneden sonra ikinci basamağa konulduğunda ağırlığının ikili sayma düzeninde 2 ve 3. hanede 4 misli olduğunu söylemeliyiz. Yani her sayma düzeninde basamakların ağırlıkları sayma düzeninin katlarıdır. Örneğin 110 ikili düzendeki sayı 0 tane 1, 1 tane 2 ve 1 tane 4 ifade eder. Bunları toplayarak verinin büyüklüğü tespit edilir. Matematik gösterimi ise 0 x 2^0 + 1 x 2^1 + 1 x 2^2 şeklindedir. İkili düzende her basamağın ağırlığı ikinin katları şeklindedir. 1,2,4,8,16,32,64 ve 128 gibi.
Binary (ikili – 2 tabanında) Sistem Üstler 6 5 4 3 2 1 2 tabanında eşitlik n = 1 veya 0 26 x n 25 x n 24 x n 23 x n 22 x n 21 x n 20 x n Üst Sonuçları 64 32 16 8 İkili Gösterim Sonuç 77 Bu tabloda 7 bitlik bir ikili düzen sayısını bizim anlayacağımız onluk düzene dönüşmesini göreceğiz. Burada 0,1,2,3,4,5,6 ‘cı basamakları görüyoruz. Bu satırda ise 2’nin katları şeklinde her basamağın ağırlığı görülmektedir. En düşük ağırlıklı basamak buradaki en düşük bit 2^0 (yine burada her sayının 0’cı üstünün bir olduğunu tekrar hatırlayalım) yani 1 değerinde, bir sonraki basamak 2^1 = 2 değerinde, bir sonraki 4 ve sonraki 8, 16,32 ve 64 değerindedir. Şimdi sayımızın 1001101 oluğunu farz edelim. Bu durumda 1 olan basamakların ağırlıklarını tam olarak aşağıya yazar ve 0 olan haneleri ise 0 olarak geçersek 64+8+4+1 =77 ‘yi buluruz. Bilgisayar ikili sayma düzenindeki verileri bu şekilde algılar. İkinin katları şeklinde ağırlıklandırılmış basamaklar ile…
Veri Gösterimi (Input/Output) Bir harf nasıl ikili sisteme çevrilir ve geri döndürülür Adım 2. “D” harfi için elektronik sinyal sistem ünitesine gönderilir Adım 1. Kullanıcı klavyeden “D” (shift+D) tuşuna basar Peki girdi ve çıktılardaki veriler nasıl algılanır veya gösterilir. Buna biraz daha yakından bakalım. Öncelikle tuş takımına basıldığında ne olur? Tuş takımı üzerinde sıralanmış tüm tuşlar satır ve sütün konumlarına göre kodlanmıştır. Örneğin benim tuş takımımda “D” harfi 4. satırda ve 4. sütunda. İlk olarak bu bilgilere ait sayısal işaretler bilgisayara gönderilir. Bilgisayar “D” harfine ait bu satır ve sütün bilgilerinden sayısal ASCII “D” kodunu algılar. 01000100. Bu veri hafızaya işlenir ve son olarak bu koda paralel, ekranda “D harfi tekrar oluşturulur. Adım 3. “D” harfi için sinyal ASCII ikili koda (01000100) dönüştürülür ve işlenmek için hafızada saklanır Adım 4. “D” harfinin ikili kodu üzerinde işlem yapıldıktan sonra kod görüntüye çevrilir ve çıkış aygıtında gösterilir
ASCII Nedir? ASCII: American Standard Code for Information Interchange Latin alfabesi üzerine kurulu 7 bitlik bir karakter setidir ANSI X3.110-1963 adıyla bir standart olmuştur Sembolleri gösterebildiğimiz tek yolun bu olmadığına dikkat edin Symbol Decimal Binary 7 55 00110111 8 56 00111000 9 57 00111001 : 58 00111010 ; 59 00111011 < 60 00111100 = 61 00111101 > 62 00111110 ? 63 00111111 @ 64 01000000 A 65 01000001 B 66 01000010 C 67 01000011 Code for Information InterchanHemen burada ASCII kodlamasından bahsedelim. ASCII American Standard ge, Bilgi Değişimi İçin Amerikan Standart Kodlama Sistemi demektir. Latin alfabesi üzerine kurulu 7 bitlik bir karakter setidir. İlk kez 1963 yılında ANSI tarafından standart olarak sunulmuştur.
EBCDIC Nedir? EBCDIC: Extended Binary Coded Decimal Interchange Code IBM tarafından kullanılan bir karakter kümesi ailesidir Daha çok OS/360 işletim sistemi ve S/390 sunucularında kullanılır Harf, rakam, işaretleri karşılayan 256 farklı sembolü kodlayabilir ASCII Symbol EBCDIC ASCII dışında özellikle eski tip büyük bilgisayar sistemlerinin kullandığı EBCDIC kodalamayada burda değinmek istiyorum. EBCDIC (Extended Binary Coded Decimal Interchange Code = Genişletilmiş İkilik kodlu Ondalık Değişim Kodu) IBM tarafından kullanılan bir karakter kümesi ailesidir. Daha çok OS/360 işletim sistemi ve S/390 sunucularında kullanılır. Harf, rakam, işaretleri karşılayan 256 farklı sembolü kodlayabilir. 00110000 0 11110000 00110001 1 11110001 00110010 2 11110010 00110011 3 11110011
RAM Nedir? RAM = Random Access Memory İşlem sırasında kullanılacak verilerin saklandığı alandır Kalıcı depolama amacıyla kullanılmaz Performans ve yazılım desteği açısından yeterli ve kaliteli RAM’e sahip olmak kritiktir derecede önemlidir Hafıza bilgisayarın tüm programlarının yüklediği, işlem sonuçlarının ve diğer verilerin geçici olarak yazıldığı birimidir. RAM Random Access memory yani rastgele erişilebilen hafıza birimleri işlemci tarafından adreslenerek veri yazılması ve okunması amacıyla geçici depolama birimleri olarak kullanılır. RAM’deki bilgiler sistem kapatıldığında kaybolur. Daha fazla RAM, daha hızlı çalışan bilgisayar demektir.
Program Komutları ve RAM İşletim Sistemi Komutları İşletim Sistemi Arayüzü Adım 1: Windows’u açmak Web Tarayıcı Ekranı Web Tarayıcı Program Komutları Adım 2: Internet tarayıcı yazılımını açmak Word Yazılımı Program Komutları Word Yazılımı ve Web Tarayıcı Ekranı Adım 3: Word yazılımını açmak Hafıza biriminin bilgisayarın çalışmasında fonksiyonlarına biraz örnekler verelim. Örneğin, bilgisayarı açtığınızda belirli işletim sistemi dosyaları hard diskten RAM’e yüklenir. İşletim sistemi ekranda kullanıcı ara yüzünü gösterir. Örneğin bir web tarayıcıyı açtığınızda, program komutları hard diskten RAM’e yüklenir. Web tarayıcı penceresi ekranda gösterilir. Bir kelime işlemci programını açtığınızda, program komutları hard diskten RAM’e yüklenir. Kelime işlem programı, Web tarayıcı ve belirli işletim sistemi komutlarıyla birlikte RAM de dir. Kelime işlemci programı ekranda gösterilir. Örneğin bir web tarayıcı gibi bir programdan çıktığınızda, program komutları RAM den atılır. Web tarayıcı artık ekranda daha fazla gösterilmez. Web Tarayıcı Program Komutları Adım 2: Internet tarayıcı yazılımını kapatmak Kelime İşlem Programı Ekranı
SI540 Fall 2003. © David Messerschmitt, Paul Resnick, Kelly Garrett. Yarı İletken Hafıza Uçucu: RAM (Random Access Memory) Her hafıza alanına eşit hız ile ulaşabilir İsim yanıltıcıdır, ROM da aynı şekilde çalışır Static (SRAM) vs. Dynamic (DRAM) güç tüketimine ve hıza etki eder SRAM genellikle düşük güç tüketimi, hızlı DRAM genellikle sistem hafızası olarak kullanılır Birçok DRAM türü günümüzde kullanılmaktadır: SDRAM, DDR SDRAM, RDRAM, vb. Kalıcı: ROM (Read Only Memory) İçindeki verileri güç kesilse de koruyabilir Bilgisayar içinde chipler halindeki hafıza birimleri RAM rastgele erişimli hafıza ve ROM sadece okunabilir hafıza şeklinde iki tiptir. RAM tipleri SRAM, statik RAM ve DRAM, dinamik RAM şeklindedir.
Salt Okunur Hafıza (ROM) ROM: Read-Only Memory Kalıcı veri ve komutları depolayan hafıza çipidir ROM’lar üzerinde bulunan veri özel işlemler uygulanmadan değiştirilemez Veriyi elektrik bağlantısı kesilse de saklar Firmware: Kalıcı yazılmış veri, komut yada bilgiden oluşur Diğer bir hafıza biriminden de bu noktada bahsetmek istiyorum. ROM, Read only memory sadece okunan ve yazma işlemi ise özel işlemler ile yapılabilen bir hafıza birimidir. Kalıcı verileri ve BIOS, firmware gibi komut dizinlerini içeren hafıza birimleri bu tiptir.
Hafıza Ölçüm Birimleri Byte (B) = 8 bit Kilobyte (KB) = 1024 Byte Megabyte (MB) = 1024 KB = 1,048,576 Byte Gigabyte (GB) = 1024 MB = 1,073,741,824 Byte Terabyte (TB) = 1024 GB = 1,099,511,627,776 Byte Hafıza birimlerinin kapasitesi ve veri yolu sayısı ikili sayma düzenindedir. Bu tabloda hafıza kapasiteleri için kullanılan birimleri görüyoruz. Bit için küçük harf “b” harfi ve byte içinse büyük harf “B” harfi kullanıldığına dikkat edin. “K” kilo, yani bin anlamında, mega bir milyon ve giga ise bir milyar anlamındadır.
Basit Bilgisayar nasıl çalışır ? 1. Adım: Komut sayacının değerine bakmak (Program Instruction Counter) 2. Adım: Sayacın gösterdiği konuma bakarak program komutunu okumak 3. Adım: İlgili işlemi gerçekleştirmek 4. Adım: Komut sayacını 1 arttırmak Bunun için kamut sayacı increment komutunu kendi üstünde yürütür Bazı komutlar için bu adım atlanır Branch’lar (dallanmalar) daha sonra tanıtılacak) Dur denene kadar tekrarlama Şimdi adım adım bir işlemcinin çalışmasını görelim. Birinci adım işlemcinin hani komutu okuyacağı bilgisini tutan program komut sayacının değerine bakmaktır. Program sayacı sıranın hangi komutta olduğunu söyler. İkinci adımda program sayacının belirttiği hafıza gözündeki program komutu okunur ve komut algılanır, yani çözülür. Üçüncü adımda komutun belirttiği işlem işlemci tarafından yürütülür. Son adım program sayacının bir sonraki döngü için değerinin arttırılmasıdır. Böylece program sayacı bir sonraki komutu adresler. Tabii ki branch yani dallanma; atlama komutları ve “dur” komutu istisnadır. Dallanma komutunda bir arttırılmak yerine program sayacına dallanılacak adres yüklenir.
Örnek CPU Komutlar İşlem komutları Hafıza komutları Add (Hafıza konumunda belirtilen sayıları topla) Subtract (Hafıza konumunda belirtilen sayıları çıkar) Hafıza komutları Store (Hesap Makinesi Sonucu Hafıza Alanı) Load (Hesap Makinesi Hafıza Alanındaki Değer) Giriş / Çıkış komutları Get (Giriş Değeri Hesap Makinesi) Put (Hesap Makinesi Çıkış Alanı) Dur 000 1xx Add (calc + blackboard) 2xx Subtract (calc - blackboard) 3xx Hafızadan okunan komutlara biraz daha yakından bakalım. Burada bazı örnekleri görüyoruz. Örneğin ADD toplama komutu, SUB çıkarma komutu gibi… Merkezi İşlem Biriminin (Central Processing Unit –CPU) temel olarak Aritmetik ve mantıksal işlemlerin yapılabildiği birim ALU (Arithmetic logic unit), bu işlemlere kaynak olan ve sonuçlarının tutulacağı kaydediciler (Registers) ve gerekli kontrol devrelerinden oluştuğunu görmüştük. Burada hemen Akümülatör adlı önemli bir özelliği olan bir kaydediciyi de tanımlayalım. Merkezi işlem biriminde işlemlere hem kaynak olan hem de sonucun elde edileceği kaydediciye Akümülatör denir. Akümülatör örneğin bir toplama da toplanacak sayılardan birini tutar ve sonuçta yine Akümülatöre yazılır. Burada hafıza gözleri üzerinde işlemler yapan komutlara bazı örnekler verelim. İşte burada gördüğünüz hafıza komutları doğrudan hafıza gözlerindeki verinin akümülatör veya benzeri yazıcılara yüklemesi; LOAD işlemi veya tersine işlemi, bilginin hafıza gözlerine kaydı STORE işlemini görüyoruz. Burada GET ve PUT gibi giriş çıkış komutlarını ve DUR gibi en temel komutları da görüyoruz. Store (calculator->blackboard) Load (blackboard location->calculator) Branch Branch Zero Branch Positive 5xx 6xx 7xx 8xx 901 902
Makine Dilinde Örnek Bir Program Programlar, çok basit bir şekilde sıralanmış komutlardır Dikkatli küçük bir çocuk bile komutları takip edebilir. İki sayıyı toplayan makine dilinde örnek bir yazılım: Get 2 Girdi aygıtından 2 değeri okunur Add 2 Okunan değerin, yani 2’nin üzerine 2 eklenir Programlar hafızada sıralanmış komutlardır. Komutlar aslında çok temel ve basittir. Topla, çıkar, yükle ve sakla gibi. Şimdi örnek bir programa bakalım. İki sayıyı bilgisayar nasıl toplar? Put Elde edilen 4 değeri çıktı aygıtına gönderilir Stop Döngü bitirilir
Akış Şemasından Programa Add Hafıza Konumunda Belirtilen Sayıları Topla Subtract Hafıza Konumunda Belirtilen Sayıları Çıkar Store İşlemcideki Kaydedici > Hafıza Alanı Load İşlemcideki Kaydedici < Hafıza Alanındaki Değer Get Giriş değeri > Kaydedici Put Kaydedici > Çıkış Alanı Get 2 Add 2 Put Akış şemalarından programa geçişi burada basamak basamak görüyoruz. Öncelikle akış şemaları program mantığını sembolize eden kutucuklardır. Girişten bilgiyi al, aritmetik birimde topla ve çıkışa ver gibi. Stop
Programın Gözden Geçirilmesi 0. Get İlk sayıyı al 1. Store 06 ilk sayıyı 6. konuma kaydet 2. Get ikinci sayıyı al 3. Add 06 6. Hafıza gözündeki ikinci sayıyı akümülatördeki değerle topla 4. Put Sonucu geçici alana yaz; buradan çıkışa aktar 5. Stop Örnek iki sayıyı toplama programımıza daha yakından bakalım. Hafızanın ilk gözündeki ilk program komutu GET yani ilk sayıyı al ve yazıcıya yükle komutudur. İkinci komutta ise bu yazıcıdaki bilgi hafızanın 6. gözüne saklanır. Daha sonra ikinci sayı akümülatör niteliğindeki yazıcıya alınır ve ADD 06 komutu ile 6 numaralı gözdeki bilgi akümülatör üzerindeki bilgi üzerine toplanır. Burada gördüğünüz gibi akümülatör işlemlerde hem bir bilgiyi tutan yazıcı hem de sonucun tutulduğu yazıcıdır. PUT komutu ile sonuç çıktıya verilir ve işlemler STOP komut ile durur.
Branch (Dallanma) Komutları Branch komutları program sayacının değerini değiştirir Unconditional / Koşulsuz Branch: Program sayacına koşulsuz yeni bir değer yükler Branch Zero: Program sayacını sadece akümülatördeki sonuç “0” ise değiştirir Branch Positive: Program sayacını sadece akümülatördeki sonuç pozitif ise değiştirir Branch Zero ve Branch Positive’de koşullar sağlanmıyorsa komut sayacı 1 arttırılır Program akışında işlemcinin hangi komutta kaldığını tutan yazıcıya, program counter adı verildiğini görmüştük. Şimdi bir sonraki slaytlarımızda örnek programların komut komut nasıl işlemci tarafından yürütüldüğünü görmeden önce dallanma komutlarının değişik tiplerine yakından bakalım. Dallanma komutlarında komut sayacı doğrudan dallanılacak adres ile değiştirilir. Buna koşulsuz dallanma denir. Branch Zero ancak akümülatördeki sonuç sıfır ise ve yine benzer şekilde branch pozitif ise akümülatördeki değer pozitif olduğunda dallanma gerçekler.
PIPPIN Basit Bilgisayarı Doğrudan adresleme biti ( # ) Şimdi çok basit bir bilgisayarın; buna PIPPIN ismini veriyoruz, çalışmasını görelim. Bu basit bilgisayarın burada bir hafıza birimi görülüyor. 0' dan 15' e kadar 16 gözlü hafıza birimi. Tabii ki program sayacı yani bilgisayarımızın hangi komutta olduğunu tutan bir sayaç; normal komutlarda bir bir arttırılan jump komutunda doğrudan adres verilerek arttırılan bir sayaç. Komut yazıcısı yani,komutların tek tek hafızadan okunarak yazıldığı ve tutulduğu daha sonra decode edilerek, kod çözülerek komutların gerçekleştirilmesi için kaynak olan yazıcı. Akümülatörümüz ve aritmetik lojik devremiz. Ve burada, yolları, adres yolunu yeşil, veri yolunu mavi ve kontrol yolunu da kırmızı olarak gösteriyoruz. Bu basit bilgisayarımız 10 bitlik. Burada görüldüğü gibi ilk üç bit makine dilindeki komutların karşılığı. Şu şekilde; 001 ise bilgisayar bunun bir LOAD-yükleme komutu olduğunu anlıyor, akümülatöre veriyi yüklüyor. Hangi veriyi yüklediğini biraz sonra daha detaylı göreceğiz. 010 ise bunun bir STORE-saklama komutu olduğunu anlıyor, akümülatör kaydedicisindeki veriyi saklıyor. 011 ADD komutu, 100 SUBTRACT komutu, 101 bir karşılaştırma komutu. Akümülatör kaydedicisindeki bilgi elimizdeki bilgi ile eşitse bir sonraki komutu atlıyor, daha sonraki komuta gidiyor. 110 ise bir koşulsuz dallanma komutu, doğrudan adrese atlıyor. Şimdi burada komutun içindeki dördüncü bite dikkat edelim. Eğer bit 1 ise Operand alanı denilen bu 6 bit komutun yürütüleceği doğrudan bilgiyi içeriyor. Doğrudan adresleme ve # işareti ile gösteriliyor. Yani komutun üstünde yapılacağı işlemin hangi bilgi üzerinde yapılacağını gösteriyor. Eğer bu sıfırsa buradaki 6 bit, üzerinde işlem yapılacak bilginin olduğu hafıza gözünü gösteriyor. Yani LOAD 10 dediğimizde akümülatöre 10' u yüklemiyoruz 10 numaralı gözdeki bilgiyi akümülatöre yüklüyoruz. STORE 8 dediğimizde akümülatördeki bilgiyi 8 numaralı göze yüklüyoruz. LOAD #10 deseydik akümülatöre 10 yani operand alanında bulunan 10 bilgisini doğrudan yükleyecektik. Aynı şekilde toplama ve çıkartmalarda da doğrudan adresleme yapabiliyoruz. Yine burada örneğin EQUAL #20 dendiğinde, diyez işareti olduğuna göre 20’nin doğrudan bilgi olması söz konusu. Akümülatördeki bilgi 20’ye eşitse bir sonraki komutu yürütmüyor, değilse devam ediyor. JUMP 6 diyerek program sayacının 6 numaralı gözdeki adrese atlaması sağlanıyor. Şimdi çalışmasını biraz daha detaylı olarak örnek üzerinde görebilirsek, daha iyi anlayacağız.
PIPPIN Basit Bilgisayarı Örnek (Toplama): İlk programın adı toplama. Bu program iki bellek bölgesinde konumlanmış verileri toplamaktadır. Matematiksel olarak bu programın gösterdiği formül x+y=z şeklindedir. x=2, y=5 olacak şekilde değerleri baştan vermekte bunları 13 ve 14 adresli hafıza gözlerine saklamakta ve sonra da bunları toplamaktayız. Aşağıda bu programın 2'li düzende ve mnemonic'ler ile makina dilinde yazılmış halini görmekteyiz. Örnek bir program üzerinde çalışalım. Örneğimiz bir toplama programı. Matematiksel olarak bu programın gösterilişi x+y=z şeklindedir. Örneğimizde x=2, y=5 olacak şekilde değerleri baştan verilmekte bunlar 13 ve 14 adresli hafıza gözlerine saklamakta ve sonra da bunları toplamaktayız. Slaydımızda bu programın 2'li düzende ve mnemonic'ler ile makina dilinde yazılmış halini görmekteyiz. İlk komuta odaklanalım. Burada görüldüğü gibi 0”ıncı satır. Makine dilinde komut 001 1 000010 şeklinde. Dikkat edilirse soldan dördüncü bit; hani şu bizim adreslenmeyi belirlediğimiz bir biraz ayrık yazılmış. Sadece anlaması kolay olsun diye. Bu komutta bu bit “1” yani doğrudan adresleme. Hani diyez işareti ile gösterdiğimiz mod. İlk 3 bit bu satırda 001 LOAD komutunu gösteriyor. # olduğuna göre son altı bit doğrudan veriyi içeriyor. Veriye bakıyoruz. 000010 ve bunun onluk düzende 2 olduğunu hesaplayabiliriz. Komutumuz aslında şu şekilde Akümülatöre 2 verisini yükle. Toplama işlemimizdeki ilk değer. İkinci komutumuz; 1’ci satır, 010 0 001101. Evet ilk üç bitten bunun STORE komutu olduğunu anlıyoruz. 4. bit “0 ve artık son altı bitin veriyi değil verinin saklanacağı hafızayı gösterdiğini biliyoruz. Bu altı bitin onluk düzende karşılığı 13. Bu komut akümülatördeki bilgiyi 13’cü hafıza gözüne saklamayı belirtiyor. Sonraki satır 2. satır yine LOAD #5 şeklinde akümülatöre toplayacağımız 2’ci veriyi doğrudan yüklüyor. 3. satır yine STORE 14, doğrudan olmayan adresleme ve akümülatördeki bilgiyi 14 nolu hafıza gözüne saklıyor. 4 ve 5. satırlara yoğunlaşalım. 4. satırda LOAD 13 diyerek; bakın buraya dikkat! # işareti yok, yani 4. bit “0” 13 numaralı gözdeki bilgiyi akümülatöre yüklüyor ve 5. satırda ADD 14 diyerek (bakın yine 4. bit sıfır) 14 numaralı gözdeki bilgiyi akümülatör üzerine topluyor. 6 satırda akümülatördeki bilgi 15 numaralı göze saklandı ve sonra program duruyor. 2+5=7 olarak bulduk. Şimdi benzer bir toplama programının simülasyonunu görelim.
Demo: PIPPIN Basit Bilgisayarı Bu simülasyonda PIPPIN bilgisayarının bir önce slayda bahsettiğimiz toplama işlemini nasıl yaptığını göreceğiz. Bu simülatör örneği size sunumlar yanında verilmiştir. Kendiniz de deneyebilirsiniz. Gördüğünüz gibi RAM biriminde 0’dan 7. göze kadar programımız gözüküyor. İstersem komutların ikili düzende karşılığını istersem mnemoniclerini görebiliyorum. Burada görüldüğü gibi ilk aşamada program sayacımızın değeri sıfır. Ve adres bus üzerinden ilk komutu adresliyor. İlk komutu okuyoruz. Bu komut LOAD #2, bir doğrudan adresleme ile yükleme komutu. Akümülatöre “2” değerinin yüklenmesi gerektiğini söylüyor. Komutumuz okunuyor ve IR “Instruction Register” komut yazıcımıza yazılıyor. Çözülüyor ve doğrudan adresleme olduğu için komut ile beraber gelen “2” verisi akümülatöre yazılıyor. Son döngü program sayacımız bir arttırılıyor. İkinci komutumuz STORE 13, doğrudan olmayan bir adresleme. Bakın diyez işareti yok. Komut okunuyor, komut yazıcısına yazılıyor. Çözülüyor ve 13’cü hafıza gözüne akümülatördeki veri yazılıyor. Artık toplanacak ilk verimiz 13’cü hafıza gözünde. Tabii ki son olarak program sayacımız bir arttırılıyor. Bakın artık program sayıcımız 2 ve LOAD #5 komutunu adresliyor. Bundan sonra sadece seyredelim. Simülatörümüz LOAD #5 ve STORE 14 komutlarını yapsın. “5” doğrudan bilgisini 14 numaralı hafıza gözüne saklasın. Şimdi LOAD 13 komutunu yürüteceğiz. Bu komut doğrudan olmayan bir yükleme komutu. Akümülatöre 13”cü gözdeki bilgiyi yükleyeceğiz. 13”cü göz adresleniyor ve akümülatöre okunuyor. 5’ci komut ADD 14 komutu. Şimdi bu komuta dikkat edelim. Akümülatörümüzde “2” var ve komut bu verinin üzerine 14’cü gözdeki veriyi toplamamızı söylüyor. ALU’nun toplamayı yaparken nasıl akümülatörden diğer veriyi aldığına dikkat edin. Toplam sonucu 7. Daha sonra STORE 15 komutu ile akümülatördeki veriyi 15 nolu göze saklıyor ve duruyoruz.
PIPPIN Basit Bilgisayarı İkinci programın adı sayaçtır. Bu program programcının ilk komutla belirttiği sayıya kadar sayar. Programın JUMP ve EQUAL komutları ile döngü yapısı içerdiğine dikkat edin. Her zaman accumulator içindeki değer azaltılarak istenilen miktara ulaşıp ulaşmadı denenir. Aşağıda bu programın da 2'li düzende ve mnemonic'ler ile makine dilinde yazılmış halini görmekteyiz. İkinci programın adı sayaçtır. Bu program, programcının ilk komutla belirttiği sayıya kadar sayar. Programın JUMP ve EQUAL komutları ile döngü yapısı içerdiğine dikkat edin. Her zaman accumulator içindeki değer azaltılarak istenilen miktara ulaşıp ulaşmadı denenir. Bu tabloda bu programın da 2'li düzende ve mnemonic'ler ile makine dilinde yazılmış halini görmekteyiz. Bu programın simülasyonunu yine bu sunumlar ile birlikte verilen dosyalar içinde bulabilirsiniz.
Kontrol Fonksiyonları Pek çok işlem belirli bir şartın doğrulanmasına bağlı olarak icra edilir Yüksek seviyeli programlama dilinde bu durum “if” ifadelerine (statement) karşılık gelir Dijital Sistemlerde bu ifade, kontrol fonksiyonu adı verilen kontrol işaretleri yardımıyla sağlanır Kontrol işareti 1 ise, işlem gerçeklenir RTL kullanılarak; aşağıdaki gibi yazılabilir if (P=1) then R2 R1 P: R2 R1 P = 1 ise, register R1 içeriğinin register R2 ye transfer işlemi gerçeklenir Programlama komutlarında pek çok işlem belirli bir şartın doğrulanmasına bağlı olarak icra edilir. Yüksek seviyeli programlama dillerinde bu durum “if” ifadelerine (statement) karşılık gelir. Dijital Sistemlerde bu ifade, kontrol fonksiyonu adı verilen kontrol işaretleri yardımıyla sağlanır. Kontrol işareti “1” olduğunda, işlem gerçeklenir. RTL, Register transfer language denilen bilgisayar mimarisi dilinde burada görüldüğü gibi simgelenir, örneğin “P” işareti geldiğinde R1 yazıcısındaki bilgiyi R2 yazıcısına aktar.
Transferin Donanımsal Gerçeklenmesi Saat işareti, hem hedef registeri hem de kontrol işaretini üreten devreyi kontrol eder. Registerler pozitif kenar tetiklemeli flip floplardan oluşmaktadır. Kontrol İşareti P P: R2 R1 Control Circuit P Load Blok Diyagram R2 Clock n R1 t t+1 Clock Zamanlama Diyagramı Load Transfer burada gerçekleşir. Bu slaydımızda “P” kontrol işaretine bağlı olarak yazıcılar arasındaki veri transferinin gerçekleşmesine ait zamanlama diyagramını görüyoruz. Kontrol devresi “P” işaretini oluşturduğunda R1’den bilgi, saat işareti ile senkronize bir şekilde R2’ye aktarılır. Yazıcılar flip-flop denilen birer bitlik saklama devrelerinin yan yana dizilmesiyle oluşmuştur.
Hafıza / ALU ve Kontrol Devresi Kontrol devresi aritmetik işlem komutunu algılar Toplanacak sayı B kaydedicisine alınır B kaydedicisindeki veri akümülatördeki veri ile Logic devreler (Toplam işleminde bir Full Adder) ile toplanır ve sonuç tekrar akümülatörde saklanır Akümülatördeki veri bir sonraki işlemlerde kullanılmak için saklanır veya daha sonra tekrar yeni bir hafıza gözüne alınır Şimdi bu blok diyagramda temel Aritmetik Mantıksal devreleri tasarımı üzerinde basit aritmetik işlemlerin nasıl yürütüldüğünü görelim. Kontrol devresi aritmetik işlem komutunu algılar. Örneğin belirlenmiş bir hafıza gözündeki verinin Akümülatör üzerindeki veri ile toplanması istenmektedir. Toplanacak sayı B kaydedicisine alınır. B kaydedicisindeki veri akümülatördeki veri ile Logic devreler (Toplam işleminde bir Full Adder) ile toplanır ve sonuç tekrar akümülatörde saklanır. Akümülatör + Yazıcı › Akümülatör Akümülatördeki veri bir sonraki işlemlerde kullanılmak için saklanır veya daha sonra tekrar yeni bir hafıza gözüne alınır. Akümülatör + Yazıcı › Akümülatör
Aritmetik & Lojik Birim İkili Toplama 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 10 1 + 1 + 1 = 11 Bu slaydımızda ALU’nun ikili düzende nasıl toplama yaptığını görüyoruz. İkili düzende burada görüldüğü gibi ; 0 + 0 = 0, elde yok 1 + 0 = 1, elde yok 0 + 1 = 1, yine elde yok 1 + 1 = bakın burada sonuç “2”, ve tabii ki ikili düzen “10”, yani aslında sonuç sıfır ve elde biti bir sonraki basamağa gidiyor. 1+1+1 = 11 bakın sonuç “3”, yani ikili düzende “11”. Yine elde bitinin kaymasına dikkat edin. Buradaki şekilde Akümülatör ve diğer bir yazıcı üzerinde 5 bit toplama işlemini görüyoruz. Birler basamağında 1+1 ve sonuç soldaki tablodaki gibi 0 ve elde var “1”. Elde bitini bir sonraki basamağa üstten giriyoruz. Aynı bildiğimiz toplama işlemindeki gibi. Artık ikinci basamağı toplarken bu yayılan elde biti ile birlikte düşünüyoruz. 1+0+1 ve sonuç yine sıfır ve elde var bir. Bu şekilde. Burada toplama işleminde 5 bitlik iki sayıyı topladığımızda en fazla 6 bit sayı elde edebileceğimizi de söylemeliyim. Şimdi simülatörler ile toplam işleminin tasarımını ve çalışmasını görelim.
Demo: İkili Toplama Full Adder Devresi Örnek: Temel devreler.circ
Demo: ALU Aritmetic Logic Unit Devresi Örnek: 6bit_ALU.circ F0 F1 Output --------- Function A “AND” B “VE” 1 A “OR” B “VEYA” NOT B Ters Alma A+B Toplama
Aritmetik & Lojik Birim Çıkartma: 710 – 510 710 0 1 1 1 0x23 + 1x22 + 1x21 + 1x20 510 0 1 0 1 0x23 + 1x22 + 0x21 + 1x20 1.Adım: Sayının Tersini al 510 1 0 1 0 1x23 + 0x22 + 1x21 + 0x20 2.Adım: Bir arttır 510 +1 1 0 1 1 1x23 + 0x22 + 1x21 + 1x20 3. Adım Topla 0 1 1 1 + 1 0 1 1 Sonuç : 210 0 0 1 0 0x23 + 0x22 + 1x21 + 0x20 Bu slaydımızda çıkartma işlemini göreceğiz. Onluk düzende 7’den 5 çıkaracağız ve bunun ikili düzende nasıl yapıldığına bakacağız. Bakın burada onluk düzende yedi sayısının ikili düzende temsilini görüyoruz. “0111” ve tabiki en sağda da 2”nin katları şeklinde matematiksel ifadesini. Burada da aynı şekilde 5 sayısını, ikili düzende temsilini “0101” ve matematiksel gösterimini görüyoruz. Çıkartma işlemi için ilk yapılacak çıkarılacak sayının tersini al; NOT işlemidir. Yani “0”lar “1” olacak ve birler de sıfır. Bu durumda beşin tersi 1010 oluyor. Çıkartma işlemi için ikinci adım bu tersini aldığımız sayıyı bir arttırmaktır. Bu durumda sayımız 1010 + 1 = 1011 oluyor. Üçüncü adımda da toplama yapıyoruz. İlk sayımız ile bu tersini adlığımız ve bir arttırdığımız sayıyı topluyoruz. 0111+1011 = 0010 ve dikkat edilirse sonucu, onluk düzende “2” yi bulduk. Bilgisayar çıkartma işlemini bu şekilde yapar. İkinci sayının tersini al, bir arttır ve topla. Hemen bazı arkadaşların çarpma işlemini de ardı ardına yapılan toplama olduğunu söylediklerini duyuyorum. Gelin hep beraber simülatör yardımı ile bu çıkartma işleminin nasıl yapıldığına bakalım.
ALU Aritmetic Logic Unit Devresi Örnek: 6bit_ALU.circ
Analog ve Digital İşaretler Analog işaret zaman içinde süreklidir Sayısal işaret ise ayrık “0” ve “1” lerden oluşur 1101100010111011001 Buraya kadar bilgisayarın ve doğal olarak işlemcinin sadece ikili düzende “0” veya “1” gibi logic değerler ile uğraştığını ve sadece bunlarla simgelenmiş veriler üzerinde işlem yaptığını gördük. Peki gerçek hayatta veriler ne formattadır? Burada görüldüğü gibi işaretleri ikiye ayırıyoruz. Analog işaretler ki bunlar gerçek hayatta rastlanan sürekli işaretlerdir ve diğeri sayısal işaretler. Sayısal işaretler zaman içinde sürekli olmayan sadece “1” ve “0”lardan oluşan işaretler. Bilgisayarın anlayacağı dil.
Analog / Sayısal Dönüşüm ADC (Analog Digital Converter) Sayısal İşaret Analog İşaret 111 110 101 100 011 010 001 000 Gerçek hayattaki analog işaretlerin bu sayısal işaretlere döndürülmesi kavramına biraz daha yakından bakalım. Buna ADC analog digital convertion, analog işaretten sayısal işarete döndürme denir. Analog digital dönüşümünde burada görüldüğü analog işaret, örneğin 3 bit ile simgelenmiş; yani 8 ayrı seviyede sayısal değerlere dönüştürülür.
Analog / Sayısal Dönüşüm Analog bilginin 1 Bit, 2 Bit ve 3 Bit sayısala dönüşümünü görmek için tıklayınız Bu örneğimizde analog bir işaretin 1 Bit, 2 Bit ve 3 Bit sayısal bir işaret dönmesini görüyoruz. Kendiniz deneyebilirsiniz. Tıklayın. Slaydın yürümesi için kendiniz bir sonraki slaydı seçmelisiniz.
Analog / Sayısal Dönüşüm Analog İşaret Analog İşaret Analog İşaret Analog digital dönüşümünde pek çok metot vardır. Bunlardan didaktik olan birini sizlere anlatmadan önce gelin basit bir oyun oynayalım. Ben, aklımdan 0 ile 99 arasında bir sayı tutacağım ve sizden bu sayıyı kestirmenizi isteyeceğim. Sizin kestiriminize sadece “büyük” veya “küçük” olarak cevap vereceğim. En kısa zamanda tuttuğum sayıyı nasıl bilirsiniz? Tabii ki en kötüsünün 0”dan başlayarak birer birer saymak olduğunu hemen gördünüz. Daha kıvrak düşünenler önce maksimum range’in yarısını tahmin ederek başlayacaklardır. Daha sonra benim cevabıma göre kalanın yarısı ve daha sonra da kalanın yarısı… Bu şekilde yaklaşıma “başarılı yaklaşım” adı verilir. Analog bir işaretin burada yeşil renkle gösterdiğim gibi sayısala dönüştürülmesi de benzer şekilde olur. Örneğin 8 bitlik veri için bilgisayar ilk olarak en ağırlıklı basamağı dener. 10000000, yani onluk tabanda maksimum 256 seviyenin yarısı, daha sonra, bir sonraki biti dener 11000000 ve daha sonra bir sonraki. Her seferinde sonucun büyük mü küçük mü olduğuna bakarak bir sonraki bite geçer. Eğer analog seviye hala küçükse o bit “1” dir, eğer değilse “0”. Bakın örnekte en sağdan 3. haneye gelinene kadar sonuç hep “1” olmuş, daha sonra “0” ve doğal olarak 8 hamlede analog değer sayısala dönüşmüş olur. Bu yönteme Successive approximation – başarılı yaklaşım metodu adı verilir.
Demo: Sayısal / Analog Dönüştürücü Bu simülatörümüzde de Sayısal Analog dönüştürücümüzü görüyoruz. Burada gördüğünüz 2’nin katları büyüklükte dirençler ve burada gördüğünüz de dönüştüreceğimiz sayısal bilgi. Görüldüğü gibi sayısal bilgi 0000 olduğunda analog çıkışımız 0 değerinde. En ağırlıklı basamağı A3’ü “1” yaptığımızda analog çıkışımız 8 volt oluyor ve tüm bitleri “1” yaptığımızda da “15 Volt” Bitlerin ağırlıkları ile paralel direnç değerlerine ve çıkışa dikkat etmenizi dilerim.
Analog / Sayısal Dönüşüm SAR art arda ikili tabanda sayılar üretir (en ağırlıklı haneden başlayarak) daha sonra bu sayı aynen bizim yaptığımız gibi 128’den büyük mü diye DAC’den tekrar analog işarete çevirir ve karşılaştırma devresinde tahmin doğrumu karar verir. Daha sonra bir sonraki haneye geçilir. Successive Approximation Register Digital Analog Converter DAC, Sayısal analog dönüştürücünün tasarımını gördük. Şimdi bu tasarımı içinde barındıran analog sayısal dönüştürücüyü de görelim. Bakın burada sayısal analog dönüştürücü var. Bu gördüğünün bir SAR successive approximation register. Saat işaretinin her darbesi ile sayısal değeri birer birer artan bir sayaç. Bu sayacın sayısal değeri arttırılarak oluşan bilgi DAC’de tekrar analog bilgiye dönüştürülür. Bu ikili ile bir önce demoda gördüğümüz 2’nin katları şeklinde ağırlıklı dirençler sayesinde daha önce bahsettiğimi gibi başarılı yaklaşım değerleri elde edilir. İlk olarak maksimum değerin yarısı ve sonra kalanın yarısı..vs. Hatırladınız umarım. Bu işaret burada gördüğünüz karşılaştırma devresi sayesinde analog işaret ile karşılaştırılır. Eğer karşılaştırma sonucu negatif ise hala yerimiz vardır. Sayaç ilerletilir ve ağırlıklı dirençler ile kalanın yarısı bir değer oluşturulur. Ve maksimum kaç bit varsa o sayıda ölçüm ile analog işaret yakalanır. Yakalanma anında D0, D1,… sayısal bilgisi analog işaretin sayısal değeridir. Karşılaştırma Devresi Analog Giriş
Demo: Başarılı Yaklaşım ADC Simulasyonu
Analog İşarete Örnek: Ses Bizim ses olarak algıladığımız şey gerçekte bizim sensor sistemimizin kulak zarımızdaki çok hızlı titreşimleri yorumlamamızdır Ses dalgalar halinde iletilir, dalgalar bir elastik ortam yardımıyla iletilir Örneğin, ses kulak zarımıza hava yada suda seyahat ederek ulaşır Analog işaretlere en iyi örnek sestir. Ses olarak algıladığımız şey gerçekte bizim sensor sistemimizin kulak zarımızdaki çok hızlı titreşimleri yorumlamamızdır. Ses dalgalar halinde iletilir, dalgalar bir elastik ortam yardımıyla kulağımıza ulaşır. Ses duvarını aşan bir uçakta üstü üste gelen dalgalar büyük bir patlama yaratır.
Ses Oluşumu ve Kaydı Mikrofon Analog Sinyal Sesin oluşumu ve bilgisayara kaydını nasıl olduğunu burada görüyoruz. Fiziksel olarak ses, burada gördüğümüz gibi esnek bir ortam içinde periyodik titreşimler yapan bir kaynağın ortamın denge basıncında değişimler meydana getirmesi ve bu basınç dalgalarının sabit bir hız ve belirli bir faz farkı ile ortamın uzak noktalarına kadar iletilmesidir. Mikrofonlar sesi analog elektrik işaretlerine çeviren elektronik aletlerdir. Bütün mikrofonların yapıları, ses dalgalarının bir diyaframı titreştirmesi esasına dayanmaktadır. Bu titreşim elektriksel işaretlere dönüştürülür ve bilgisayar üzerindeki ses kartı analog işaretleri sayısala dönüştürerek bilgisayarın algılaması sağlar.
Bilgisayarda Üretilen Seslerin Dış Ortama Aktarılması Tersine işlemde, bilgisayarda üretilen seslerin dış ortama aktarılmasında, yine ses kartı üzerindeki bir sayısal analog dönüştürücü bilgisayardan aldığı sayısal verileri elektriksel analog işaretlere dönüştürür. Bu elektriksel işaret hoparlör içindeki bir halkanın etrafını saran tellerden geçerken akım, tellerin sardığı metal kısmı da etkileyecek bir elektromıknatıs görevi görecek şekilde bir elektriksel alan oluşturur. Böylece sabit mıknatıs ve akım sayesinde oluşan elektromıknatıs birbiri ile etkileşim gösterirler ve elektriksel işarete paralel bir hareket oluşur. Bu hareket hoparlördeki diyafram ile büyültülür ve ses dalgalarına dönüştürülür.
Sesin Grafiksel Gösterimi X ekseni: zaman Y ekseni: basınç A: genlik (volume) λ : dalga uzunluğu (frekansın tersi, ses perdesini belirler) Bu slaydımızda sesin grafiksel gösterimini görüyoruz. X ekseninde zaman var. Y ekseni basıncı gösteriyor. Ses basıncı ne kadar büyükse işaretimiz o oranda büyüyecektir. Yine burada gösterdiğimiz “A” büyüklüğüne sesin genliği denir. “λ” ise ses frekansının tersidir. Dalga boyu. Ses frekansı arttıkça “λ” düşer, ses incelir.
Sesin Grafiksel Gösterimi Düşük frekans (kayıt aygıtında çalan) Baskın frekansın bir çevrimi Bu slaydımızda bir ses işaretinin baskın çeviriminde frekansı görüyoruz. Burada da daha yüksek frekansı bir ses işaretini görüyoruz. Bakın dalga boyları nasıl ? Ses işaretinin şekli sesin tınısını belirler. High Frequency (kayıt aygıtında çalan) Baskın frekansın bir çevrimi
Sesin Sayısallaştırılması Encyclopedia Brittanica’daki Analog-Digital Conversion makalesine bakabilirsiniz Bu noktada genliği yakala Veri noktaları arasındaki tüm değişimler kaybolur Sesin sayısallaştırılması burada görüldüğü gibi sesi oluşturan sürekli analog işaretin belirli anlarından örnek almamızla oluşur. Hemen aklımıza şu soru geliyor? Ne kadar aralıkla veri almalıyız? Acaba diğer noktalardaki veriler kaybolduğunda ne olur? Orijinal sesi geri elde edebilir miyiz? Yaklaşılmış Düşük Frekanslı Sinyal
Sesin Tekrar Üretimi Bu noktaları içeren bir dalga oluşturulur Noktalar ne kadar sıksa, ne kadar sık örnekleme yapılmışsa ve bunun için ne kadar çok bit kullanılmışsa tekrar üretim o kadar kaliteli olur Sadece bu ayrık, yani sürekli olmayan veriler ile orijinal ses işaretini yakalayabilir miyiz? Sizlerin “Noktalar ne kadar sıksa, ne kadar sık örnekleme yapılmışsa ve bunun için ne kadar çok bit kullanılmışsa tekrar üretim o kadar kaliteli olur.” dediğinizi duyuyorum ama bunun da bir sınırı var değil mi?
Sesin Sayısallaştırılması Bazı frekanslarda örnekleme (saniyede x kere) Ne kadar sıklıkla? Her örnek için, n-bit kodlama genliği Her örnek için kaç bit? Örnekleme Teoremi ve Spektrum Şimdi sizlere bu simülatör ile farklı analog işaretler üzerinde örnekleme hızı ve örnekleme bit sayısının etkisini göstermek istiyorum. Pencerenin solunda gördüğünüz bu sinüs bizim analog işaretimiz olsun. Bu gördüğünüz kırmızılar ise örnek aldığımız işaretler. Analog işaretimiz yaklaşık 4MHz’de, ve örnekleme frekansımız ise şu an 45Mhz civarında. Yani her period için 10 örnek alıyoruz. Sağdaki pencerede örnekleme işinden sonra tekrar aynı işareti ne oranda geri alabildiğimizi görüyoruz. Örnekleme frekansını düşürdüğümüzde görüldüğü gibi belirli bir aşamadan sonra işareti kaybediyoruz. Örnekleme işaretimiz analog sinyalimizin frekansının iki mislinden aşağı düşemiyor. Örnekleme frekansını arttırdığımızda işarete çok yaklaşıyoruz. Farklı işaret şekilleri için de simülatörümüzü deneyebilirsiniz. Bu örneğimizde farklı sürekli işaretlerin sayısala dönüştüğünde spektrumlarındaki değişimi ve işareti tekrar geri elde etmek istediğimizde, ne oranda elde edebileceğini göstermek istiyorum. Yine bu simulatörü sunumla birlikte sizlere sunuyoruz. Kendiniz de deneyebilirsiniz. Yukarıdaki ekranda bir sinus sürekli sinyali görülüyor. Sinus çok yalın bir işaret, frekans spektrumda burada gördüğünüz gibi sadece bir tek dikme. Örnekleme frekansı düşürüldüğünde yine işaretimizin kaybolduğunu ve frekans spektrumunda farklı şeyler görüyoruz. Örnekleme frekansı arttırıldığında sinus işaretini aynen geri alabilmek çok kolay. İsterseniz buradan daha farklı bir işaret seçelim. Örneğin içinde farklı frekanslarda bileşen bulunduran bu işareti seçelim. Bakın spektrumunda bunu açıkça görüyoruz. Ve burada görüldüğü gibi ancak çok daha sık örnek alabildiğimizde sayısal işaret orjinalinin frekans spektrumuna yaklaşabiliyor. Aksi durumda spekturum tamamen bozuluyor.
Periyodik Örnekleme Nyquist örnekleme teoremine göre örnekleme oranı en yüksek ses frekansının iki katı olmalı Saniyedeki örnekleme sayısı tekrar kodlanabilecek ses tınısını belirler İnsanlar 20 – 20,000 Hz (or 20KHz) arasını algılar Audio CD’lerde örnekleme sıklığı 44 KHz Audio CD’lerde 16 Bit örnekleme kullanılır Nyquist örnekleme teoremine göre örnekleme frekansı, analog işaretin en yüksek frekansının iki katı olmalıdır. Bunu gördük. Sesin tınısını belirleyen işte tüm bu yüksek frekanslı ses bileşenleridir. Bu sebeple sesin aynısını geri alabilmek için duyabileceğimiz ses frekanslarının ki; bu 20 Hz – 20 kHz arasıdır iki misli frekansta örnekleme yapılmalıdır. Audio CD lerde örnekleme sıklığı 44Kh dir. Halbuki basit bir telefon konuşması için 8kHz örnekleme yeterlidir. Örnekleme işaretlerindeki bit sayısı yine ses kalitesini yükseltecektir.
1000 Kelime Değerindeki Resim? Bu bilgi bu bilgisayarda gösteriliyor, ama nasıl? Bir Çin atasözü “Bir resim bin kelimeden daha iyidir.” der ve gerçekten de bu, enformasyon açısından doğrudur. Bir resmin bilgisayarda gösterimine yakından bakalım ve bir resmi acaba ne kadar bir bilgi ile temsil edebiliyoruz?
Resmin Gösterimi Resim üzerinde dikdörtgenlerden oluşan bir ızgara çizin Her hücreyi (piksel), hücrenin renklerini ifade eden bit dizisi ile gösterin Bir resmi sayısallaştırmak için resmin üzerine ızgaralar çizdiğimizi düşünelim. Her bir hücreye pixsel denir. Her bir hücreyi hücre renklerini ifade eden bit dizini ile gösterelim.
Örnek: Daha Küçük Resim Soldan Sağa (6x5) Her bir hücre burada gösterildiği gibi kodlanabilir. Örneğin soldan sağa birinci satır 01001, ve ikinci satır 11111, üçüncü satır 01001..vs Resim formatına göre eğer yukarıdan aşağıya kodlama kullanılmış ise 1 sütun, 010000, ikinci sütün 111110 gibi. Bu örnekte soldan sağa 6x5 ve yukarıdan aşağıya 5x6, “0” veya “1” olan bitler. 30 Bit. Bir resimde bu birim hücrelerden kaç tane olabileceğini ve resmi temsil edecek bilgisayardaki verinin uzunluğunu herhalde düşünmeye başladınız. 010011111101001010010111100000 Yukarıdan Aşağıya (5x6) 010000111110010010010010111110
Standardizasyon Eğer gösterim şekli standard değilse, bilgi bozulur! 6x5 oranında göster 3x10 Şeklinde göster Tabiki burada resmin temsil edildiği formatın da önemine değinmek lazım. Her birim hücre nasıl formatlı ve bu format acaba resmin alımı veya dışa verilmesi aşamasında bozuldu mu? Eğer bilgisayar bu resim formatını bilmiyorsa veya yanlış algılıyorsa resmin orijinalini kaybeder. Burada yazma ve okunma anlarında veya alıcı ve vericideki veride oluşan bir standardizasyon hatasını görüyoruz. 01001111101001010010111100000 01001111101001010010111100000
Eğer verinin bütünlüğü korunmamışsa bilgi bozulmuştur! Burada da yazma ve okunma anlarında veya alıcı ve vericideki veride oluşan bir bütünlük hatasını görüyoruz. Verideki bütünlük bozulmuş. 01001111101001010010111100000 10111111101001010010000000000
Renkler nasıl gösterilir? 2-bits pixel başına 4=22 seçim 00 (off, off)=beyaz 01 (off, on)=açık gri 10 (on, off)=koyu gri 11 (on, on)=siyah = Beyaz = Açık Gri 1 = Siyah Her birim hücreyi “var” ve “yok” yani “0” ve “1” şeklinde temsil ettik. Peki renkler nasıl temsil edilir? Bu örnekte 2 bit ile temsil edilen renkleri görüyoruz. Beyaz 00, açık gri 01, koyu gri 10 ve siyah 11. Tahmin edilebileceği gibi renk sayısının artması için rengi temsil eden bilgideki bit sayısının artması gerekir. 1 1 = Koyu Gri 1
24 Bit ile kaç renk gösterilebilir? Ne düşünürsünüz? 256 colors, kaç bit gerekli? Hesaplama için ip ucu Belirli bir aralıktaki sayıyı ifade etmek için kaç bit gerekli olduğunu bulmak için, iki üzeri minimum bit sayısı aralıktaki sayılardan yada sınırdan büyük seçilmelidir. Bu sayı kaç bit gerektiğini gösterir. 2 x => 256 bu denklemde en küçük x çözümdür 24 Bit ile kaç renk gösterilebilir? 210 (10 bit) yaklaşık 1000 220 = 210 x 210 224 = 24 x 220 Örneğin 256 renk için 8 Bit gerekir. 2^8= 256 farklı değişken. 10 Bit ile yaklaşık 1000 renk ve 24 bit ile bir milyon renk simgeleyebiliriz.
Resmin Gösterimi: Image Resmin küçük bir kısmını genişletirsek kare pikseller tarafından gösterildiğini görebiliriz 200 genişlik…300 uzunluğa … ….piksel başın 256 renk yoğunluğu ile (8 bit; 28 = 256) İnç başına düşen piksellere göre gerçek boyut nedir? 200 x 300 x 8 bit = 480,000 bit (fakat sıkıştırılabilir) Şimdi başlangıçtaki sorumuza geri dönelim. Bu basit çocuk resmi ne kadarlık bir enformasyon içeriyor? Bunu bilgisayar ne kadarlık bir veri bankasında tutabilir? Resmin 200 x 300 boyutunda olduğunu farz edelim. Bu durumda 200x300 ve her bir hücre için de 8 bitlik renk istesek 200x300x8= 480.000 bit. Demek ki gerçekten bir resim 1000 kelime kadar değerliymiş.
Hareketli resim Hareketli resimler video olarak gösterilir Resimlerin sıklığı her 10 tanede 1 gösterim Nasıl sıkıştırılır? Hareketli resimlerin ardı ardına oynatılan resimlerden oluştuğunu biliyoruz. Göz saniyede 24 resimden fazlasını sanki hareket halindeymiş gibi görüyor, tek tek resimleri algılayamıyor. Bu prensiple hareketli resimleri elde ederiz. Tek tek resimler ve videoyu oluşturan hareketli resimlerde basit kodlama teknikleri ile sıkıştırırlar. Örneğin tekrarlanan verilerin kaç kez tekrarlandığı bilgisi bunları arka arkaya kaydetmektense sadece bu bilginin tutulması bir sıkıştırma tekniğidir.
Bilgisayar Mimari Katmanları Katman Grubu Katman No Katman / Layer Yazılım Katmanı Software Layer 7 Uygulama / Application 6 Yüksek Seviyeli Yazılım / Higher Order Software 5 İşletim Sistemi / Operating System Donanım Katmanı Hardware Layer 4 Makine / Machine 3 Mikroprogram / Microprogrammed 2 Sayısal Mantık / Digital Logic 1 Fiziksel Aygıt / Physical Device Daha fazla bilgi için kaynaklar bölümüne bakabilirsiniz… Bu sunumumuzda bilgisayarın nasıl çalıştığın temel prensiplerini gördük. Son olarak yazılım ve donanımı ile komple bir bilgisayarın katmanlarını burada görüyoruz. En alttakiler, donanıma daha yakın daha primitif katmanlar; fiziksel aygıt katmanı, sayısal mantık katmanı, mikro program katmanı ve makine katmanı, sonra yazılım katmanları ve en üstte ise bilgisayara en son yüklenen yazılımlar. Umarım sunum sizler için faydalı olmuştur. Her zaman olduğu gibi yardımcı kaynaklara buradan bakmanızı dilerim. Sunumda kullandığımız tüm simülatör örnekleri sunum ile birlikte sizlere ayrıca verilmektedir.