Itanium işlemcisinin derleyici yazması neden zordu?


50

Intel'in Itanium 64-bit işlemci mimarisinin başarısız olduğu, çünkü devrim niteliğindeki EPIC komut setinin iyi bir derleyici yazmak için çok zor olduğunu belirtti; ve böylece kimse bunun için fazla yazılım kullanmadan donanım kullanmak istemedi, ve böylece platform başarısız oldu ve hepsi de istek üzerineat nalı çivi iyi derleyiciler.

Fakat derleyici neden bu kadar zor bir teknik problemdi? Bana öyle geliyor ki, EPIC’deki açık paralellik, derleyici satıcılarının uygulaması için zor olsaydı ... neden bu yükü kendilerine yüklüyordun? Bu sorun için iyi, iyi anlaşılmayan bir çözüm zaten mevcut değildi: yerine bu yükü Intel'e koyun ve derleyici-yazarlara daha basit bir hedef verin.

Itanium 1997'de ortaya çıktı. Bu noktada, UCSD P-Kod bytecode sistemi neredeyse 20 yaşındaydı, Z-makinesi biraz daha gençti ve JVM, programlama dilleri dünyasının yeni ve yükselen yıldızıydı. Intel'in "basit bir Itanium bytecode" dili belirtmemesinin ve sistemi bu şekilde tasarlayan kişiler olarak uzmanlıklarından yararlanarak bu bytecode'u optimize edilmiş EPIC koduna dönüştüren bir araç sağlaması için bir neden var mı?


5
Gerçekten düşük seviyeli IR'ler (aslında bir derleyicide dahili olmanın ötesinde belirtilmiş ve taşınabilir olarak yorumlanmak yerine belirli bir donanıma derlenmesi amaçlanan) daha yeni bir buluş AFAIK. Bu onların hiç var olmadıklarını söylemek değil, ama fikrin bir süredir açık ya da iyi bilinmediğini düşünüyorum. Yani çoğu insan hala "bytecode" u "tercüman" ile ilişkilendirir.

4
Bunun sadece "ne düşündüklerini" çözmeyeceğini varsayarsak bu oldukça iyi bir soru.
Robert Harvey,

P-sistemi, yerel makine kodunun yapabildiğine kıyasla, köpek yavaş oldu. Gelecekteki işlemci mimarileri için tanımladığınız strateji, JVM'nin bir JIT'nin yerel kodla rekabet edebilecek genel amaçlı kod performansı elde edebileceğini göstermesi nedeniyle iyi olabilir, ancak IA64 geliştirilirken bunun açık olduğunu sanmıyorum. Yavaş bir VM ile sözde daha hızlı bir mimariyi yüklemek, alıcıları çok mutlu etmeyecektir.
supercat,

@supercat: Ben varsayımsal bir VM hakkında değil, bir Intel kod üreteci tarafından derlenecek olan varsayımsal bir IR'den söz ediyorum.
Mason Wheeler

3
Bu özel soruyu yıllar önce mezun olduğum Bilgisayar Mimarlığı dersinde tartıştım. Intel’in yaptıklarını yapmasının özel sebepleri vardı, ne yazık ki cevap vermek için kesin kaynakları bulamıyorum.

Yanıtlar:


33

O zaman hatırladığım kadarıyla, konu yalnızca IA64'ün değil, AMD'nin x86-64 komut setiyle olan rekabetti. Mimarileri, x86 komut seti ile geriye dönük olarak uyumlu hale getirilerek, AMD mevcut araçları ve geliştirici beceri setlerini kaldırabilirdi. AMD'nin hamlesi o kadar başarılıydı ki Intel (ve Via) aslında x86-64 mimarisini benimsemek zorunda kaldı.

