19 puan yazan xguru 2020-12-21 | 8 yorum | WhatsApp'ta paylaş

"M1, paradigma değişiminin başlangıcı olarak RISC-V'ye yardımcı olacak, ama düşündüğünüz şekilde değil"

"M1 çipi neden bu kadar hızlı?" yazısını kaleme alan mühendisin devam niteliğindeki yazısı. RISC-V'nin geleceğine ilginç bir açıdan bakarak öngörüler sunuyor.

M1 performansının nedenleri:

  1. Çok sayıda decoder ve OoO sırasız yürütme

  2. GPU, NPU, DSP gibi birden fazla özel amaçlı çip

Bu yazı, 2. madde olan heterojen bilişim hakkında daha ayrıntılı içerik sunuyor.

Özel amaçlı çipler farklı şekillerde adlandırılabilir; burada hepsi topluca Coprocessor (yardımcı işlemci) olarak anılıyor (veya Accelerator da denebilir).

  • Yardımcı işlemciler tamamen yeni bir trend değil

  • 1985'te çıkan Amiga 1000'de de ses/grafik için yardımcı işlemciler vardı; GPU da bir yardımcı işlemcidir.

Google'ın TPU'su (Tensor Processing Unit) da makine öğrenimi için optimize edilmiş bir yardımcı işlemcidir.

[ Coprocessor nedir ]

  • CPU'dan farklı olarak tek başına var olamaz. Sadece yardımcı işlemci koyarak bir bilgisayar elde edemezsiniz; bunlar yalnızca belirli işleri iyi yapan özel amaçlı işlemcilerdir.

  • İlk örneklerden biri Intel'in 8087 Floating Point Unit'i (FPU) idi. Intel 8086 tamsayı hesaplarında iyiydi ama kayan nokta işlemlerinde iyi değildi.

  • Tamsayı hesaplarıyla kayan nokta işlemleri emüle edilebilir, ancak bu yavaştı. Bu, ilk mikroişlemcilerin sadece toplama/çıkarma yapabilip çarpma yapamaması ve çarpmayı çok sayıda toplama ile gerçekleştirmesine benzer.

  • Yani, "karmaşık matematiksel işlemler basit işlemlerin tekrar edilmesiyle gerçekleştirilebilir"

  • Tüm yardımcı işlemcilerin yaptığı iş de özünde budur. CPU, yardımcı işlemcinin yaptığı işi yapabilir; yeter ki basit işlemleri tekrar etsin.

  • GPU'lara başta ihtiyaç duyulmasının nedeni, milyonlarca poligon/piksel üzerinde aynı hesaplamayı tekrar etmenin CPU'da çok zaman almasıydı.

[ Veriler yardımcı işlemciye nasıl girer/çıkar ]

  • Fare/klavye/ekranın yanı sıra GPU/FPU/Neural Engine dahil tüm yardımcı işlemciler, belirli bir belleğe erişip veriyi okuyup yazan aygıtlar gibidir.

  • Bu işleri Device Driver'lar yürüttüğü için genel yazılım geliştiricileri bunlarla pek ilgilenmez.

→ DMA (Direct Memory Access) controller vb. bileşenlerin yaptığı iş budur.

  • DOS döneminde C/C++ ile pointer kullanarak video belleği adresine doğrudan erişip piksel değiştirmek mümkündü.

  • Yardımcı işlemciler de benzer şekilde çalışır; NPU, GPU, T1 vb. her birinin kendisiyle iletişim kurulan adresleri vardır ve asenkron iletişim mümkündür.

  • CPU, Neural Engine veya GPU'ya gönderilecek tüm komutları bellekte sıralar ve ardından bu adresi Neural Engine/GPU'ya bildirir.

  • CPU'nun, yardımcı işlemci bu komutları ve verileri işlerken beklemesi gerekmediğinden burada interrupt gerekir.

