X86 Mimarisi, ARM mobil olmasını beklerken özel olarak bir klavye ile çalışacak şekilde mi tasarlanmış? İkisi arasındaki temel farklar nelerdir?
X86 Mimarisi, ARM mobil olmasını beklerken özel olarak bir klavye ile çalışacak şekilde mi tasarlanmış? İkisi arasındaki temel farklar nelerdir?
Yanıtlar:
ARM
Bir olan RISC iken (RISC) mimarisi x86
bir olan CISC (Complex Instruction Set Computing) bir.
Bu açıdan olanlar arasındaki temel fark, ARM komutlarının yalnızca x86 bellekte / belleğe veri yüklemek ve belleğe kaydetmek için birkaç talimat içeren kayıtlarda çalışmasıdır. V8 ARM, 32 bitlik bir yerel mimariydi ve diğerlerine göre dört baytlık işlemleri destekliyordu.
ARM daha basit bir mimaridir ve küçük silikon alanı ve birçok güç tasarrufu özelliği sağlarken, x86 hem güç tüketimi hem de üretim açısından bir güç canavarı haline gelir.
" X86 Mimarisi, ARM mobil olmasını beklerken klavyeyle çalışmak için özel olarak tasarlanmış mı? " mobil cihazlar için x86
klavye ile çalışmak üzere özel olarak tasarlanmamıştır ARM
. Yine de temel mimari seçimler nedeniyle aslında x86 IO
, ARM olmasa da doğrudan çalışmak için talimatlar var. Bununla birlikte, USB gibi özel IO veri yollarında, bu tür özelliklere ihtiyaç da ortadan kalkar.
Alıntı yapmak için bir belgeye ihtiyacınız varsa, Cortex-A Serisi Programcılar Kılavuzu (4.0) RISC ve CISC mimarileri arasındaki farkları anlatır:
ARM işlemci, İndirgenmiş Komut Takımı Bilgisayarı (RISC) işlemcisidir.
Karmaşık Komut Seti Bilgisayarı (CISC) işlemcileri, x86 gibi, tek bir komutla karmaşık şeyler yapabilen zengin bir komut setine sahiptir. Bu tür işlemciler genellikle makine talimatlarını dahili işlem dizilerine (mikrokod) kodlayan önemli miktarlarda dahili mantığa sahiptir.
RISC mimarileri ise, daha az sayıda transistörle gerçekleştirilebilen daha az sayıda daha genel amaçlı talimatlara sahiptir, bu da silikonu daha ucuz ve daha verimli hale getirir. Diğer RISC mimarileri gibi ARM çekirdeklerinde de çok sayıda genel amaçlı kayıt vardır ve birçok komut tek bir döngüde yürütülür. Tüm yükleme / depolama adreslerinin kayıt içeriğinden ve talimat alanlarından belirlendiği basit adresleme modları vardır.
ARM şirketi ayrıca bu terimlerin işlerine nasıl uygulandığını açıklayan Mimariler, İşlemciler ve Cihaz Geliştirme Makalesi başlıklı bir makale de sunmaktadır .
Komut kümesi mimarisini karşılaştıran bir örnek:
Örneğin, uygulamanızda bir çeşit bytewise bellek karşılaştırma bloğuna ihtiyacınız varsa (derleyici tarafından oluşturulan, ayrıntıları atlama), bu şekilde görünebilir x86
repe cmpsb /* repeat while equal compare string bytewise */
Hareket halindeyken ARM
en kısa formu gibi görünebilir (vb kontrol hatasız)
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */
beq top /* branch(/jump) if result is zero */
bu da size RISC ve CISC komut setlerinin karmaşıklık bakımından nasıl farklı olduğuna dair bir ipucu vermelidir.
İkisinin de klavye ya da mobil cihazlara özgü bir şey yok, ARM'nin yıllardır güç tüketimi açısından oldukça önemli bir avantaja sahip olması, bu da onu pille çalışan her türlü cihaz için cazip hale getirdi.
Gerçek farklılıklara gelince: ARM, daha fazla kayıta sahiptir, Intel eklemeden çok önce birçok yönerge için tahmin tahmini içerir ve neredeyse her yerde güçten tasarruf etmek için her türlü tekniği (tercih ederseniz onlara "numaralar" deyin) uzun süredir dahil etmiştir.
İkisinin talimatları nasıl şifrelediği konusunda da önemli bir fark var. Intel, bir komutun 1 ila 15 bayt arasında herhangi bir yerde yer alabileceği oldukça karmaşık bir değişken uzunlukta kodlama kullanır. Bu, programların oldukça küçük olmasına izin verir, ancak komut kod çözmeyi nispeten zorlaştırır (olduğu gibi: paralel olarak hızlı kod çözme komutları tam bir kabusa benzer).
ARM'nin iki farklı komut kodlama modu vardır: ARM ve THUMB. ARM modunda, tüm talimatlara erişirsiniz ve kodlamanın kodlanması son derece basit ve hızlıdır. Ne yazık ki, ARM modu kodu oldukça büyük olma eğilimindedir, bu nedenle bir programın Intel kodundan iki kat daha fazla bellek işgal etmesi oldukça yaygındır. Başparmak modu bunu azaltmaya çalışır. Yine de oldukça düzenli bir komut kodlaması kullanıyor, ancak kayıt sayısını azaltarak, çoğu komuttan tahminleri ortadan kaldırarak ve dalların aralığını azaltarak, 32 bit'ten 16 bite kadar çoğu talimatı azaltır. Tecrübelerime En azından, bu yine de genellikle vermez oldukçax86 kodunun alabileceği kadar kodlama yoğun, ancak oldukça yakın ve kod çözme hala oldukça basit ve anlaşılır. Düşük kod yoğunluğu, eşdeğer performans elde etmek için genellikle en az biraz daha fazla belleğe ve (genellikle daha ciddi) daha büyük bir önbelleğe ihtiyacınız olduğu anlamına gelir.
Bir zamanlar Intel hıza güç tüketiminden çok daha fazla önem verdi. Güç tüketimini öncelikle dizüstü bilgisayarlar bağlamında vurgulamaya başladılar. Dizüstü bilgisayarlar için tipik güç hedefleri, oldukça küçük bir dizüstü bilgisayar için 6 watt civarındaydı. Daha yakın zamanda ( çok daha yakın zamanda) mobil cihazları (telefonlar, tabletler, vb.) Hedeflemeye başladılar. Bu konuda oldukça iyi görünüyorlar, ancak yaklaşımları ARM'lerden önemli ölçüde farklı olsa da, ARM'nin çoğunlukla mikro mimariyi vurguladığı imalat teknolojisini vurgulamaktadır (ARM'nin tasarımlar sattığını ve imalatını başkalarına bıraktığını düşünmek şaşırtıcı değildir).
Duruma bağlı olarak, bir CPU'nun enerji tüketimi genellikle güç tüketiminden daha önemlidir. En azından terimleri kullandığım için, güç tüketimi (az ya da çok) anlık olarak güç kullanımını ifade eder. Bununla birlikte, enerji tüketimi hız için normalleşir, bu nedenle (örneğin) CPU A bir işi yapmak için 2 saniye boyunca 1 watt tüketirse ve CPU B aynı işi yapmak için 1 saniye boyunca 2 watt tüketirse, her iki CPU da aynı toplam miktarı tüketir Bu işi yapmak için iki watt saniye (iki watt saniye) - ancak CPU B ile, sonuçları iki kat daha hızlı elde edersiniz.
ARM işlemcileri güç tüketimi açısından çok iyi performans gösterir. Dolayısıyla, neredeyse bir işlemcinin "varlığına" ihtiyaç duyan bir şeye ihtiyacınız varsa, ancak çok fazla iş yapmazsanız, oldukça iyi çalışabilirler. Örneğin, video konferans yapıyorsanız, birkaç milisaniye veri toplar, sıkıştırır, gönderir, başkalarından veri alır, sıkıştırır, oynatır ve tekrarlarsınız. Gerçekten hızlı bir işlemci bile uyumak için fazla zaman harcayamaz, bu nedenle bu gibi görevler için ARM gerçekten iyi çalışır.
Intel'in işlemcileri (özellikle düşük güç uygulamaları için tasarlanan Atom işlemcileri) enerji tüketimi açısından son derece rekabetçi. Tam hızlarına yaklaştıklarında, çoğu ARM işlemcisinden daha fazla güç tüketeceklerdir - ancak aynı zamanda işi hızlı bir şekilde bitirirler, böylece daha erken uykuya dönebilirler. Sonuç olarak, iyi pil ömrünü iyi performansla birleştirebilirler.
Bu nedenle, ikisini karşılaştırırken, dürüstçe önem verdiğiniz şeyi yansıttığından emin olmak için neyi ölçtüğünüze dikkat etmelisiniz. ARM güç tüketiminde çok başarılıdır, ancak duruma bağlı olarak enerji tüketimini anlık güç tüketiminden daha fazla önemseyebilirsiniz.
Jerry Coffin'in ilk paragrafına ek olarak . Yani, ARM tasarımı daha düşük güç tüketimi sağlar.
Şirket ARM
, yalnızca CPU teknolojisini lisanslar. Fiziksel çip yapmıyorlar. Bu, diğer şirketlerin genellikle SOC veya çip üzerinde sistem olarak adlandırılan çeşitli çevresel teknolojiler eklemelerine olanak tanır . Cihazın tablet, cep telefonu veya araç içi eğlence sistemi olup olmadığı. Bu, yonga satıcılarının yonganın geri kalanını belirli bir uygulamaya uyarlamasını sağlar. Bunun ek faydaları vardır,
ARM
ile destekler SOC satıcıları AMBA raf 3. parti modüllere kapalı satın alma SOC uygulayıcılar sağlayan; Ethernet, bellek ve kesinti kontrolörleri gibi. MIPS gibi diğer bazı CPU platformları bunu destekler , ancak MIPS güç bilincine sahip değildir.
Tüm bunlar elde taşınan / pille çalışan bir tasarım için faydalıdır. Bazıları her yerde iyidir. Ayrıca ARM
, pille çalışan cihazların bir geçmişi var; Apple Newton , Psion Organizatörleri . PDA yazılım alt yapısı oluşturmak için bazı şirketler tarafından kaldıraçlı edilmiştir akıllı telefon tipi cihazlar. Bununla birlikte, GUI'yi akıllı telefonla kullanmak için yeniden icat edenler daha fazla başarı elde etti .
Open source
Alet takımlarının yükselişi operating systems
ve çeşitli SOC
talaşları kolaylaştırdı . Kapalı bir kuruluş, ARM için mevcut tüm çeşitli cihazları desteklemeye çalışırken sorunlar yaşayacaktır. En popüler iki hücresel platform olan Andriod ve OSx / IOS, Linux ve FreeBSD, Mach ve NetBSD işletim sistemlerini temel alır. satıcıların yonga setleri için yazılım desteği sağlamasına Open Source
yardımcı olur SOC
.
Umarım, x86 neden klavye için kullanılır ? Yazılımı vardır ve daha da önemlisi insanlar bu yazılımı kullanmak için eğitilmişlerdir. NetwinderARM
orijinal olarak klavye için tasarlanmış bir sistemdir . Ayrıca, üretici şu anda sunucu pazarı için ARM64'e bakıyor. 24/7 veri merkezlerinde güç / ısı bir sorundur.
Dolayısıyla, bu çiplerin etrafında büyüyen ekosistemin , düşük güç tüketimi gibi özellikler kadar önemli olduğunu söyleyebilirim . ARM
bir süredir (1980'lerin ortalarından sonuna kadar) düşük güç, daha yüksek performanslı bilgi işlem için çalışıyor ve gemide çok sayıda insan var.
Not1: Birden fazla yonga, bilinen voltajlarda ve sürücüde iletişim kurmak için otobüs sürücülerine ihtiyaç duyar. Ayrıca, tipik olarak ayrı yongalar, bir SOC sisteminde paylaşılabilen destek kapasitörlerine ve diğer güç bileşenlerine ihtiyaç duyar .
ARM bir İtalyan spor otomobiline benziyor:
X86 bir Amerikan arabası gibi:
Özetle: x86, 1974'teki bir tasarıma dayanmaktadır ve düz bir çizgide iyidir (ancak çok fazla yakıt kullanır). Kol az yakıt kullanır, köşeler (dallar) için yavaşlamaz.
Metafor bitti, işte bazı gerçek farklılıklar.
ARM mimarisi aslen x86 tabanlı IBM PC modelleri kadar klavye tabanlı kişisel bilgisayarlar olan Acorn kişisel bilgisayarlar için ( 1987 dolaylarında Acorn Archimedes ve RiscPC'ye bakın ) tasarlanmıştır. Sadece daha sonra ARM uygulamaları öncelikle mobil ve yerleşik pazar segmentini hedef aldı.
Başlangıçta, Intel'deki x86 geliştirme üzerinde çalışanlardan çok daha küçük mühendislik ekipleri (bkz. Berkeley RISC ) tarafından tasarlanan basit RISC CPU'lar tasarlanabilir .
Ancak, günümüzde, en hızlı ARM yongaları, büyük mühendislik ekipleri tarafından tasarlanan çok karmaşık çok sayıda sipariş dışı talimat gönderme birimlerine sahiptir ve x86 çekirdeği, bir talimat çeviri birimi tarafından beslenen bir RISC çekirdeği gibi bir şeye sahip olabilir.
Dolayısıyla, iki mimari arasındaki mevcut farklılıklar, geliştirme ekiplerinin hedeflediği ürün nişlerinin spesifik pazar ihtiyaçları ile daha fazla ilgilidir. (Rastgele görüş: ARM muhtemelen daha fazla güç ve maliyet kısıtlaması olan gömülü uygulamalardan lisans ücretlerinde daha fazlasını yapar. Intel'in kar marjları için PC'lerde ve sunucularda bir performans avantajı sağlaması gerekir. Böylece farklı uygulama optimizasyonları görürsünüz.)