O zamanki en büyük engel, masaüstü bilgisayarlarda 4 GB RAM idi (daha gerçekçi, Windows'ta 3,4 GB kullanılabilir). x86-64 bu engeli kırdı ve herkese daha fazla bilgi işlem gücü kazandırdı. AMD hiçbir zaman x86-64 ile gelmediyse, Intel’in 4GB + RAM’e atlamak isteyen herkesin bu ayrıcalık için yıllarca yüksek bir prim ödemesini sağlamaktan memnun olacağına eminim. Piyasaların ne kadar yavaş hareket ettiğini gösteren uygulamaların 64-bit, çoklu iş parçacıklı programlamaya yetişmesi yıllarca sürdü ve şimdi bile düşük kaliteli PC'lerde 4GB RAM standart.

Kısacası Intel, IA64 mimarisiyle devrim niteliğinde bir adım atmaya çalıştı ve AMD x86-64 ile evrimsel bir adım attı. Yerleşik bir pazarda, bilgi çalışanlarının mevcut becerilerden yararlanmalarını sağlayan evrimsel adımlar, herkesin yeni beceriler öğrenmesini gerektiren devrimci adımlar kazanacaktır. Mimariler arasındaki niteliksel farklılıklardan bağımsız olarak, IA64, AMD x86-64 uzantılarını eklediğinde kendi x86 platformunun momentumunun üstesinden gelemedi.

IA64'ün programlanması zor olduğu bir açıklamayı satın almıyorum. Sadece alternatiflere göre zordu. @ delnan'ın düşük seviye kızılötesiyle ilgili noktası şüphe ediyor, bir fark yaratabileceğini sanmıyorum.

Neden Intel bu yükü kendi kendine omuzlamak için çabalamadı, kim bilir? O zamanlar piyasa gücü vardı. AMD bir tehdit oluşturuyordu, ancak Intel tepenin kralıydı. Belki IA64'ün tüm piyasayı hareket ettirebilecekleri her şeyden çok daha iyi olacağını düşünüyorlardı. Belki düşük seviyeli emtia donanımları ile mücadelede ikinci kademe mücadelesinde birinci sınıf bir kademe oluşturmaya ve AMD, VIA vb.

Itanium birinci sınıf bir platform yapmak ve halıyı AMD, VIA vb. Altından çıkarmak için bilinçli bir girişim miydi? Tabii ki, iş böyle işler.


4
Hepsi çok ilginç, ama çoğunlukla Itanium'un neden başarısız olduğunu açıklıyorsunuz, oysa soru Intel'in Itanium'u zorlamadaki stratejisiyle ilgiliydi. "Intel herkese sahip olmaktan mutlu olurdu [...]" konusunda bir ipucu var, ancak bunun Intel tarafından kasıtlı bir karar olup olmadığını ima ediyorsanız (ve eğer öyleyse, bunu desteklemeniz gereken şey) benim için net değil. onaylama).

2
Harika noktalar Eski bir derleyici yazarı olarak, mevcut bir derleyiciyi geri alabilmenin ve performans için ince ayar yapmanın tekrar tekrar yazmaktan daha iyi olduğu doğrudur. O zamanlar (ve belki şimdi ... emin değilim) bir derleyicinin arka ucunu yazmak, yılda 4 veya 5 kişilik bir ekibin yapabileceği bir şeydi. Kimse donanımı benimsemediğinde kırılması zor bir somun. Zamanında, üzerinde inşa edilen Unix kutularının lezzetlerini desteklemek için PowerPC arka uçları inşa etmeyi seçtik.
Chris Steele

@delnan, iyi nokta, diğer soruları ele almak için yorum ekledik.
Robert Munn,

2
Daha kısaca, Intel, geriye dönük uyumluluk boyunduruğu kullananlardan gelen ataleti büyük ölçüde küçümsemiştir. AMD, x86 ailesinin 8086/8088 ailesinden gerçekleştirdiği x86 ailesinin aynı evrimsel adımını alarak kendi oyununda Intel'i yendi.
Blrfl

1
Erm. 80x86, yaklaşık 1995’te PAE ve PSE36’nın piyasaya sürülmesinden bu yana 36-bit fiziksel adreslemeyi (ya da "tam 64 GiB RAM’in limiti" değil) destekledi. bazıları yaptı).
Brendan,