[ Interrupt nasıl çalışır ]

  • Grafik/ağ kartları PC'ye takılır ve kendilerine atanmış interrupt hatları vardır.

  • Bu, CPU'ya doğrudan bağlı bir hat gibi çalışır; etkinleştiğinde CPU başka işini bırakıp interrupt'ı işler.

  • Uygulamada CPU, mevcut konumu ve register'ları belleğe kaydederek daha sonra geri dönebilir.

  • Sonrasında interrupt table içinden çalıştırılacak işi bulur. Tabloda, interrupt tetiklendiğinde çalıştırılacak program adresi yer alır.

  • Programcı bunu görmez; onun açısından bu, belirli bir olaya kayıt olunan callback function gibi görünür. Bu düşük seviyeli işleri device driver halleder.

  • Bu açıklamanın nedeni, yardımcı işlemci kullanıldığında arka planda ne olduğunu bilmenin, gerçek iletişimde nelerin eşlik ettiğini anlamayı sağlamasıdır.

  • Interrupt kullanıldığında pek çok iş paralel gerçekleşir.

→ CPU fare tarafından kesintiye uğrarken uygulama ağ kartından görüntü alabilir; fare yer değiştirdiğinde CPU yeni koordinatları alır ve bunu GPU'ya göndererek fare imlecini yeni konumda çizer. GPU fare imlecini çizerken CPU da ağdan alınan görüntüyü işlemeye başlayabilir.

  • Bu tür interrupt'lar kullanılarak M1'in Neural Engine'ine karmaşık makine öğrenimi işleri gönderilip WebCam görüntüsünde yüz tanıma yapılabilir. Neural Engine görüntü verisini işlerken bilgisayar ve CPU başka işler yapmaya devam edip kullanıcıya tepki verebilir.

