MertcaN9
Üye
Mobil cihazlarda CPU hızı yanılgısı VE de Androidin kullandığı işlemci nedeni..
Başlarken:
arkadaşlar yazının tamamı alıntıdır. günümüzde yaşanan bazı yanlış bilgilerin önlenmesine fayda sağlayacağı için ve de symbian^3 ü yakından ilgilendirdiği için paylaştım.
Nokianın Symbian^3′lü son cihazlarında 680 MHz ARMv6 işlemciler kullanması üzerine mobil cihazlardaki işlemci hızları hakkında herkes birşeyler konuştu ve kafa karıştırdı. İsterseniz şimdi mobil bir cihazdaki işlemci hızının aslında ne anlama geldiğini ve ne anlama gelmediğini hep birlikte görelim.(Dikkat! iPhone 4′ün saat hızı kaynak eklenerek güncellenmiştir!)
Öncelikle ilk yanlışı masaya yatıralım: İşlemcinin saat hızı (MHz birimindeki değer) işlemcinin işlem gücünü gösterirİşlemcinin saat hızı, işlemcinin saniyedeki veri işleme gücü hakkında bilgi edinmemizi sağlayan bir kaç faktörden biri olmasına rağmen kesinlikle tek faktör değildir. İşlemcinin işlem gücünü belirleyen diğer faktörleri kısaca:
arkadaşlar yazının tamamı alıntıdır. günümüzde yaşanan bazı yanlış bilgilerin önlenmesine fayda sağlayacağı için ve de symbian^3 ü yakından ilgilendirdiği için paylaştım.
Linkleri görüntülemek için kayıt olmalısınız
yazım buradan alıntıdır. sıkıcı gelebilir ama sonuna kadar okumakta fayda var diye düşünüyorum Nokianın Symbian^3′lü son cihazlarında 680 MHz ARMv6 işlemciler kullanması üzerine mobil cihazlardaki işlemci hızları hakkında herkes birşeyler konuştu ve kafa karıştırdı. İsterseniz şimdi mobil bir cihazdaki işlemci hızının aslında ne anlama geldiğini ve ne anlama gelmediğini hep birlikte görelim.(Dikkat! iPhone 4′ün saat hızı kaynak eklenerek güncellenmiştir!)
Öncelikle ilk yanlışı masaya yatıralım: İşlemcinin saat hızı (MHz birimindeki değer) işlemcinin işlem gücünü gösterirİşlemcinin saat hızı, işlemcinin saniyedeki veri işleme gücü hakkında bilgi edinmemizi sağlayan bir kaç faktörden biri olmasına rağmen kesinlikle tek faktör değildir. İşlemcinin işlem gücünü belirleyen diğer faktörleri kısaca:
- işlemcinin belleğe erişim hızı
- işlemcinin kaç ayrı çekirdeği olduğu
- her çekirdekte kaç ayrı iş hattı (pipeline) olduğu
- her iş hattının kaç kademeden (stage) oluştuğu
- bu kademelerin sırayla (in-order) veya sırasız (out-of-order) çalışıp çalışmadığı
şeklinde özetleyebiliriz (Bkz Not: 1 ve 2). Yani bir diğer deyişle işlemcinin MHz cinsinden saat hızı, işlemcinin gücü hakkında salt olarak bize hiç bir sağlıklı fikir veremez.Bu yüzdendir ki 600 MHz saat hızında çalışan ARMv7 komut setli bir Cortex A8 işlemci, yine 600 MHz saat hızında çalışan ARMv6 komut setli bir ARM 11 işlemciden çok daha güçlü ve hızlıdır. Ayrıca bunlar işin sadece donanımsal yönüdür, haliyle bir de yazılımsal yönü vardır.S: İşlemcinin gücünü yazılım nasıl etkiler?
C: Çok güçlü bir arabayı dandik bir şöförün kullanımı hız açısından nasıl etkilerse o şekilde etkiler Şimdi örnek vermeyi bırakıp gerçeğe dönecek olursak mobil işletim sistemlerinin işlemciyi nasıl kullandığına bakmamız gerekir.Ön bilgi: İşlemciyi hemen hemen hiç bir uygulama doğrudan kullanamaz çünkü işlemcinin dilinden (Assembly makine dili) konuşamazlar, bu yüzden ihtiyaçları olan işlemleri işlemcinin dilinden konuşmayı bilen işletim sistemine iletirler.Uygulamalar işletim sistemi ile doğrudan iletişebiliyor ve işletim sisteminin bir parçası gibi davranabiliyorsa doğal (native) uygulama olurlar ve Symbian ile iOS işletim sistemleri uygulamaların doğal halde çalışmasına olanak sunar.Fakat Android işletim sistemi adına Dalvik VM denilen ve doğal olamayan uygulamalarının söylediklerini işletim sisteminin anlayacağı dile çeviren ek bir doğal uygulama (Sanal Makine Virtual Machine) kullanıyor çünkü (Android NDK ile geliştirilmemiş) Android uygulamaları doğal modda çalışamıyor. Peki bu bizim için ne anlama geliyor?Symbian ile iOS uygulamaları işlemcinin gücünün yaklaşık %95 ile %90ı arasındaki bir miktarı doğrudan kullanabilirken, Androidde bu oran (araya tercümanlık için giren Dalvik VMin işlemci gücünden pay alması yüzünden) %75 ile %60 arasına kadar düşebiliyor.Yani bir diğer deyişle bir uygulama Symbian ile iOS işletim sistemlerinde 900 MHz hız ile çalışabilmek için diyelim ki 1000 MHz işlemciye ihtiyaç duyuyorsa, Android işletim sisteminde900 MHz hız ile çalışabilmek için 1200 ~ 1500 MHz arasında bir işlemciye ihtiyaç duyuyor,çünkü aradaki farkı Dalvik VM kullanıyor.Umarım şimdi modern Android cihazlarda neden en az 1 GHz işlemci kullanıldığını daha iyi anlıyorsunuzdur, çünkü ancak bu şekilde işlemcinin uygulamalardaki etkin saat hızı 750 ~ 600 MHz civarında olabiliyor.(Bkz Not: 3)
İşlemcinin gücünden ne kadar faydalanıldığı konusunda araya giren bir diğer faktör ise işletim sisteminde donanımsal hızlandırmanın (hardware acceleration) kullanılıp kullanılmadığıdır.Symbian^3 ve ilerisi ile iOS işletim sisteminin kullanıcıya görünen grafiksel arayüzünü (GUI) merkezi görsel işlemci (GPU) ile oluşturup merkezi işlemciyi (CPU) kullanmaz.
Fakat Android henüz donanımsal hızlandırma desteklemediği için GUI CPU tarafından oluşturulur, GPU kullanılmaz (Bkz Not: 4)Bu da toplam performansta bir düşüşe sebep olur çünkü toplam işlemci gücünden uygulamalara ayrılabilen miktar yaklaşık %10 %20 arasında azalmaktadır.
Yukarıda anlattıklarımızı biraz daha kolay anlaşılabilir bir dille ifade etmemiz gerekirse:
- Nokia N8, Symbian^3 işletim sistemi kullandığı için (orjinalinde 772 MHz olduğu halde pil ömründen tasarruf edebilmek için saat hızı düşürülmüş) 680 MHzlik ARMv6 komut setli CPUsunun yanı sıra 300 MHzlik GPUsunu (Broadcom BCM2727) de kullanır, böylece toplam işlemci saat hızı 980 MHze çıkar (Bkz Not: 5), uygulamalara doğrudan ayrılabilen CPU saat hızı ise 612 ~ 646 MHz arasındadır.
- Apple iPhone 4, iOS işletim sistemi kullandığı için (orjinalinde 1000 MHz olduğu halde pil ömründen tasarruf edebilmek için saat hızı düşürülmüş) ARMv7 komut setli 786 MHzlik (Bkz Not: 6) CPUsuna ek olarak 200 MHzlik GPUsunu (PowerVR SGX535) de kullanır, toplam işlemci saat hızı 986 MHze çıkar (Bkz Not: 5), uygulamalara doğrudan ayrılabilen CPU saat hızı ise 707.4 ~ 746.7 MHz arasındadır.
- Samsung Galaxy S, Android işletim sistemi kullandığı için ARMv7 komut setli (saat hızı düşürülmemiş olan) 1000 MHzlik CPUsunun yanı sıra 200 MHzlik GPUsunu (PowerVR SGX540)kullanamaz, toplam işlemci saat hızı 1000 MHzde kalır (Bkz Not: 5) ve uygulamalara doğrudan ayrılabilen CPU saat hızı 480 ~ 675 MHz arasındadır.
Gördüğünüz üzere işlemcisinin saat hızı düşük diye yerden yere vurulan Nokia N8/E7/C7/C6-01 aslında diğer rakiplerinden daha güçsüz değildir, içlerindeki şu an piyasadaki en güçlü GPU kullanıldığı için mevzubahis uygulamanın GPUyu ne kadar kullandığına bağlı olarak rakiplerinden çok daha hızlı da olabilir.
(Bkz Not: 3)
Son olarak bir bilgi daha: Yukarıda işlemcinin belleğe erişim hızının toplam işlemci gücünü etkileyen bir faktör olduğundan bahsetmiştik. iPhone 4 ve Galaxy Ste kullanılan PowerVR SGX GPUlar kendi içlerinde RAM barındırmadığı için sistemin RAMini kullanırlar ve sistemin RAMine tek RAM kontrolcüsü olduğu için aynı anda hem CPU hem de GPU erişemez, birbirlerini beklemek zorunda kalırlar ve bu saniyede yapılabilen işlem sayısını düşürür.
Fakat şimdiye dek duyrulmuş Symbian^3 cihazlarda kullanılan Broadcom BCM2727 GPUiçerisinde 32 MB RAM ve haliyle bir de kendine ait RAM kontrolcüsü barındırdığından sistemin RAMini pek kullanmaz, kullansa bile ayrı RAM kontrolcüleri ile belleğe eriştiklerinden hem CPU hem de GPU aynı anda RAMlerine erişir ve birbirlerini beklemek zorunda kalmazlar ve saniyede yapılabilen işlem sayısında bir düşüş yaşanmaz.
Hadi buyrun bir de buradan yakın!
Ekleme: Bir kaynakta bir kullanıcının
Yukarıda yazılımın donanımdan yeterince faydalanmadığı zaman o donanımın hiç bir anlamı olmadığını Android üzerinden anlatmaya çalıştık, fakat Samsung i8910′da (ve SonyEricsson Satio ile Vivazda) kullanılan Symbian^1 (Symbian OS 9.4 + S60v5 UI) yazılımı Androidin şu anki halinden farksız durumda, yani donanımsal hızlandırma desteklemiyor.
Üstelik Samsung i8910′da kullanılan yazılım ARM Cortex A8′in sunduğu ARMv7 komut setinin getirdiği yenilikleri kullanacak şekilde kodlanmadığı için Nokia N8, ARMv6 komut seti üzerinde çalışan daha eski teknolojiye sahip bir işlemciye sahip olduğu (ve bu testler prototip cihaz üzerinde tamamlanmamış yazılım ile yapıldığı) halde Samsung i8910′dan %54, N8 ile daha hızlı aynı işlemci mimarisine sahip ama N8′in MHz bazında %57 daha hızlı işlemciye sahip olduğuNokia N97′den %180 daha hızlı çıkıyor. (Bkz Not: 7)
Son karşılaştırmayı bira daha düşünmek gerek, aynı işlemci sadece %57 daha hızlı olduğu halde %180 daha güçlü sonuçlar doğurabiliyor. Aradaki fark nereden geliyor derseniz, yazımızı ya okumamış ya da anlamamışsınızdır
Yani kısaca sadece CPUya bakıp laf konuşmak, gayet yersiz ve anlamsız olabiliyor
Notlar:
(1) Pipeline ve stageler hakkında daha detaylı bilgi almak isterseniz
(2) Daha düşük bir saat hızına sahip bir işlemcinin daha yüksek saat hızına sahip bir işlemciden nasıl daha hızlı çalışabileceğini Appleın 2001 yılına ait bir basın toplantısındaSteve Jobs ve Jon Rubinstein şu şekilde gösteriyor:
(3) Bir kaynakta yukarıda verdiğimiz rakamsal değerlerin kaynağını yazmamız istendi. İşin doğrusu, kullandığımız rakamsal değerler konuyu daha kolayca algılatabilmek için sunduğumuz, deneyimlerimize ve kişisel hesaplamalarımıza dayalı tahminlerimizdi, ki bu nedenle görüldüğü üzere rakamlara dair kaynak sunmadık.
Fakat
Demek ki bizim %10 ~ %30 arasındaki kayıp tahminlerimiz aşırı iyimsermiş. Buyrun bir de siz hesaplayın durumun vehametini
(4)
(5) Yaptığımızın anlamsızlığını bilmemize rağmen, bir cihazı değerlendirmek için yalnızca işlemci saat hızından hareket edenlerin mantığının yanlışlığını göstermek için işlemci hızlarını topladık.
C: Çok güçlü bir arabayı dandik bir şöförün kullanımı hız açısından nasıl etkilerse o şekilde etkiler Şimdi örnek vermeyi bırakıp gerçeğe dönecek olursak mobil işletim sistemlerinin işlemciyi nasıl kullandığına bakmamız gerekir.Ön bilgi: İşlemciyi hemen hemen hiç bir uygulama doğrudan kullanamaz çünkü işlemcinin dilinden (Assembly makine dili) konuşamazlar, bu yüzden ihtiyaçları olan işlemleri işlemcinin dilinden konuşmayı bilen işletim sistemine iletirler.Uygulamalar işletim sistemi ile doğrudan iletişebiliyor ve işletim sisteminin bir parçası gibi davranabiliyorsa doğal (native) uygulama olurlar ve Symbian ile iOS işletim sistemleri uygulamaların doğal halde çalışmasına olanak sunar.Fakat Android işletim sistemi adına Dalvik VM denilen ve doğal olamayan uygulamalarının söylediklerini işletim sisteminin anlayacağı dile çeviren ek bir doğal uygulama (Sanal Makine Virtual Machine) kullanıyor çünkü (Android NDK ile geliştirilmemiş) Android uygulamaları doğal modda çalışamıyor. Peki bu bizim için ne anlama geliyor?Symbian ile iOS uygulamaları işlemcinin gücünün yaklaşık %95 ile %90ı arasındaki bir miktarı doğrudan kullanabilirken, Androidde bu oran (araya tercümanlık için giren Dalvik VMin işlemci gücünden pay alması yüzünden) %75 ile %60 arasına kadar düşebiliyor.Yani bir diğer deyişle bir uygulama Symbian ile iOS işletim sistemlerinde 900 MHz hız ile çalışabilmek için diyelim ki 1000 MHz işlemciye ihtiyaç duyuyorsa, Android işletim sisteminde900 MHz hız ile çalışabilmek için 1200 ~ 1500 MHz arasında bir işlemciye ihtiyaç duyuyor,çünkü aradaki farkı Dalvik VM kullanıyor.Umarım şimdi modern Android cihazlarda neden en az 1 GHz işlemci kullanıldığını daha iyi anlıyorsunuzdur, çünkü ancak bu şekilde işlemcinin uygulamalardaki etkin saat hızı 750 ~ 600 MHz civarında olabiliyor.(Bkz Not: 3)
İşlemcinin gücünden ne kadar faydalanıldığı konusunda araya giren bir diğer faktör ise işletim sisteminde donanımsal hızlandırmanın (hardware acceleration) kullanılıp kullanılmadığıdır.Symbian^3 ve ilerisi ile iOS işletim sisteminin kullanıcıya görünen grafiksel arayüzünü (GUI) merkezi görsel işlemci (GPU) ile oluşturup merkezi işlemciyi (CPU) kullanmaz.
Fakat Android henüz donanımsal hızlandırma desteklemediği için GUI CPU tarafından oluşturulur, GPU kullanılmaz (Bkz Not: 4)Bu da toplam performansta bir düşüşe sebep olur çünkü toplam işlemci gücünden uygulamalara ayrılabilen miktar yaklaşık %10 %20 arasında azalmaktadır.
Yukarıda anlattıklarımızı biraz daha kolay anlaşılabilir bir dille ifade etmemiz gerekirse:
- Nokia N8, Symbian^3 işletim sistemi kullandığı için (orjinalinde 772 MHz olduğu halde pil ömründen tasarruf edebilmek için saat hızı düşürülmüş) 680 MHzlik ARMv6 komut setli CPUsunun yanı sıra 300 MHzlik GPUsunu (Broadcom BCM2727) de kullanır, böylece toplam işlemci saat hızı 980 MHze çıkar (Bkz Not: 5), uygulamalara doğrudan ayrılabilen CPU saat hızı ise 612 ~ 646 MHz arasındadır.
- Apple iPhone 4, iOS işletim sistemi kullandığı için (orjinalinde 1000 MHz olduğu halde pil ömründen tasarruf edebilmek için saat hızı düşürülmüş) ARMv7 komut setli 786 MHzlik (Bkz Not: 6) CPUsuna ek olarak 200 MHzlik GPUsunu (PowerVR SGX535) de kullanır, toplam işlemci saat hızı 986 MHze çıkar (Bkz Not: 5), uygulamalara doğrudan ayrılabilen CPU saat hızı ise 707.4 ~ 746.7 MHz arasındadır.
- Samsung Galaxy S, Android işletim sistemi kullandığı için ARMv7 komut setli (saat hızı düşürülmemiş olan) 1000 MHzlik CPUsunun yanı sıra 200 MHzlik GPUsunu (PowerVR SGX540)kullanamaz, toplam işlemci saat hızı 1000 MHzde kalır (Bkz Not: 5) ve uygulamalara doğrudan ayrılabilen CPU saat hızı 480 ~ 675 MHz arasındadır.
Gördüğünüz üzere işlemcisinin saat hızı düşük diye yerden yere vurulan Nokia N8/E7/C7/C6-01 aslında diğer rakiplerinden daha güçsüz değildir, içlerindeki şu an piyasadaki en güçlü GPU kullanıldığı için mevzubahis uygulamanın GPUyu ne kadar kullandığına bağlı olarak rakiplerinden çok daha hızlı da olabilir.
(Bkz Not: 3)
Son olarak bir bilgi daha: Yukarıda işlemcinin belleğe erişim hızının toplam işlemci gücünü etkileyen bir faktör olduğundan bahsetmiştik. iPhone 4 ve Galaxy Ste kullanılan PowerVR SGX GPUlar kendi içlerinde RAM barındırmadığı için sistemin RAMini kullanırlar ve sistemin RAMine tek RAM kontrolcüsü olduğu için aynı anda hem CPU hem de GPU erişemez, birbirlerini beklemek zorunda kalırlar ve bu saniyede yapılabilen işlem sayısını düşürür.
Fakat şimdiye dek duyrulmuş Symbian^3 cihazlarda kullanılan Broadcom BCM2727 GPUiçerisinde 32 MB RAM ve haliyle bir de kendine ait RAM kontrolcüsü barındırdığından sistemin RAMini pek kullanmaz, kullansa bile ayrı RAM kontrolcüleri ile belleğe eriştiklerinden hem CPU hem de GPU aynı anda RAMlerine erişir ve birbirlerini beklemek zorunda kalmazlar ve saniyede yapılabilen işlem sayısında bir düşüş yaşanmaz.
Hadi buyrun bir de buradan yakın!
Ekleme: Bir kaynakta bir kullanıcının
Bu arada samsungu 1 buçuk yıl önce böyle bir işlemci (kasıt i8910′daki ARM Cortex A8) koyduğu için tebrik etmek gerek. Nokia hala koymuyor gördüğünüz gibi.
şeklindeki talihsiz ifadesine rastladık ve bunun üzerine bazı söyleyeceklerimiz var.
Yukarıda yazılımın donanımdan yeterince faydalanmadığı zaman o donanımın hiç bir anlamı olmadığını Android üzerinden anlatmaya çalıştık, fakat Samsung i8910′da (ve SonyEricsson Satio ile Vivazda) kullanılan Symbian^1 (Symbian OS 9.4 + S60v5 UI) yazılımı Androidin şu anki halinden farksız durumda, yani donanımsal hızlandırma desteklemiyor.
Üstelik Samsung i8910′da kullanılan yazılım ARM Cortex A8′in sunduğu ARMv7 komut setinin getirdiği yenilikleri kullanacak şekilde kodlanmadığı için Nokia N8, ARMv6 komut seti üzerinde çalışan daha eski teknolojiye sahip bir işlemciye sahip olduğu (ve bu testler prototip cihaz üzerinde tamamlanmamış yazılım ile yapıldığı) halde Samsung i8910′dan %54, N8 ile daha hızlı aynı işlemci mimarisine sahip ama N8′in MHz bazında %57 daha hızlı işlemciye sahip olduğuNokia N97′den %180 daha hızlı çıkıyor. (Bkz Not: 7)
Son karşılaştırmayı bira daha düşünmek gerek, aynı işlemci sadece %57 daha hızlı olduğu halde %180 daha güçlü sonuçlar doğurabiliyor. Aradaki fark nereden geliyor derseniz, yazımızı ya okumamış ya da anlamamışsınızdır
Yani kısaca sadece CPUya bakıp laf konuşmak, gayet yersiz ve anlamsız olabiliyor
Notlar:
(1) Pipeline ve stageler hakkında daha detaylı bilgi almak isterseniz
Linkleri görüntülemek için kayıt olmalısınız
adresindeki kapsamlı yazıyı okuyabilirsiniz.(2) Daha düşük bir saat hızına sahip bir işlemcinin daha yüksek saat hızına sahip bir işlemciden nasıl daha hızlı çalışabileceğini Appleın 2001 yılına ait bir basın toplantısındaSteve Jobs ve Jon Rubinstein şu şekilde gösteriyor:
(3) Bir kaynakta yukarıda verdiğimiz rakamsal değerlerin kaynağını yazmamız istendi. İşin doğrusu, kullandığımız rakamsal değerler konuyu daha kolayca algılatabilmek için sunduğumuz, deneyimlerimize ve kişisel hesaplamalarımıza dayalı tahminlerimizdi, ki bu nedenle görüldüğü üzere rakamlara dair kaynak sunmadık.
Fakat
Linkleri görüntülemek için kayıt olmalısınız
adresinde Android üzerinde Dalvik ile native performans farkını basit bir örnekle göstermişler ve burada Dalvik%900 yavaş kalmış, gerçi itiraf etmek gerek ki kod gerçek hayattaki durumu yansıtmak için yeterince kompleks değil.
Linkleri görüntülemek için kayıt olmalısınız
adresindeki örnekteki daha kompleks bir kodda ise Dalvik %1400 yavaş kalabiliyor. Örneğe göre, acı bir şekilde Dalvik (Symbian telefonlardan native sis uygulamalar ile aralarındaki hız farkını iyi bildiğimiz) J2MEden bile%700 daha yavaş çıkıyor.Demek ki bizim %10 ~ %30 arasındaki kayıp tahminlerimiz aşırı iyimsermiş. Buyrun bir de siz hesaplayın durumun vehametini
(4)
Linkleri görüntülemek için kayıt olmalısınız
(5) Yaptığımızın anlamsızlığını bilmemize rağmen, bir cihazı değerlendirmek için yalnızca işlemci saat hızından hareket edenlerin mantığının yanlışlığını göstermek için işlemci hızlarını topladık.
(6)
ALINTIDIR
Linkleri görüntülemek için kayıt olmalısınız
adresindeki tamamen işlemciyi kullanan benchmark sonuçlarına bakarak, iPhone 3GSteki Samsung S5PC100 işlemcinin Cortex-A8 çekirdeğinin yine Samsung tarafından üretilmiş olan Apple A4 işlemcideki Cortex-A8 çekirdeği ile aynı mimaride oluşunu ve her iki sistemde de aynı RAM tipinin (
Linkleri görüntülemek için kayıt olmalısınız
) kullanıldığını (hatta işin doğrusu S5PC100′de daha hızlı olan
Linkleri görüntülemek için kayıt olmalısınız
Apple A4′te maliyeti düşürmek için
Linkleri görüntülemek için kayıt olmalısınız
) ve bu nedenle saat hızından başka performansı etkileyecek bir faktör bulunmadığını dikkate alırsak, doğru orantılama yaptığımızda A4′ün saat hızı 786 MHz çıkar.ALINTIDIR