33

EPIC üzerinde Wikipedia makalesi zaten VLIW ve EPIC ortak birçok tehlikeler sundu.

Eğer bir kimse bu makaledeki kadercilik duygusunu bulamazsa, şunu vurgulayayım:

CPU önbellekleri ve DRAM içeren bir bellek hiyerarşisinden gelen yanıtları yükleme belirleyici bir gecikmeye sahip değildir.

Başka bir deyişle, (*) bellek erişimindeki deterministik gecikmeyle başa çıkmayan herhangi bir donanım tasarımı sadece muhteşem bir başarısızlık olacaktır.

(*) "Başa çıkma" ile, CPU'nun bu kadar sık ​​sık yüzlerce devirde boşta kalmasına izin vermemesini gerektiren makul derecede iyi uygulama performansı elde etmek gerekir (diğer bir deyişle, "uygun maliyetli").

EPIC tarafından kullanılan başa çıkma stratejisinin (yukarıda bağlantı verilen Wikipedia makalesinde bahsedildiği gibi) sorunu çözmediğini unutmayın. Sadece veri bağımlılığını belirleme yükünün derleyiciye düştüğünü söylüyor. Bu iyi; derleyici zaten bu bilgiye sahiptir, bu nedenle derleyicinin uyması kolaydır. Sorun, CPU'nun bir bellek erişimi üzerinde onlarca - yüzlerce döngü boyunca boşta kalmasıdır. Başka bir deyişle, birincil sorumlulukla başa çıkamadığı halde, ikincil bir sorumluluğu dışlar.

Soru şu şekilde ifade edilebilir: "Başarısızlık olması gereken bir donanım platformu göz önüne alındığında, neden (1) (2) derleyici yazarlarının bunu kullanmak için kahramanca bir çaba gösteremedi?"

Umarım yeniden ifade etmem bu sorunun cevabını açıkça ortaya koyar.


Başarısızlığın da ölümcül olan ikinci bir yanı var.

Başa çıkma stratejileri (aynı makalede belirtildiği gibi), yazılım tabanlı ön taramanın, bellek erişimindeki belirleyici olmayan gecikme nedeniyle performans kaybının en azından bir kısmını geri kazanmak için kullanılabileceğini varsayar.

Gerçekte, ön hazırlık yalnızca akış işlemleri gerçekleştiriyorsanız kazançlıdır (ardışık veya yüksek oranda tahmin edilebilir şekilde okuma).

(Kodunuz yerelleştirilmiş bazı bellek alanlarına sık sık erişim sağlıyorsa, önbellekleme yardımcı olacaktır.)

Bununla birlikte, çoğu genel amaçlı yazılımın bol miktarda rasgele bellek erişimi yapması gerekir. Aşağıdaki adımları göz önüne alırsak:

  • Adresi hesapla ve sonra
  • Değeri okuyun ve sonra
  • Bazı hesaplamalarda kullanın

Genel amaçlı yazılımların çoğunda, bu üçünün peş peşe yürütülmesi gerekir. Başka bir deyişle, adresi önceden belirlemek veya bu üç adım arasındaki durakları doldurmak için yapılacak işleri bulmak her zaman mümkün değildir (yazılım mantığının sınırları dahilinde).

Tezgahları doldurmaya yetecek kadar iş bulmanın neden her zaman mümkün olmadığını açıklamaya yardımcı olmak için, işte bunun nasıl görselleştirileceği.

  • Diyelim ki, tezgahları etkin bir şekilde gizlemek için, belleğe bağlı olmayan 100 ek talimatı doldurmamız gerekiyor (bu nedenle ek gecikmeden zarar görmeyecek).
  • Şimdi, bir programcı olarak, lütfen seçtiğiniz herhangi bir yazılımı bir sökücüye yükleyin. Analiz için rastgele bir işlev seçin.
  • Herhangi bir yerde, yalnızca bellek erişimi olmayan 100 komut dizisini (*) tanımlayabilir misiniz?

(*) NOPİşe yarar bir iş çıkarırsak ...