[ RISC-V'nin yükselişi ]

  • 2010'da UC Berkeley'nin paralel bilişim laboratuvarı, daha fazla yardımcı işlemci kullanımına doğru ilerledi.

  • Genel amaçlı CPU çekirdeklerini zorlayarak artık performansı kolayca artırmanın mümkün olmadığını görerek Moore yasasının sonuna gelindiğini fark ettiler.

→ Bu da özel donanım olan yardımcı işlemcilere ihtiyaç doğurdu.

  • Saat frekansını ısı ve güç tüketimi gibi nedenlerle kolayca artırmak mümkün değil.

→ Çok sayıda decoder ve OoO sırasız yürütme bunun yöntemlerinden biri

→ "M1 çipi neden bu kadar hızlı?" yazısına bakın: https://tr.news.hada.io/topic?id=3315

[ Transistör bütçesi CPU çekirdeğine mi, yardımcı işlemciye mi harcanmalı ]

  • Çekirdek sayısını 128'e çıkarmak masaüstü sistemi daha verimli hale getirmez.

  • 80'lerin başında 20 bin transistörlük bütçe varsa, bunun 15 biniyle CPU yapmak yeterliydi.

  • Diyelim CPU 100 farklı iş yapıyor; bunlardan tek bir işi işlemek için 1000 transistör gerektiren bir yardımcı işlemci yapsanız, tüm işler için yardımcı işlemci yapmak 100 bin transistör gerektirir ve bütçeyi aşar.

[ Transistör sayısı artınca strateji değişti ]

  • İlk tasarımlarda genel amaçlı bilişime odaklanmak gerekiyordu; ama bugün çiplere o kadar çok transistör sığıyor ki, bunlarla ne yapılacağı başlı başına bir mesele oldu.

  • Bu yüzden yardımcı işlemci tasarlamak büyük önem kazandı. Çok çeşitli yeni yardımcı işlemciler üretmek için yoğun araştırmalar yapılıyor.

  • Bu araştırmalarda çoğu zaman her şeyin, oldukça ilkel hızlandırıcı durumundan başlayarak temelden inşa edilmesi gerekiyor.

  • CPU'lardan farklı olarak bunlar komutların tüm aşamalarını okuyup işlemez; bu yüzden belleğe nasıl erişeceğini veya işleri nasıl düzenleyeceğini bilmez.

  • Buna çözüm olarak denetleyici görevi gören basit bir CPU kullanılır.

  • Yani yardımcı işlemcilerin bütünü, basit bir CPU tarafından kontrol edilen ve belirli işleri hızlandırmak üzere kurulmuş özel hızlandırıcı devrelerdir.

→ Örneğin Neural Engine/Tensor Processing Unit gibi çipler, matris saklayabilen büyük register'ları işleyebilir.

[ RISC-V, Accelerator kontrolü için özel olarak tasarlandı ]

  • RISC-V'nin tasarım amacı tam olarak buydu.

  • Genel CPU işleri için 40~50 komuttan oluşan minimal bir komut setine sahiptir.

→ x86 CPU'larda 1500 komutluk instruction set bulunur.

  • Büyük ve sabit bir instruction set yerine RISC-V, extension kavramı etrafında tasarlanmıştır.

  • Tüm yardımcı işlemciler farklı olduğundan, RISC-V çekirdek komut seti ile yardımcı işlemcinin ihtiyaç duyduğu extension komut setini birlikte barındıracak şekilde yapılandırılabilir.

Yazının anlatmak istediği de bu:

  • Apple'ın M1'i, tüm sektörü yardımcı işlemcilerin egemen olduğu bir geleceğe yöneltecek.

  • Ve bu yardımcı işlemcileri üretmek için "RISC-V, bulmacanın önemli bir parçası" olacak.

[ RISC-V ile Coprocessor yapmanın avantajları ]

  • Çip üretmek karmaşık ve maliyetli bir iştir.

  • Çip doğrulama araçlarını kurmaktan test programları çalıştırmaya, tanılama ve daha pek çok şeye kadar çok emek gerekir.

  • Bu, bugün ARM kullanmanın değerlerinden birinin parçası. Büyük bir ekosistem olduğu için tasarımı doğrulamak ve test etmek mümkündür.

  • Bu yüzden, kendinize ait bir instruction set'e sahip olmak iyi bir fikir değildir.

  • RISC-V'de, farklı şirketlerin araç geliştirebileceği bir standart vardır; ekosistem oluştuğunda yük birçok şirket arasında paylaşılabilir.

  • Peki neden mevcut ARM kullanılmıyor? Çünkü ARM genel amaçlı CPU için tasarlanmıştır ve büyük, sabit bir instruction set'e sahiptir.

  • Müşteri talepleri ve RISC-V ile rekabet nedeniyle ARM de 2019'da extension instruction set'lerini duyurdu.

  • Ama asıl sorun hâlâ şu: ARM buna baştan uygun olacak şekilde tasarlanmadı.

→ Tüm ARM toolchain'i büyük ARM instruction set'inin uygulanacağını varsayar.

→ Oysa yardımcı işlemciler büyük bir instruction set istemez, buna ihtiyaç da duymaz.

→ Yardımcı işlemciler, extension yeteneklerine sahip minimal ve sabit bir temel instruction set fikrine göre kurulmuş bir araç ekosistemi ister.

  • Bunun neden yararlı olduğunu Nvidia'nın RISC-V kullanımından çıkarım yaparak görebiliriz.

→ Büyük GPU'lar, denetleyici olarak kullanılacak bir tür genel amaçlı CPU'ya ihtiyaç duyar.

→ Nvidia bunun için FALCON: FAst Logic CONtroller adlı bir çip geliştirdi ve kullandı.

→ Düşük maliyetli ve yüksek verimli

  • RISC-V küçük ve basit bir instruction set'e sahip olduğu için ARM dahil tüm rakiplerini geride bırakır.

  • Nvidia, RISC-V'yi seçerek daha küçük çipleri en düşük güç tüketimiyle mümkün kıldı.

  • Extension mekanizması sayesinde yalnızca gereken işe uygun komutlar eklenebilir.

[ ARM yeni x86 olacak ]

  • İronik biçimde, hem Mac hem de PC'nin ARM ile çalıştığı bir gelecek görebiliriz.

  • Ancak onların etrafındaki custom hardware'ler, RISC-V ile yönetilen yardımcı işlemciler tarafından doldurulacak.

  • Yardımcı işlemciler yaygınlaştıkça, bir SoC üzerinde ARM'den daha fazla RISC-V çipi yer alacak.

  • Gelecek, ARM or RISC-V değil; ARM and RISC-V olacak.

[ ARM, RISC-V yardımcı işlemci ordusunu yönetecek ]

  • Genel amaçlı ARM işlemci; grafik, şifreleme, video sıkıştırma, makine öğrenimi ve sinyal işleme görevlerini üstlenecek RISC-V yardımcı işlemci ordusuyla birlikte merkezde yer alacak.

  • UC Berkeley'den Profesör David Patterson ve ekibi bu geleceğin yaklaştığını gördü ve RISC-V'yi buna iyi uyacak şekilde şekillendirdi.

  • Her tür özel donanım ve mikrodenetleyici RISC-V'ye büyük ilgi gösteriyor; bugün ARM'in hâkim olduğu pek çok alan RISC-V'ye kayacak.

[ RISC-V ana CPU olarak kullanılamaz mı? ]

  • Pek çok kişi, ARM'i tamamen RISC-V ile değiştirme fikrini soruyor.

  • Bazıları, RISC-V'nin aşırı basit komut setinin ARM ve x86'in sunduğu yüksek performansı veremeyeceğini savunuyor.

  • Ancak RISC-V ana işlemci olarak fazlasıyla kullanılabilir; performans sorun değildir.

→ Yalnız, ARM benzeri yüksek performanslı bir RISC-V geliştirecek birilerinin çıkması gerekir.

→ Yani mesele mümkün olup olmaması değil, momentum meselesi. MacOS ve Windows zaten ARM üzerinde çalışıyor.

→ Kısa vadede MS ya da Apple'ın bir başka donanım geçişi için yeniden çaba harcaması beklenmiyor.

8 yorum

 
functor 2020-12-21

İlginçmiş. Güzel özet için teşekkürler.

Artık okullarda da mimari derslerinin x86 ya da amd64 yerine arm veya risc-v temel alınarak verildiği günler gelecek sanırım..

 
kunggom 2020-12-21

Daha önce ARM kökenli bir mühendisin RISC-V’yi eleştiren bir yazısı burada paylaşılmıştı.

https://tr.news.hada.io/topic?id=3137

Yukarıdaki içeriğe göre, RISC-V’yi benimseyen çiplerin çeşitliliğinin artması demek ki kasıtlı bir şeymiş.

 
jwstyle 2020-12-21

Giderek daha da ilgi çekici hale geliyor.

Intel ve AMD'nin nasıl karşılık vereceğini merak ediyorum.

 
cloverhearts 2020-12-21

Bildiğim kadarıyla Çin, neredeyse tamamen RISC-V’e yükleniyor gibi görünüyor.. Geleceğin gerçekten nasıl şekilleneceğini hayal bile edemiyorum

 
xguru 2020-12-21

Benim de aklıma Çin gelmişti. ABD'nin baskısını sürekli hisseden Huawei öne çıkıp bunu ana CPU olarak yapmaya çalışsa acaba ne olurdu :)

 
kbumsik 2020-12-21

Huawei, yalnızca ARM'ı değil TSMC'yi de kullanamadığı bir durumda olduğundan, zaten yüksek performanslı CPU geliştirme işinin baştan çöktüğü söylenebilir. Olsa olsa, performans gereksinimi nispeten daha düşük olan kendi ağ ekipmanlarında kullanabilir.

Ama RISC-V kullanan başka birçok şirket var, bu yüzden sonuçların bu şirketlerden çıkması muhtemel.

 
xguru 2020-12-22

Ah, TSMC’nin bizzat kendisinin engellendiğini hiç düşünmemiştim. SMIC 7 nm’nin ötesine geçip 5 nm’ye kadar süreç geliştirmedikçe zor görünüyor.

 
xguru 2020-12-21

Bu kişi gerçekten çok iyi yazıyor. Bunu da keyifle okudum.

RISC-V'nin başka bir alternatif olacağına dair çok tahmin vardı,

ama bu şekilde yardımcı işlemci için en iyi çip olabileceği perspektifinden hiç düşünmemiştim.