SEN2201 · 1. hafta · Introduction to a Computer System

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ı.

abstractionlevels of transformationalgorithminstruction set architecture (ISA)microarchitecturecompilerassembleruniversal computing deviceTuring machinedefinitenesseffective computabilityfiniteness

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:

  1. Bilgisayar akıllı değil, hızlıdır. Her şeyi çok basit adımlarla yapar.
  2. Soyutlama (abstraction) ayrıntıyı gizlemektir. Bütün bilgisayar mühendisliği bunun üzerine kurulu.
  3. Yedi dönüşüm seviyesi var: Problem’den Devices’a. Sırasını ezberle.
  4. ISA, yazılımla donanımın buluştuğu sözleşmedir.
  5. 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:

İfadeDoğ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.

#SeviyeNe yapılır?Örnek
1ProblemDoğal dille tarif“Sınıfın not ortalamasını bul”
2AlgorithmAdım adım, kesin yöntemNotları topla, sayıya böl
3Program (language)Bir programlama dilinde yazC kodu
4ISAMakinenin komut kümesiLC-3 ADD, LD, BR
5MicroarchitectureISA’nın donanım tasarımıVeri yolu, kontrol birimi
6Logic circuitsKapılar ve devrelerToplayıcı, mux, register
7DevicesTransistörlerCMOS

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ı

HaftaSeviyeKonu
2VeriBitler, 2’s complement, IEEE 754, ASCII
3-4Devices, Logic circuitsTransistör, kapı, kombinasyonel devre, latch, bellek, FSM
5-6Microarchitecturevon Neumann modeli, komut döngüsü, I/O
7-8ISALC-3 komutları ve kodlaması
10Program (low-level)LC-3 assembly
11-14Program (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.

İfadeSeviye
x = a + b;Program (language)
ADD R1, R2, R3ISA (assembly gösterimi)
4 bitlik ripple-carry toplayıcıLogic circuits
“Önce topla, sonra 2’ye böl”Algorithm
n-tipi MOS transistörDevices
Komutun kaç saat çevriminde bittiğiMicroarchitecture

Ö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üşünceDoğrusu
ISA ve mikromimari aynı şeyISA arayüz, mikromimari onun gerçeklemesi
Derleyici makine kodunu donanıma çevirirDerleyici yüksek seviyeli dili ISA’ya çevirir
Hızlı bilgisayar daha fazla problem çözebilirHesaplayabildikleri aynı, sadece hız farkı var
Seviye sırası: Program, Algorithm, …Önce Algorithm, sonra Program
Logic circuits en alttaki seviyeEn altta Devices (transistörler) var
Algoritma sonsuza kadar çalışabilirFiniteness: sonlu adımda bitmeli
Doğal dille programlama mümkünDoğal dil belirsiz, makine tek anlam ister

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

List the levels of transformation from the problem statement down to the physical devices, in order.

Cevabı göster
Problem, Algorithm, Program (language), ISA, Microarchitecture, Logic circuits, Devices

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.

Soru 2kolay

What is abstraction, and why is it useful to a computer engineer?

Cevabı göster
Hiding unnecessary detail so you can work at one level

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.

Soru 3kolay

Name the three properties every algorithm must have.

Cevabı göster
Definiteness, effective computability, finiteness

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.

Soru 4kolay

Why can't a computer be programmed directly in a natural language such as English or Turkish?

Cevabı göster
Natural languages are ambiguous

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.

Soru 5orta

Which level is described as the interface between software and hardware, and what does it specify?

Cevabı göster
ISA: instructions (opcodes), data types, addressing modes

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.

Soru 6orta

Can one ISA have more than one microarchitecture? Give the reason.

Cevabı göster
Yes

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.

Soru 7orta

What is the difference between a compiler and an assembler?

Cevabı göster
Compiler: high-level language to ISA; assembler: assembly to machine code

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.

Soru 8orta

An ISA has 40 different instructions. What is the minimum number of bits needed for the opcode field?

Cevabı göster
6

kk bit ile 2k2^k farklı opcode yazılır. 25=32<40≤64=262^5 = 32 < 40 \le 64 = 2^6, yani en az 6 bit gerekir.

Soru 9kolay

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
16

4 bitlik alanla 24=162^4 = 16 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).

Soru 10orta

True or false: a small, cheap computer can compute everything a supercomputer can compute, given enough time and memory.

Cevabı göster
True

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.

Soru 11zor

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
The microarchitecture

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.

Soru 12zor

Which level of transformation is the first one that a computer can execute directly, without further translation?

Cevabı göster
ISA (machine code)

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).

Deftere not kartı

7 seviye: Problem > Algorithm > Program (language) > ISA > Microarchitecture > Logic circuits > Devices Abstraction = ayrıntıyı gizle, arayüzle çalış. Bozulunca bir alt seviyeye in. Algoritma 3 özellik: definiteness, effective computability, finiteness Doğal dil ambiguous -> programlama dili ISA = yazılım/donanım arayüzü: opcodes, data types, addressing modes, registers, memory ISA "ne", microarchitecture "nasıl". 1 ISA -> çok microarchitecture compiler: C -> ISA assembler: assembly -> machine code (1 satır ~ 1 komut) k bit opcode -> 2^k komut. 40 komut -> 6 bit LC-3: 16 bit komut, 4 bit opcode, 8 register (3 bit alan), 2^16 adres Universal computing device: her bilgisayar aynı şeyi hesaplar, fark hız ve bellek