Modern CPU'lar, dinamik bilgiler kullanarak aynı şeylerle başa çıkmaya çalışır - aynı anda her bir talimatın boru hatlarında dolaşırken ilerlemesini izleyerek. Yukarıda bahsettiğim gibi, bu dinamik bilginin bir kısmı deterministik olmayan hafıza gecikmesinden kaynaklanmaktadır, bu nedenle derleyiciler tarafından herhangi bir doğruluk derecesi ile tahmin edilemez. Genel olarak, derleme zamanında bu tezgahları doldurabilecek kararlar almak için yeterli bilgi yoktur.


AProgrammer tarafından verilen cevaba cevap olarak

Bu "derleyici ... paralellik ayıklamak zor" değil.

Hafızanın ve aritmetik komutların modern derleyiciler tarafından yeniden sıralanması, bağımsız ve dolayısıyla eşzamanlı olarak çalıştırılabilir olan işlemleri tanımlamanın bir sorunu olmadığını göstermektedir.

Ana problem, deterministik olmayan bellek gecikmesinin, VLIW / EPIC işlemcisi için kodlanmış ne olursa olsun "komut eşleştirme" nin, bellek erişimi tarafından durdurulduğunu ifade etmesidir.

Durmayan talimatları (sadece kayıt, aritmetik) optimize etmek, durması çok muhtemel talimatların neden olduğu performans sorunlarına yardımcı olmaz (hafızaya erişim).

80-20 optimizasyon kuralını uygulamada başarısızlığa bir örnektir: Zaten hızlı olan şeyleri optimize etmek, yavaş olan şeyler de optimize edilmediği sürece genel performansı anlamlı şekilde iyileştirmez.


Basile Starynkevitch tarafından cevap olarak

"... (her ne ise zor)" değildir, EPIC gecikme süresi yüksek dinamizmin üstesinden gelmek zorunda olan herhangi bir platform için uygun değildir.

Örneğin, bir işlemci aşağıdakilerin hepsine sahipse:

  • Doğrudan hafızaya erişim yok;
    • Herhangi bir hafıza erişiminin (okuma veya yazma) DMA transferi ile programlanması gerekir;
  • Her komut aynı işlem gecikmesine sahiptir;
  • Sırayla yürütme;
  • Geniş / vectorized yürütme birimleri;

O zaman VLIW / EPIC uygun olacak.

Kişi bu işlemcileri nerede bulur? DSP. Ve bu VLIW'ın geliştiği yer.


Gördüğüm gibi, Itanium'un başarısızlığı (ve Ar-Ge çalışmalarının, kesin kanıtlara rağmen başarısızlığa harcanması) örgütsel bir başarısızlık örneğidir ve derinlemesine çalışılmayı hak eder.

Verildiği takdirde, satıcının hiper-diş, SIMD, vs. gibi diğer girişimleri oldukça başarılı görünmektedir. Itanium'a yapılan yatırımın, mühendislerinin becerileri üzerinde zenginleştirici bir etkiye sahip olması muhtemel olabilir ve bu da gelecek nesil başarılı teknolojiyi oluşturmalarına olanak sağlamış olabilir.


7

TL; DR: 1 / Itanium başarısızlığında derleyici sorunlarından başka hususlar var ve açıklamak için yeterince iyi olabilirler; 2 / a byte kodu derleyici sorunlarını çözemezdi.

Intel'in Itanium 64-bit işlemci mimarisinin başarısız olduğu, çünkü devrim niteliğindeki EPIC komut setinin iyi bir derleyici yazması çok zordu.

