ARMv4 Çağı: Mobil Bilişimin Temeli
ARMv4, ARM şirketinin 1996 yılında piyasaya sürdüğü komut seti mimarisinin (ISA) dördüncü sürümüdür. Önceki sürümlerin zorunlu 26-bit adres alanı desteğinden vazgeçen ilk tam teşekküllü 32-bit ARM mimarisi olmuştur. Efsanevi ARM7TDMI ve StrongARM işlemcileri tam olarak ARMv4 tabanlı geliştirilmiş olup; bu işlemciler ilk akıllı telefonlar, iPod Classic oynatıcılar ve Game Boy Advance oyun konsolları dahil olmak üzere taşınabilir elektronikte bir devrim sağlamıştır.
ARMv4'ün modern mimarilerden (ARMv8/ARMv9) en önemli farkı, yerel 64-bit desteğinin bulunmaması, daha az verimli boru hattı (pipeline) yapısı ve temel çekirdekte kayan nokta işlemleri ile vektörel operasyonlar için genişletmelerin eksikliğidir. Günümüzde ARMv4 yeni tüketici cihazlarında kullanılmamaktadır, ancak bilişim tarihinin önemli bir parçası olarak kalmakta ve niş, uzmanlaşmış eski endüstriyel kontrolörlerde karşımıza çıkmaktadır.
ARMv4 Nedir ve Temel Özellikleri Nelerdir?
ARMv4 mimarisi, gömülü sistemler için daha güçlü ancak enerji verimli işlemcilere olan ihtiyaca bir yanıt olarak ortaya çıktı. Ondan önce, erken Acorn çiplerinin 26-bit sistemleriyle uyumluluk yükünü hala taşıyan ARMv3 hakim durumdaydı. ARMv4, 32-bit bellek adresleme modelini kesin olarak yerleştirdi ve bu da 4 GB RAM'e erişime izin verdi ki bu, 90'ların ortası için devasa bir rakamdı.
ARMv4'ün temel teknik özellikleri şunlardır:
- 32-bit adres ve veri yolu: Genel amaçlı 32-bit registerlarla tam entegre çalışma.
- Thumb ve ARM Modları: Thumb 16-bit komut setinin tanıtılması (ARMv4T alt varyantında), o dönemin pahalı ve yavaş belleğine sahip cihazlar için kritik öneme sahip olan kod boyutunu önemli ölçüde azalttı.
- Temel sürümde donanımsal çarpma-Toplama (MAC) eksikliği: Temel ARM7TDMI çekirdeği çarpma işlemini birkaç döngüde gerçekleştiriyordu; bu günümüz standartlarına göre yavaştı ancak ses kodekleri ve basit grafikler için yeterliydi.
- Harvard veya Modifiye Harvard Mimarisi: Talimat ve veri önbelleklerinin ayrılması (daha gelişmiş uygulamalarda, örneğin genellikle v4/v5 dönemine dayanan geçiş modelleri olarak anılan ancak temelleri bu döneme dayanan ARM9TDMI'de görüldüğü gibi).
Önemli Not: İşlemci çekirdeği (örneğin ARM7) ile mimari sürümü (ARMv4) arasında sıkça kafa karışıklığı yaşanır. ARM7TDMI çekirdeği, ARMv4T mimarisini uygular. "T" harfi, Thumb komut seti desteğini ifade eder.
ARMv4 Mimarisi Nerelerde Karşımıza Çıktı?
ARMv4 tabanlı cihazların popülerlik zirvesi 1996 ile 2005 yılları arasına denk gelir. Bu mimari, günümüz gadget pazarını şekillendiren bir cihaz sınıfı için "iş atı" rolünü üstlendi.
ARMv4 Üzerindeki Efsanevi Cihazlar
- Game Boy Advance (GBA): 16,78 MHz saat hızına sahip ARM7TDMI işlemci kullandı. GBA için devasa oyun kütüphanesi doğrudan bu mimari üzerine yazılmıştır.
- Apple iPod (Classic, ilk nesiller): İlk iPod versiyonları, ARM7TDMI çekirdeğine dayalı PortalPlayer PP5002 işlemcisini kullandı. Bu durum, mimarinin minimum enerji tüketimiyle gerçek zamanlı MP3 kod çözme işlemini yönetebilme kapasitesini kanıtladı.
- Nokia ve BlackBerry Akıllı Telefonları: Erken dönem communicator ve akıllı telefon modelleri (örneğin Nokia 9210 Communicator), arayüz yönetimi ve iletişim için ARMv4 tabanlı işlemciler kullandı.
- Yönlendiriciler ve Yazıcılar: 90'ların sonu ve 2000'lerin başındaki birçok giriş seviyesi ağ cihazı, düşük maliyetleri ve güvenilirlikleri nedeniyle ARM7 çiplerini kullandı.
Endüstriyel Miras
Bugün bile, 2010 öncesi üretim endüstriyel ekipmanlarda, tıbbi cihazlarda ve otomotiv elektroniğinde ARMv4 uyumlu mikrodenetleyicilere rastlamak mümkündür. Uzun sertifikasyon döngüleri nedeniyle bu cihazlar onlarca yıl boyunca çalıştırılabilir, ancak bu mimari üzerinde yeni geliştirmeler artık yapılmamaktadır.
ARMv4'ün Modern Mimarilerle (ARMv8/ARMv9) Karşılaştırması
ARMv4 ile güncel standartlar (ARMv8-A, ARMv9-A) arasındaki uçurum devasadır. Modern işlemciler milyarlarca transistör işlerken, ARM7TDMI yaklaşık 33 bin transistör içeriyordu.
Temel Farklılıklar
| Özellik | ARMv4 (ARM7TDMI Örneği) | Modern ARM (ARMv8/ARMv9) |
|---|---|---|
| Bit Genişliği | Sadece 32 bit | 64 bit (AArch64) + 32 bit desteği |
| Boru Hattı (Pipeline) | 3 aşama (Fetch, Decode, Execute) | Derin süperskala (10+ aşama), sıra dışı yürütme |
| Kayan Nokta Birimi (FPU) | Yok (yazılımsal emülasyon) veya isteğe bağlı VFPv2 | Entegre NEON, karmaşık vektörel genişletmeler |
| Sanallaştırma | Yok | CPU seviyesinde donanımsal sanallaştırma desteği |
| Güvenlik | Temel ayrıcalıklar (User/System) | TrustZone, MTE (Bellek Etiketleme Uzantısı), bellek şifreleme |
| Enerji Verimliliği | Basit görevler için yüksek | Dinamik frekans yönetimi, heterojen çekirdekler (big.LITTLE) |
Neden ARMv4 Kodu Modern Çiplerde Doğrudan Çalışmaz?
Modern ARM işlemcileri 32-bit uygulamalar için ikili kod düzeyinde geriye dönük uyumluluğu (AArch32 modunda) korusa da, düşük seviyeli kodun veya işletim sisteminin doğrudan taşınması değişiklikler olmadan mümkün değildir.
- Bellek Yönetimi: ARMv4 basit bellek blokları veya erken MMU sürümleri kullanıyordu. Modern sistemler karmaşık sayfa tabloları ve izolasyon mekanizmaları gerektirir.
- Kesmeler: ARMv4'teki kesme işleme modeli basit ve senkrondı. Modern çekirdeklerde, farklı yapılandırma gerektiren kesme denetleyicileri (GIC) kullanılır.
- Atomik İşlem Eksikliği: ARMv4'te güvenli çoklu iş parçacığı desteği için modern talimatlar (daha sonraki sürümlerdeki LDREX/STREX veya v8'deki muadilleri gibi) bulunmuyordu, bu da çoklu iş parçacıklı kodun port edilmesini zorlaştırır.
Geliştiriciler İçin Uyarı: GBA veya iPod için eski yazılımları modern bir emülatörde veya donanımda çalıştırmaya çalışıyorsanız, ARMv4'teki zamanlamaların ve çevre birimi davranışlarının saat frekansına sıkı sıkıya bağlı olduğunu unutmayın. Modern emülatörler bu gecikmeleri yazılımsal olarak taklit etmelidir, aksi takdirde program çok hızlı çalışabilir veya senkronizasyon hatalarına neden olabilir.
Sık Yapılan Hatalar ve Yanlış Anlaşılmalar
ARMv4 konusunu incelerken sıklıkla aşağıdaki yanlışlıklarla karşılaşılır:
- "ARMv4 64 biti destekler": Hayır. 64-bit hesaplama desteği sadece ARMv8 mimarisinde (2011 yılı) ortaya çıktı.
- "Tüm eski ARM işlemcileri aynıdır": ARMv5 mimarisi, derleyici performansını artırmak için önemli talimatlar ekledi ve ARMv6 medya SIMD talimatlarını ekledi. ARMv6 için optimize edilmiş kod, saf ARMv4 üzerinde verimli çalışmayacak veya hiç çalışmayacaktır.
- "ARM7, 7. nesildir": Çekirdek numaralandırması (ARM7, ARM9, ARM11) ile mimari numaralandırması (ARMv4, ARMv5, ARMv6) eşleşmez. ARM7 çekirdeği ARMv4 mimarisine, ARM11 ise ARMv6 mimarisine aittir.
SSS
Günümüzde ARMv4 tabanlı yeni bir çip satın alınabilir mi? Hayır. ARM Holdings, ARM7 ailesi çekirdeklerinin (v4 tabanlı) lisanslanmasını 15 yıldan fazla bir süre önce durdurdu. Yeni çipler yalnızca ARMv8 ve ARMv9 mimarileri temelinde üretilmektedir. Ancak, elektronik bileşen tedarikçilerinde eski stok mikrodenetleyicilere rastlanabilir.
Neden ARMv4 bu kadar enerji verimli kabul ediliyordu? Basitliği nedeniyle. Karmaşık dal tahmin bloklarının, derin boru hatlarının ve büyük hacimli önbelleklerin olmaması, transistörlerin daha az sıklıkla anahtarlandığı ve akım kaçaklarının minimal olduğu anlamına geliyordu. MP3 çalma veya metin görüntüleme gibi görevler için bu yeterliydi.
Şu anda ARMv4 assembler öğrenmenin bir anlamı var mı? Sadece eğitim amaçlı veya eski oyunların ve cihazların tersine mühendisliği için anlamlıdır. Modern gömülü sistem geliştirme için ARMv7-M (Cortex-M mikrodenetleyicileri için) veya ARMv8-A (Linux/Android/iOS uygulamaları için) öğrenilmelidir.
ARMv4 bağlamında Thumb nedir? Thumb, ARMv4T'de tanıtılan 16-bit talimatların bir alt kümesidir. 90'ların cihazlarında kıymetli belleği tasarruf etmek amacıyla kodun daha yoğun paketlenmesine olanak sağlıyordu. İşlemci, 32-bit ARM modu (yüksek performans) ile 16-bit Thumb modu (yüksek kod yoğunluğu) arasında anında geçiş yapabiliyordu.