Bilgisayar sistemi, soyutlama ve dönüşüm seviyeleri
Bir problemin elektronlara kadar inen yedi seviyesi, soyutlama fikri, ISA ile mikromimari farkı. Dersin geri kalanının haritası ve vizede kısa cevap soruları.
Bu ders, “bir bilgisayar gerçekte nasıl çalışır?” sorusunu aşağıdan yukarıya cevaplar. Transistörden başlar, kapılara, devrelere, belleğe, işlemciye, makine koduna, assembly’ye ve en sonunda C’ye çıkar. İlk hafta bu yolculuğun haritası. Vizede bu kısımdan genelde kısa cevap soruları gelir: seviyeleri sırala, ISA nedir, soyutlama neden var. Az emekle alınan puan.
Bu haftadan akılda kalması gereken beş şey:
- Bilgisayar akıllı değil, hızlıdır. Her şeyi çok basit adımlarla yapar.
- Soyutlama (abstraction) ayrıntıyı gizlemektir. Bütün bilgisayar mühendisliği bunun üzerine kurulu.
- Yedi dönüşüm seviyesi var: Problem’den Devices’a. Sırasını ezberle.
- ISA, yazılımla donanımın buluştuğu sözleşmedir.
- Bütün bilgisayarlar, yeterli zaman ve bellekle, aynı şeyleri hesaplayabilir.
Soyutlama (abstraction)
Araba sürerken motorun içindeki pistonları düşünmezsin. Gaz pedalına basarsın, araba hızlanır. Pedal, motorun karmaşıklığını senden saklayan bir arayüzdür. Buna soyutlama denir: o an işine yaramayan ayrıntıyı gizleyip sadece kullanacağın kısmı görmek.
Bilgisayarda her seviye bir alttakini soyutlar:
- C yazarken hangi register’ın kullanıldığını bilmezsin.
- Assembly yazarken toplama komutunun içindeki kapıları bilmezsin.
- Bir toplayıcı devre çizerken transistörün içindeki elektronları bilmezsin.
Soyutlama seni hızlandırır. Ama bedeli var: bir şey beklendiği gibi çalışmadığında soyutlamanın altına inebilmen gerekir. Kitap buna soyutlamayı çözmek (deconstruct) der. Programın neden yavaş olduğunu anlamak için bellek erişimini, taşma (overflow) hatasını anlamak için bitleri bilmen gerekir. Bu ders sana o alt seviyeleri öğretir.
İPUCU · Sınav cümlesi. “Abstraction is a technique for hiding detail so that we can deal with a complex system at a higher level.” Benzer bir cümleyi kendi sözlerinle yazabilmen yeter.
Donanım ve yazılım ayrı değildir
Eski bakışta “donanımcı” ve “yazılımcı” ayrı insanlardı. Bu ders tam tersini savunur: iyi bir yazılımcı alttaki donanımın nasıl çalıştığını bilir, iyi bir donanımcı üzerinde çalışacak yazılımı düşünür. Örneğin bir dizinin belleğe nasıl yerleştiğini bilen biri, önbelleği (cache) daha iyi kullanan kod yazar.
Bilgisayar ne yapabilir: evrensel hesaplama aygıtı
1930’larda Alan Turing, bir hesaplamayı tanımlamak için soyut bir makine önerdi: Turing makinesi. Her Turing makinesi tek bir işi yapar (örneğin toplama). Turing ayrıca evrensel Turing makinesini (universal Turing machine) tanımladı: bu makine, kendisine verilen tarifle herhangi bir Turing makinesini taklit edebilir.
Bugünkü bilgisayarlar evrensel Turing makinesine denktir. Sonucu:
| İfade | Doğru mu? |
|---|---|
| Ucuz bir laptop, süper bilgisayarın hesaplayabildiği her şeyi hesaplayabilir. | Evet, yeterli zaman ve bellekle. |
| İkisi aynı hızda çalışır. | Hayır, fark hızda ve bellekte. |
| Yeni bir iş için yeni bir bilgisayar almak gerekir. | Hayır, yeni bir program yazmak yeter. |
Bu yüzden bilgisayara universal computing device denir. Hesap makinesi ise öyle değildir: sadece fabrikada konan işleri yapar.
Yedi dönüşüm seviyesi (levels of transformation)
Bir problemi bilgisayara çözdürmek için onu adım adım elektronların hareketine çevirirsin. Her adım bir seviyedir.
| # | Seviye | Ne yapılır? | Örnek |
|---|---|---|---|
| 1 | Problem | Doğal dille tarif | “Sınıfın not ortalamasını bul” |
| 2 | Algorithm | Adım adım, kesin yöntem | Notları topla, sayıya böl |
| 3 | Program (language) | Bir programlama dilinde yaz | C kodu |
| 4 | ISA | Makinenin komut kümesi | LC-3 ADD, LD, BR |
| 5 | Microarchitecture | ISA’nın donanım tasarımı | Veri yolu, kontrol birimi |
| 6 | Logic circuits | Kapılar ve devreler | Toplayıcı, mux, register |
| 7 | Devices | Transistörler | CMOS |
Sıralamayı “Pazar Akşamı Pilav İç Meyve Limon Dondurma” gibi uydurma bir cümleyle akılda tutabilirsin: Problem, Algorithm, Program, ISA, Microarchitecture, Logic circuits, Devices.
Problem → Algorithm
Problem doğal dille anlatılır ve doğal dil belirsizdir (ambiguous). “Yaşlı adam ve kadın” cümlesinde kadın da yaşlı mı? Bilgisayar bu belirsizliği çözemez. Bu yüzden ilk dönüşüm, problemi bir algoritmaya çevirmektir. Bir algoritmanın üç özelliği olmalı:
- Definiteness: her adım kesin tanımlıdır.
- Effective computability: her adım bilgisayarla gerçekten yapılabilir. “En büyük asal sayıyı bul” yapılamaz, çünkü öyle bir sayı yoktur.
- Finiteness: sonlu adımda biter.
Aynı problem için birçok algoritma olabilir. Biri daha hızlı, biri daha az bellek kullanan olabilir.
Algorithm → Program
Algoritma bir programlama diline yazılır. Programlama dilleri belirsizlik içermez; bilgisayar onları mekanik olarak çözümleyebilir. İki tür dil var:
- Yüksek seviyeli (high-level): C, Java, Python. Makineden bağımsızdır.
- Düşük seviyeli (low-level): assembly. Belirli bir ISA’ya bağlıdır, her satır genelde tek bir makine komutudur.
Program → ISA
ISA (Instruction Set Architecture), yazılım ile donanım arasındaki sözleşmedir. Programcının (ya da derleyicinin) bilgisayara verebileceği her şeyi tanımlar:
- Hangi komutlar var ve kodları ne (opcode),
- Komutların hangi tür verilerle çalıştığı (data types: 2’s complement tam sayı, karakter, ondalık),
- Operandın yerinin nasıl bulunacağı (addressing modes),
- Kaç register var, bellek nasıl adreslenir.
C programını ISA’ya derleyici (compiler) çevirir. Assembly’yi makine koduna assembler çevirir. Örnekler: x86 (Intel/AMD), ARM (telefonlar), LC-3 (bu dersin eğitim bilgisayarı).
ISA → Microarchitecture
Mikromimari, ISA’nın donanımda nasıl gerçeklendiğidir. ISA “ne yapılacağını”, mikromimari “nasıl yapılacağını” söyler. Aynı ISA’yı çalıştıran çok farklı işlemciler vardır: biri ucuz ve yavaş, biri pahalı ve hızlı. Hepsi aynı makine kodunu çalıştırır.
Benzetme: araba kullanma arayüzü (direksiyon, pedal, vites) ISA’dır. Motorun kaç silindirli olduğu mikromimaridir. Sürücü olarak arayüz aynıysa her arabayı sürersin.
Microarchitecture → Logic circuits → Devices
Mikromimarinin her parçası (toplayıcı, register, bellek) mantık devreleriyle kurulur. Devreler de transistörlerden yapılır. Bu derste CMOS transistörleri göreceğiz (3. hafta).
Bu dersin yol haritası
| Hafta | Seviye | Konu |
|---|---|---|
| 2 | Veri | Bitler, 2’s complement, IEEE 754, ASCII |
| 3-4 | Devices, Logic circuits | Transistör, kapı, kombinasyonel devre, latch, bellek, FSM |
| 5-6 | Microarchitecture | von Neumann modeli, komut döngüsü, I/O |
| 7-8 | ISA | LC-3 komutları ve kodlaması |
| 10 | Program (low-level) | LC-3 assembly |
| 11-14 | Program (high-level) | C |
Yani dönem boyunca seviyeleri aşağıdan yukarıya tırmanıyorsun.
Çözümlü örnekler
Örnek 1. Bir ISA’da 100 farklı komut var. Opcode alanı en az kaç bit olmalı?
k bit → 2^k farklı kod
2^6 = 64 < 100 yetmez
2^7 = 128 ≥ 100 yeter
cevap: 7 bit
Örnek 2. Aşağıdakileri seviyesine yerleştir.
| İfade | Seviye |
|---|---|
x = a + b; | Program (language) |
ADD R1, R2, R3 | ISA (assembly gösterimi) |
| 4 bitlik ripple-carry toplayıcı | Logic circuits |
| “Önce topla, sonra 2’ye böl” | Algorithm |
| n-tipi MOS transistör | Devices |
| Komutun kaç saat çevriminde bittiği | Microarchitecture |
Örnek 3. “Bir şirket işlemcisini yeniden tasarladı. Eski programlar yeniden derlenmeden çalışıyor.” Hangi seviye değişti? Cevap: mikromimari. ISA aynı kaldığı için eski makine kodu çalışmaya devam ediyor.
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| ISA ve mikromimari aynı şey | ISA arayüz, mikromimari onun gerçeklemesi |
| Derleyici makine kodunu donanıma çevirir | Derleyici yüksek seviyeli dili ISA’ya çevirir |
| Hızlı bilgisayar daha fazla problem çözebilir | Hesaplayabildikleri aynı, sadece hız farkı var |
| Seviye sırası: Program, Algorithm, … | Önce Algorithm, sonra Program |
| Logic circuits en alttaki seviye | En altta Devices (transistörler) var |
| Algoritma sonsuza kadar çalışabilir | Finiteness: sonlu adımda bitmeli |
| Doğal dille programlama mümkün | Doğal dil belirsiz, makine tek anlam ister |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
List the levels of transformation from the problem statement down to the physical devices, in order.
Cevabı göster
Yukarıdan aşağı: problem doğal dilde tanımlanır, algoritmaya dönüşür, bir programlama dilinde yazılır, derleyici bunu ISA'ya çevirir, ISA bir mikromimari ile gerçeklenir, mikromimari mantık devrelerinden, devreler de transistörlerden (devices) oluşur.
What is abstraction, and why is it useful to a computer engineer?
Cevabı göster
Soyutlama, o an ilgilenmediğin ayrıntıyı gizleyip sadece işine yarayan arayüzü görmektir. Örneğin bir toplama devresini kullanırken içindeki transistörleri düşünmezsin. Verimlilik sağlar. Ama bir şey bozulduğunda soyutlamanın altına inebilmek (deconstruct) gerekir.
Name the three properties every algorithm must have.
Cevabı göster
Definiteness: her adım kesin ve belirsizlik içermez. Effective computability: her adım bilgisayarla gerçekten yapılabilir. Finiteness: algoritma sonlu adımda biter.
Why can't a computer be programmed directly in a natural language such as English or Turkish?
Cevabı göster
Doğal dilde aynı cümle birden fazla anlama gelebilir. Bilgisayar her adımı tek anlamla yapmalı. Bu yüzden belirsizliği olmayan, makine tarafından çözümlenebilen (mechanically parsed) programlama dilleri kullanılır.
Which level is described as the interface between software and hardware, and what does it specify?
Cevabı göster
ISA (Instruction Set Architecture), programın bilgisayara verebileceği komutların tam listesidir. Opcode'ları, operand türlerini (data types), adresleme kiplerini, register ve bellek düzenini tanımlar. Yazılım ISA'ya kadar yazılır; donanım ISA'yı gerçekler.
Can one ISA have more than one microarchitecture? Give the reason.
Cevabı göster
ISA ne yapılacağını, mikromimari nasıl yapılacağını söyler. Aynı x86 komut setini çalıştıran çok farklı işlemciler vardır: hız, maliyet ve güç tüketimi farklıdır ama aynı programı çalıştırırlar. İlişki bire-çok: bir ISA, çok mikromimari.
What is the difference between a compiler and an assembler?
Cevabı göster
Derleyici (compiler) C gibi yüksek seviyeli bir dili hedef ISA'nın komutlarına çevirir. Assembler ise zaten neredeyse bire bir makine komutu olan assembly dilini 0 ve 1'lere (machine code) çevirir. Assembly'de her satır çoğunlukla tek bir makine komutudur.
An ISA has 40 different instructions. What is the minimum number of bits needed for the opcode field?
Cevabı göster
bit ile farklı opcode yazılır. , yani en az 6 bit gerekir.
Every LC-3 instruction is 16 bits and the opcode is the top 4 bits. How many distinct opcodes can the LC-3 have?
Cevabı göster
4 bitlik alanla farklı değer yazılır. LC-3'te bu 16 değerden 15'i kullanılır, biri (1101) ayrılmıştır (reserved).
True or false: a small, cheap computer can compute everything a supercomputer can compute, given enough time and memory.
Cevabı göster
Bu, bilgisayarların evrensel hesaplama aygıtı (universal computing device) olmasının sonucudur. Turing'e göre evrensel bir Turing makinesi her Turing makinesini taklit edebilir. Farkı sadece hızda ve bellek miktarındadır, hesaplayabildiği şeylerde değil.
A program runs correctly on one processor but you want it to run faster. Changing which level keeps the program binary unchanged: the ISA or the microarchitecture?
Cevabı göster
Makine kodu ISA'ya göre yazılmıştır. ISA aynı kaldıkça program yeniden derlenmeden çalışır. Daha hızlı bir mikromimari (daha iyi boru hattı, daha büyük önbellek) aynı ikiliyi daha hızlı çalıştırır. ISA'yı değiştirirsen programı yeniden derlemen gerekir.
Which level of transformation is the first one that a computer can execute directly, without further translation?
Cevabı göster
C programı derlenmeden çalışmaz, assembly programı assemble edilmeden çalışmaz. ISA seviyesindeki makine kodu (machine code), donanımın doğrudan getirip (fetch) çalıştırdığı biçimdir. Altındaki seviyeler (mikromimari, devreler) bu kodu çalıştıran donanımdır.
Doğrulama: Kavramsal cevaplar Patt & Patel 1-2. bölüm kavramlarıyla karşılaştırıldı; sayısal sorular (opcode bit sayısı, adres sayısı) node ile hesaplandı (verify/SEN2201/01.mjs).