Eh, onlar da gecikti (98 için planlandı, 2001'de ilk sevkiyat) ve nihayet donanımı teslim ettiklerinde, daha önceki tarih için vaat edilmiş olanı teslim ettiğinden bile emin değilim (IIRC, en azından başlangıçta planlanan x86 öykünmesi), bu nedenle derleme sorunları çözülse bile (ve AFAIK, henüz yapmadıysa) başarılı olacağından emin değilim. Derleyici yönü, aşırı hırslı olan tek yön değildi.

Intel'in "basit bir Itanium bytecode" dili belirtmemesi ve sistemi bu şekilde tasarlayan kişiler olarak uzmanlıklarından yararlanarak bu bytecode'u optimize edilmiş EPIC koduna dönüştüren bir araç sağlaması için bir neden var mı?

Aracı nereye koyduğuna emin değilim.

İşlemcideyse, başka bir mikro mimariye sahipseniz ve x86'yı genel ISA olarak kullanmamanız için hiçbir neden yoktur (en azından Intel için, uyumsuzluğun, daha temiz bir kamu ISA'sının getirebileceğinden daha yüksek bir maliyeti vardır).

Eğer harici olarak ise, bir byte kodundan başlamak, onu bir üst seviye dilden başlamaktan daha zorlaştırır. EPIC ile ilgili mesele, sadece bir derleyicinin bulabileceği paralelliğin kullanabilmesi ve bu paralelliğin zorlanabilmesidir. Dil kurallarını bilmek, önceden planlanmış bir şeyle sınırlandırılmış olmanıza göre size daha fazla olasılık sunar. Benim (güvenilmez ve itiraf ettiğim bir kimseden) kabul ediyorum, hatırlatma, HP'nin (*) ve Intel'in derleyici cephesinde elde edemediği şey, paralizmin dil düzeyinde çıkarılması, bir baytta bulunacak düşük düzey değil. kodu.

Belki de mevcut işlemcinin performansına ulaşma maliyetini küçümsüyorsunuz. OOO diğer olasılıklardan daha etkilidir, ancak kesinlikle verimli değildir. EPIC, derleyicilerin yararlanabileceğini umarak daha ham hesaplama sağlamak için OOO uygulaması tarafından kullanılan alan bütçesini kullanmak istedi. Yukarıda da yazıldığı gibi, sadece hala yapamıyoruz - AFAIK olarak, teoride bile - bu yeteneğe sahip derleyiciler yazabilmekle birlikte, Itanium'un geç kalması ve işlenmemiş gücünün yetmemesi için uygulanması zor başka özellikler de var. hatta Fab çıktığında diğer yüksek teknoloji işlemcileriyle bile rekabetçi (FP işlemlerinin çok olduğu bazı niş pazarlarda hariç).


(*) EPIC’deki HP rolünü de küçümsemiş görünüyorsunuz.


Talebinizden birine cevaben cevabımı güncelledim. Kanımca gecikmeyle baş edememe göre, EPIC mimarisinin ölümünün tek nedeni bu. Derleyiciler, modern CPU donanımı gibi talimat düzeyinde paralelliği sağlama konusunda iyi bir başarıya sahiptir.
rwong

1
@ rwong, ana puanlarımı dikkate aldığım şeyin TLDR'sini yaptım. BTW, benim için değişken gecikme süresi - modeller arasında, bazı modellerde bazı talimatlara bağlı veriler, bellek erişimi burada açıkça büyük bir kategoridir - paralellik çıkarmanın zorluğunun bir yönüdür. CPU donanımı dinamik programlama avantajına sahiptir ve OOO ile tek iş parçacığı için saf performans konusunda rekabetçi olan statik zamanlamalı bir işlemci örneği olduğunu sanmıyorum. Değirmen ekibinin bile bu iddiada bulunduğunu sanmıyorum (asıl faktörleri güç içerir).
AProgrammer

6

Bir kaç şey.

IPF bir sıradaydı. Bu, sizi bir önbellek kaçırma veya uzun süren başka bir olayda kurtarmanız için yeniden sıralamaya güvenemeyeceğiniz anlamına geliyordu. Sonuç olarak, spekülatif özelliklere - yani spekülatif yüklere (başarısızlığa izin verilen yükler - bir yük sonucuna ihtiyacınız olup olmadığını bilmiyorsanız kullanışlıdır) ve gelişmiş yüklere (yani bir yük sonucuna ihtiyaç duyacağınızı bilmiyorsanız) güvenmek zorunda kaldınız bir tehlike meydana gelirse kurtarma kodunu kullanarak yeniden çalıştırın.) Bu hakların alınması zor, özellikle gelişmiş yüklerdi! Ayrıca genellikle bir derleme programcısı tarafından veya yalnızca geleneksel bir derleyici ile değil, profil kılavuzlu optimizasyon kullanarak akıllıca kullanılabilecek dallanma ve önbellek önyükleme ipuçları da vardı.

