Android ve Mimarisi

Android armv7 armv8 32bit vs 64bit
Android armv7 armv8 32bit vs 64bit

Android işletim sistemi orijinal olarak sadece 32-bit işlemciler için yazılmıştır, özellikle 32-bit ARM işlemcileri için. Sonraları Intel ve MIPS Android desteği için yatırımlar yapmaya başladı ama hala 32-bit işlemciler için. Bunun esas sebebi ise bir standart olması ve muhtemelen uyumsuzluk sorunları ile karşılaşmamak içindi. Tabi esasında bunun altında yatan bir diğer gerçek şu anda Android’te kullanılan uygulamaların çok büyük bir çoğunluğunun saf kod (binary code) olarak yayımlanmaması. Hemen hemen bir çoğu JAVA da yazıldığı için sanal uygulama (bytecode) olarak çalışmakta

Binary – Saf Kod (0/1): herhangi bir VM tarafından çalıştırılmayıp direkt makine dilinde yazılmış yada derlenmiş ve sistemle direkt çalışabilen kodlara denir.Çok daha hızlı çalışırlar.Makine dili 0 ve 1 lerden oluşmaktadır..

ByteCode – Sanal Uygulama : Adı sizi kandırmasın normal binary koddan farkı gerekli kutüphanaleri bağlı çalıştığı sanal makinesi üzerinden almakta arada bir katman olduğu için mili saniyeler düzeyinde yavaşlık olsa da kütüphaneyi kendi içinde taşımak zorunda olmadığı için hafıza gereksinimlerini azaltmakta ve daha da önemlisi uyumsuzluk sıkıntısı minimize edilmektedir.

Özetle ikisininde birbirine göre avantajları ve dezavantajları var tabi ki.İnanın buraya tek tek yazmaya kalksam en az iki üç gün yazı yazmam gerekir. Ama başlığımıza bağlı kalmak adına kısaca anlamanız için şöyle ufak bir iki örnek daha vereyim istiyorum:

JVM üzerinde koşması için yazılmış olan uygulamalar Java bunu bulunduğu makinenin mimarisine göre derleyip çalıştırdığından multiplatform, yani hemen hemen JVM’in çalıştığı her platformda uygulamayı çalıştıracaktır.Bu sebepten iş uygulamalarının hemen hemen hepsi bytecode olarak yüklenir veya öyle olması en mantıklısı; aksi halde her uygulama için her çalışacağı cihaz ve platform için kendi kütüphanesini ve derleyicisini yanında kopyalamak zorunda kalırdınız.

Yukarıda yazdıklarım genel bilgi anlamında doğruda olsa gelelim buna ARM yapısı üzerinden bakalım. ARM Lollipop ile beraber yeni jenerasyon 64 bit işlemci desteği geldi. Bunun ARM işlemcileri için uygulama geliştiren yazılımcılar için ise bugün tek avantajı var artık 4GB ve üzeri ram adreslemesi yapabilmek. Bildiğimiz %98 Android uygulamaların buna ihtiyacı bulunmamakta ancak üst seviye oyunlar ve resim/video yaratma ve editleme uygulamaları için iyi avantaj üsağlayacak gibi gözüküyor.Söz konusu 64bit olunca console kalitesinde oyunlar ve özellikle VR oyunların artacağına inanıyoruz.Java uygulamaları için ise her şey harika çünkü yazılımını ile ilgili bir güncelleme yapmanız gerekmiyor; çünkü JVM uygulamaları her çalıştırdığınızda kendisi cihazların yapısına göre derlemeyi yapmaktadır, ancak native(doğal) uygulamalar için güncellemeler gerekli olacak.

ARMv8 in geriye uyumluluğunun olması sebebiyle 32bit uygulamlarının bir sıkıntısı olmayacaktır.Hatta sisteminizin 64 bit yada 32bit olmasıda bir şeyi değiştirmeyecektir. 32bit de yazılmış bir native kodunuz var ise bunu 64bit e derlerseniz 64 bit in 4g üzerini adresleme özelliğini kullanması mümkün olacaktır.

Bugün en büyük yazılım şirketleri 64 bit uygulamalar geliştirmeye başlasalar dahi 32bit cihazların sektördeki çok ağır yoğunluğundan dolayı uzun yıllar 32bit ARM desteği var olacak gibi gözüküyor.

Bugün 64bit desteğinin Android’e gelmesinin tek sebebi INTEL tabanlı sistemlerin özellikle MICROSOFT baskısı ile 64bit propagandasından kaynaklanıyor. IOT (Internet of Things) geliştikçe ve mobilite arttıkça Android’in durdurulması imkansız yükselişi devam ediyor.Bu durumdan da en çok INTEL ile MICROSOFT zarar görüyor. Oysa Android ile maliyetleri çok düşük çözümler üretebiliyor ve ENDÜSTRİ 4.0 yada AKILLI ŞEHİRLER gibi hedeflere hızla yaklaşabiliyoruz. 2000 – 3000 dolarlardan 500 dolarların altına düşen donanım maliyetleri artık devlet ve enterprise şirketlerin projeleri yapılabilir hale geldi. Hatta dahada güzeli artık ülkemizde daha fazla Milli Çözümler bu sayede görebiliyoruz.

Umuyorum Türkiye’de devlet politikası ile bu çözümlere daha fazla destek verilir ve teknolojik olarak yatırımların desteklenmesinin önü açılır.

Bu arada takip ettiğim bazı forumlarda 64bit mimarili işlemcili sistemler ile 32bit mimarili işlemcili yapılar aralarında gerçek hayat testlerinde sonuçlar kafa karıştıran cinsten ; mesela ffmpeg dosyasını -j4 tag ile derlemek için 64bit fedora sürümü ile 32bit raspbian sürümüyle kıyaslama imkanı bulduk.Eminim çok güçlü cortex-A7 armv7 ile cortecx-A53 armv8 kıyaslamasında 64 bitin üstünlüğünü göreceğinizi düşünüyorsunuz.
64Bit sistemlerin bir başka sorunu da esasında yıllardır 32bitler için yapılan derlemelerdeki optimizasyonlar ile kıyaslandığında daha oyunun başında olan 64bit derlemelerinin gerçek hayat kıyaslamalarında pek de göz kamaştırdığı söylenemez.

İşte sonuçlar :
Aarch64 (64bit): 36 dakika
Arm32 (32bit): 23 dakika

About the Author

Melih Melik SÖNMEZ
1976'da İstanbul'da doğdum.