O zamandaki diğer makineler - yani UltraSPARC - sıralıydı, ancak IPF'nin de başka düşünceleri vardı. Biri alanı kodluyordu. Itanium talimatları, doğası gereği özellikle yoğun değildi - 128 bitlik bir paket, üç işlem ve paket içindeki işlemleri açıklayan ve hepsinin birlikte sorun yapıp yapamayacağını belirten 5 bitlik bir şablon alanı içeriyordu. Bu, etkili bir 42.6 bit işlem boyutu için yapılmıştır - ticari RISC'lerin işlemlerinin çoğu için 32 bit ile karşılaştırılır. (Bu Thumb2 ve diğerlerinden önceydi - RISC hala sabit uzunlukta sağlamlık anlamına geliyordu.) Daha da kötüsü, kullanmakta olduğunuz şablona uyması için her zaman yeterli ILP'niz yoktu - bu yüzden doldurmak için NOP-pad kullanmanız gerekirdi. şablon veya paket. Bu, mevcut göreceli düşük yoğunlukla birleştirildiğinde, iyi bir i-önbellek isabet oranı elde etmenin a) gerçekten önemli olduğu anlamına geliyordu,

Her zaman "derleyici tek ve tek problemdi" argümanının abartıldığını her zaman hissetmiş olmama rağmen - gerçekten genel amaçlı kod için hiçbir iyilik yapmayan I2 meşru mikro mimarlık meseleleri vardı. günün daha dar, yüksek saatli OoO makinelerine. Genellikle PGO ya da elle kodlama içeren gerçekten düzgün bir şekilde doldurabildiğiniz zaman, bu harika bir şeydi - ama çoğu zaman, derleyicilerin performansı gerçekten sadece ilham vericiydi. IPF, harika kod oluşturmayı kolay hale getirmedi ve kod harika olmadığında affedilmezdi.


4

Fakat derleyici neden bu kadar zor bir teknik problemdi? Bana öyle geliyor ki, EPIC’deki açık paralellik, derleyici satıcılarının uygulaması için zor olsaydı ... neden bu yükü kendilerine yüklüyordun? Bu sorun için iyi, iyi anlaşılmayan bir çözüm zaten mevcut değildi: yerine bu yükü Intel'e koyun ve derleyici-yazarlara daha basit bir hedef verin.

Tarif ettiğiniz şey, Transmeta'nın kod dönüştürme yazılımı (x86 "bytecode" ı dinamik bir şekilde Transmeta dahili makine koduna çeviren) kodlama yazılımlarıyla yapmaya çalıştığı bir parça .

Intel IA64 için yeterince iyi bir derleyici yapmak için başarısız neden gelince ... Onların olmadığı sanırım yeterince derleyici uzmanlık evde onlar var mıydı bile tabii eğer ( bazı iç çok iyi derleyici uzmanlar, ancak yeterli değil muhtemelen kritik bir kütle yapmak). Sanırım onların yönetimi derleyici yapmak için gereken çabayı hafife aldı.

AFAIK, Intel EPIC başarısız oldu, çünkü EPIC için derleme gerçekten zordu ve ayrıca derleyici teknolojisi yavaş ve kademeli olarak iyileştirildiğinde, derleyicileri de geliştirebilecekleri diğer rakipler (örneğin AMD64 için), bazı derleyici teknik bilgilerini paylaşıyorlardı.

BTW, AMD64'ün biraz daha RISCy komut seti olmasını diledim. Bazı POWERPC64 olabilirdi (ancak muhtemelen Microsoft’un talepleri nedeniyle patent sorunları yüzünden değil ...). X86-64 komut seti mimarisi, derleyici yazarı için gerçekten "çok iyi" bir mimari değildir (ama bir şekilde "yeterince iyi").

Ayrıca, IA64 mimarisi bazı güçlü sınırlamalar getirmiştir; örneğin, 3 komut / kelime işlemcinin bunları işlemesi için 3 işlevsel birime sahip olduğu sürece iyi olmuştur, ancak Intel bir kez daha yeni IA64 yongalarına gittikten sonra, daha işlevsel birimler ve talimatlar eklemiştir. seviye paralelliği bir kez daha başarmak zordu.

Belki de açık kaynaklı bir ISA olan RISC-V , onu diğer işlemciler için rekabetçi hale getirmek için yeterince başarılı olacaktır.


Intel , Ar-Ge'ye milyarlar harcamakta , yeni bir donanım platformu için iyi bir derleyici geliştirmek için zor zaman alacağına inanmakta zorlanıyorum.

1
Para her şey değildir: efsanevi adam ayını görün , gümüş mermi yok ve aynı zamanda pazar zamanının çok önemli olduğunu düşünün.
Basile Starynkevitch 17:15

3
Birçok yetenekli mühendis ve bilgisayar bilimcisi kullanıyorlar. VLIW olmayan derleyicileri birinci sınıftır ve düzenli olarak diğer derleyicilere göre daha hızlı kod basarlar. Intel, şirket içinde diğer şirketlerden daha fazla derleyici uzmanlığına sahip olan tek şirkettir. Intel yaptıkları her işte başarılı oldu: Itanium neden bir albatrosdu?

1
1997'de muhtemelen biraz daha az doğruydu. Birçoğunun açıkladığı gibi, EPIC derlemesi gerçekten zor.
Basile Starynkevitch 17:15

3

Robert Munn'ın belirttiği gibi - Itanium'u (ve diğer birçok "yeni" teknolojiyi) öldüren geriye dönük uyumsuzluk oldu.

Yeni bir derleyici yazmak zor olsa da, bunlardan sadece birkaçına ihtiyacınız var. En iyi duruma getirilmiş kod üreten bir AC derleyici bir zorunluluktur - aksi takdirde kullanılabilir bir İşletim Sistemine sahip olmazsınız. Bir C ++ derleyicisine, Java'ya ihtiyacınız var ve ana kullanıcı tabanının bir çeşit Visual Basic olacağı düşünülürse. Yani bu gerçekten bir sorun değildi. İyi bir işletim sistemi (NT) ve iyi bir C derleyicisi mevcuttu.

Bir yazılım ürünü sunan bir şirket için önemsiz bir çaba gibi görünen şey - C kodu tabanınızı yeniden derleyip yeniden test etmek (ve o zamanlar çoğu saf C! 32 bit bir tamsayıya sahip olan ve 32 bitlik bir yerel 64 bit mimarisine hitap ettiğini varsaydığı büyük bir C programları setini dönüştürmek tuzaklar ile doluydu. IA64 baskın bir çip (ya da popüler bile olsa!) Olsaydı çoğu yazılım şirketi mermiyi ısırır ve çaba gösterirdi.

Makul bir işletim sistemine sahip çok hızlı bir çip ancak çok sınırlı bir yazılım kümesi mevcut, bu nedenle pek çok kişi bunu satın almıyor, bu nedenle pek çok yazılım şirketi bunun için ürün sağlamıyor.


3

Itanium'u öldüren şey, AMD64'ün kapıyı açan ve yazılım satıcılarının 64 bit uygulamalar için IA64'e geçiş yapmadan önce devreye girmesi gecikmesiydi.

Derleyiciye optimizasyon bırakmak iyi bir fikirdi. Aksi halde donanımda yetersiz olan birçok şey statik yapılabilir. Derleyiciler, özellikle PGO profili kullanırken (HP’de çalıştım ve HP’nin derleyicisi Intel'in performansını geçme eğilimindeydi) bu konuda oldukça başarılı oldu. PGO çok zor bir işti, ancak üretim kodu için zor bir süreç.

IPF'nin geriye dönük uyumlu olması gerekiyordu, ancak AMD64 piyasaya sürüldüğü zaman tartışmaya girdi, savaş kaybedildi ve CPU'daki X86 donanımının sadece bir sunucu CPU'su olarak yeniden hedef almak için soyulduğuna inanıyorum. Bir mimari olarak itanyum fena değildi, kelime başına verilen 3 talimat bir sorun değildi. Mesele, bellek GÇ'si sırasındaki yığınları takas ederek aşırı iş parçacıklı uygulama, Montecito vb. Sıra dışı PowerPC işlemcilere karşı rekabet etmesini önleyen çok yavaş (boru hattını boşaltmak ve yeniden yüklemek için). Derleyiciler, CPU uygulamalarındaki kusurları tespit etmek için gecikmek zorunda kaldılar ve performansın bir kısmı hataları tahmin etmek zorlaştı.

Mimari, derleyicinin bu performansı izleyebilmesi için araçlar sağlarken Itanium'un nispeten basit olmasına izin verdi. Platform yaşamış olsaydı, CPU'lar daha karmaşık hale gelirdi ve sonunda x86 gibi sıra dışı vb. Bununla birlikte, ilk jeneratörler, transistörün derleyici bir çok zor işi işlediğinden dolayı diğer performans şemalarına odaklanmıştır.

IPF platformu, derleyici ve araçlara bahse girdi ve daha sonra Intel x86'ya geri yüklenen, son derece eksiksiz ve güçlü bir Performans İzleme Birimi (PMU) tasarımını ortaya çıkaran ilk mimariydi. Bu yüzden güçlü araç geliştiricileri hala profil kodlarını tam olarak kullanabiliyorlar.

ISA'nın başarılarına bakarsanız, zarları sıkan teknik taraf değildir. Zaman ve piyasa güçleri içindeki yeri. SGI Mips'e, DEC Alpha'ya bakın ... Itanium, gevşetenler, SGI ve HP sunucuları, stratejik iş hatalarına dayanan yönetime sahip şirketler tarafından desteklendi. Microsoft hiçbir zaman dolu olmadı ve AMD64'ü yalnızca oyuncu olarak Intel ile kutuya kaydedilmemesi için kucakladı ve Intel, AMD'yi kesmeye çalıştıkları için ekosistemde yaşamaları için AMD ile doğru oynamadı.

Bugün nerede olduğumuza bakarsanız, X86'nın karmaşık donanımı şimdiye kadar çıkmaza girmeye yol açtı. 3 + GHz’de sıkışıp kaldık ve bunun için yeterli kullanımı olmayan çekirdeği boşaltıyoruz. Itanium'un daha basit tasarımı, daha ince ve daha hızlı boru hatları oluşturmaya izin vererek, derleyiciye daha fazla malzeme itebilirdi. Aynı jenerasyon ve fab teknolojisinde, Moore yasalarını zorlamak için açılabilecek başka kapılarla daha hızlı çalışıyor ve aynı şeyleri biraz daha yükseğe kapatıyordu.

En azından yukarıdakiler benim inancımdır :)


1

Bellek belirsizleşiyor ... Itanium'un, derleyici desteğine ihtiyaç duyacak harika fikirleri vardı. Sorun bir özellik değildi, birçoğu. Her biri büyük bir anlaşma değildi, hepsi bir arada.

Örneğin, döngünün bir yinelemesinin farklı yinelemelerdeki kayıtlar üzerinde çalışacağı bir döngü özelliği vardı. x86 da aynı problemi büyük sıra dışı yetenek sayesinde ele alıyor.

O sırada Java ve JVM'ler modadaydı. IBM’in söylediği şey, PowerPC’de bytecode’u hızlı bir şekilde derleyebilmeniz ve CPU’nun bunu hızlı bir şekilde yapabilmesiydi. Itanium'da değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.