Açık veri grafiği yürütme - Explicit data graph execution - Wikipedia

Açık veri grafiği yürütmeveya KENAR, bir tür komut seti mimarisi (ISA) gibi yaygın işlemcilere kıyasla bilgi işlem performansını artırmayı amaçlayan Intel x86 hat. EDGE, birçok bireysel talimatı "hiper blok" olarak bilinen daha büyük bir grupta birleştirir. Hiper bloklar, paralel olarak kolayca çalışabilecek şekilde tasarlanmıştır.

Modern CPU tasarımlarının paralelliği genellikle yaklaşık sekiz dahili birimde ve bir ila dört "çekirdekte" düzleşmeye başlar, EDGE tasarımları yüzlerce dahili birimi desteklemeyi ve mevcut tasarımlardan yüzlerce kat daha yüksek işlem hızları sunmayı amaçlamaktadır. EDGE konseptinin büyük gelişimi, Austin'deki Texas Üniversitesi altında DARPA 'in Polymorphous Computing Architectures programı, 2012 yılına kadar 1 TFLOPS performansına sahip tek çipli bir CPU tasarımı üretme hedefi ile 2018 itibariyle henüz gerçekleştirilmemiştir.[1]

Geleneksel tasarımlar

Hemen hemen tüm bilgisayar programları, verileri bir formdan diğerine dönüştüren bir dizi talimattan oluşur. Çoğu talimat, bir işlemi tamamlamak için birkaç dahili adım gerektirir. Zamanla, farklı adımların göreceli performansı ve maliyeti önemli ölçüde değişti ve bu da ISA tasarımında birkaç büyük değişikliğe neden oldu.

CISC'den RISC'ye

1960'larda hafıza nispeten pahalıydı ve CPU tasarımcıları, bu kaynağı daha iyi kullanmak için talimatları ve verileri yoğun şekilde kodlayan komut setleri üretti. Örneğin, C'yi üretmek için B'ye A ekleyin öğretim, A ve B'yi farklı yerlerden toplayacak birçok farklı biçimde sağlanacaktır; ana bellek, dizinler veya kayıtlar. Bu farklı talimatların sağlanması, programcının hafızada mümkün olan en az yer kaplayan talimatı seçmesine, programın ihtiyaçlarını azaltmasına ve veri için daha fazla yer bırakmasına izin verdi. Her olası talimat için mümkün olan her erişim modunu sağlamaya çalışan bir komut seti ( DEC VAX ) olarak biliniyordu dikey, sonra tasarımın kusursuz örneği olarak kabul edildi. Çok çeşitli modlara sahip bu bellek erişimi stili, yüzlerce farklı talimat içeren komut setlerine yol açtı. CISC (Karmaşık Komut Seti Hesaplama).

1970'lerin sonlarına doğru bellek ucuzladı, ancak daha düşük performansa mal oldu; CPU tasarımları artık konuştukları bellekten kat kat daha hızlı çalışıyor. Bu yeni rejimde ortogonalite istenmeyen hale geldi. Talimatların bu sürümlerinin her biri CPU'da yer kapladı, ancak iyileştirmek için çok az şey yaptı veya hiçbir şey yapmadı verim çünkü yavaş bellekle iletişim kurarken, aynı zamanda bellek tasarrufu artık gereksizdi. Bu dönemde RISC (Azaltılmış Komut Seti Hesaplama) tasarım felsefesi gelişti. Temel amaç, çoğu talimat için dahili yüksek performanslı yazmaçlar kullanarak belleğe erişimi mümkün olduğunca azaltmaktı. Bir yan etki olarak, talimatlar için çok çeşitli farklı modlar ortadan kalktı; sadece bir tane olabilir EKLE birçok yerine talimat. Bu talimatların kaldırılması, komut kod çözücünün karmaşıklığını azalttı ve kayıtların sayısını büyük ölçüde artırmak için kullanılan CPU'da önemli bir alan serbest bıraktı.

İç paralellik

1990'larda yonga tasarımı ve üretim süreci, her potansiyel özelliğin yerleşik olduğu bir emtia işlemcisi inşa etmenin mümkün olduğu noktaya geldi. Performansı artırmak için CPU tasarımları dahili paralellik eklemeye başladı ve "süper skalar ". Herhangi bir programda ilgisiz veriler üzerinde çalışan talimatlar vardır, bu nedenle daha fazla işlevsel birim ekleyerek bu talimatlar aynı anda çalıştırılabilir. CPU'nun yeni bir kısmı, planlayıcı, bu bağımsız komutları arar ve bunları birimlere besler, çıktılarını alır ve dışarıdan yeniden sıralar, böylece arka arkaya çalışıyormuş gibi görünür.

Süper skalar tasarımlarda elde edilebilecek paralellik miktarı, programlayıcının karşılıklı bağımlılıklar için inceleyebileceği talimatların sayısı ile sınırlıdır. Daha fazla sayıda talimatın incelenmesi, paralel olarak çalıştırılabilen bir talimat bulma şansını artırabilir, ancak yalnızca programlayıcının karmaşıklığını artırma pahasına. Büyük çabalara rağmen, klasik RISC veya CISC ISA'ları kullanan CPU tasarımları, yaklaşık üç veya dört işlevsel birimde düzlüğe ulaştı.[kaynak belirtilmeli ].

Ek performans, farklı sistemlerde çalışan sistemleri bulmak için talimatları inceleyerek sistemlerden çıkarılabilir. türleri veri toplama ve bu tür verilere ayrılmış birimler ekleme; bu tanıtıma yol açtı kayan nokta birimleri ve daha yakın zamanda, tek talimat, çoklu veri (SIMD) birimleri. Bu yaklaşımın dezavantajı, CPU'yu daha az genel hale getirmesidir; Örneğin, CPU'yu neredeyse tüm kayan nokta komutlarını kullanan bir programla beslemek, diğer birimler boşta kalırken FPU'ları tıkayacaktır.

Modern CPU tasarımlarında daha yeni bir sorun, yazmaçlarla konuşma gecikmesidir. Genel olarak, CPU kalıbının boyutu zaman içinde büyük ölçüde aynı kalırken, CPU içindeki birimlerin boyutu, daha fazla birim eklendikçe çok daha küçük büyümüştür. Bu şu demektir akraba herhangi bir işlev birimi ile global kayıt dosyası arasındaki mesafe zamanla artmıştır. Ana bellekle konuşmada gecikmeleri önlemek için bir kez eklendiğinde, global kayıt dosyası kaçınmaya değer bir gecikme haline geldi.

Yeni bir ISA mı?

Tıpkı fiyatı düşerken bellekle konuşmada yaşanan gecikmelerin ISA'da (Komut Seti Mimarisi) CISC'den RISC'ye köklü bir değişime işaret etmesi gibi, tasarımcılar paralel olarak ölçeklenen sorunların ve kayıtlarla konuşmanın artan gecikmelerinin temel ISA'da başka bir geçiş gerektirip gerektirmediğini düşünüyor.

Yeni bir ISA sunmanın yolları arasında, çok uzun talimat kelimesi (VLIW) mimarileri, Itanium. VLIW, zamanlayıcı mantığını CPU'nun dışına ve komut akışını incelemek için çok daha fazla belleğe ve daha uzun zaman çizelgelerine sahip olduğu derleyiciye taşır. Bu statik yerleşim, statik sorun yürütme modeli, tüm gecikmeler bilindiğinde iyi çalışır, ancak önbellek gecikmelerinin varlığında, talimat kelimelerini doldurmanın derleyici için zor bir zorluk olduğu kanıtlanmıştır.[2] Veriler önbellekte ise beş döngü alabilecek bir talimat, değilse yüzlerce sürebilir, ancak derleyicinin bu verilerin çalışma zamanında önbellekte olup olmayacağını bilmesinin bir yolu yoktur - bu, genel sistem yükü ve diğer faktörlerle belirlenir. derlenen programla hiçbir ilgisi yoktur.

Geleneksel tasarımlardaki en önemli performans darboğazı, veriler ve bunlar üzerinde çalışan talimatların teorik olarak bellek hakkında dağınık olmasıdır. Bellek performansı genel performansa hükmeder ve klasik dinamik yerleşim, dinamik sorun tasarımlar performans yeteneklerinin sınırına ulaşmış görünüyor. VLIW bir statik yerleşim, statik sorun modelidir, ancak uzmanlaşmanın zor olduğu kanıtlanmıştır çünkü programların çalışma zamanı davranışını önceden tahmin etmek ve doğru şekilde programlamak zordur.

KENAR

Teori

EDGE mimarileri, yeni bir ISA sınıfıdır. statik yerleşim, dinamik sorun tasarım. EDGE sistemleri derlemek kaynak kodu statik olarak ayrılmış bir forma hiper bloklar yüzlerce veya binlerce bireysel talimat içeren. Bu hiper bloklar daha sonra CPU tarafından dinamik olarak programlanır. EDGE, VLIW kavramının derleme zamanında bağımsız veri arama konseptinin avantajlarını, bunlar için veriler mevcut olduğunda talimatları yürütme şeklindeki süper skalar RISC konseptiyle birleştirir.

Gerçek dünya programlarının büyük çoğunluğunda, veri ve talimatların bağlantısı hem açık hem de açıktır. Programlar küçük bloklara ayrılmıştır. alt programlar, genellikle verilerin içeri veya dışarı aktarıldığı iyi tanımlanmış giriş ve çıkış noktalarına sahip prosedürler veya yöntemler (kullanılan çağa ve programlama diline bağlı olarak). Bu bilgiler kaybolur. yüksek seviyeli dil işlemcinin çok daha basit ISA'sına dönüştürülür. Ancak bu bilgi o kadar kullanışlıdır ki, modern derleyiciler kavramı "temel blok ", bunlar aracılığıyla bellek erişimini optimize ederken bunları programlar içinde tanımlamaya çalışırken kayıtlar. Bir talimat bloğu kontrol ifadelerine sahip değildir, ancak önceden belirlenmiş talimatlara sahip olabilir. veri akışı grafiği bu bloklar kullanılarak, bir komut bloğundan diğerine veya bir depolama alanına veri akışını belirleyerek kodlanır.

EDGE'nin temel fikri, ISA düzeyinde bu blokları doğrudan desteklemek ve bunlarla çalışmaktır. Temel bloklar belleğe iyi tanımlanmış yollarla eriştiğinden, işlemci ilgili blokları yükleyebilir ve bunları programlayabilir, böylece bir bloğun çıktısı doğrudan verilerini tüketecek olana beslenir. Bu, genel bir kayıt dosyası ihtiyacını ortadan kaldırır ve derleyicinin, program tarafından bir bütün olarak kayıtlara erişimi zamanlama görevini basitleştirir - bunun yerine, her temel bloğa kendi yerel kayıtları verilir ve derleyici, blok içindeki erişimi optimize eder. daha basit görev.

EDGE sistemleri ile güçlü bir benzerlik vardır. veri akışı dilleri 1960'lardan 1970'lere ve yine 1990'larda. Dataflow bilgisayarları programları, bir komutun işlenenleri kullanılabilir olduktan sonra herhangi bir zamanda yürütülebileceğini öngören "veri akışı ateşleme kuralı" na göre yürütür. EDGE'ye benzer şekilde, verilerin izolasyonu nedeniyle, veri akışı dilleri doğası gereği paraleldir ve bunlara olan ilgi, genel hesaplama sorunlarına bir çözüm olarak büyük paralelliğe olan daha genel ilgiyi izledi. O zamanki mevcut CPU teknolojisine dayanan çalışmalar, bir veri akışı makinesinin yeterli miktarda veriyi CPU'nun yakınında tutmasının geniş ölçüde paralel olmasının zor olacağını ve modern üretim tekniklerinin yüzlerce CPU'yu yerleştirerek çözebileceği tam da bu darboğaz olduğunu gösterdi. tek bir kalıpta hafıza.

Veri akış sistemlerinin hiç popüler olmamasının bir başka nedeni de, çağın derleyicilerinin aşağıdaki gibi yaygın zorunlu dillerle çalışmayı zor bulmasıdır. C ++. Bunun yerine, çoğu veri akışı sistemi, Prograph ticari ilgilerini sınırlayan. On yıllık derleyici araştırması, bu sorunların çoğunu ortadan kaldırmıştır ve veri akışı ile EDGE yaklaşımları arasındaki temel fark, EDGE tasarımlarının yaygın olarak kullanılan dillerle çalışmayı amaçlamasıdır.

CPU'lar

EDGE tabanlı bir CPU, kendi yerel kayıtları olan bir veya daha fazla küçük blok motorundan oluşacaktır; gerçekçi tasarımlarda bu birimlerin yüzlercesi olabilir. Üniteler, özel bloklar arası iletişim bağlantıları kullanılarak birbirine bağlanır. Derleyici tarafından bloğa kodlanan bilgiler nedeniyle, programlayıcı, girişlerinin mevcut olup olmadığını görmek için tüm bloğu inceleyebilir ve yürütmek için bir motora gönderebilir - içindeki bireysel talimatları incelemeye gerek yoktur.

Karmaşıklıkta küçük bir artışla, programlayıcı, birden çok bloğu inceleyip, birinin çıktılarının diğerinin girdileri olarak beslenip beslenmediğini görebilir ve bu blokları birimler arası iletişim gecikmelerini azaltan birimlere yerleştirebilir. Modern bir CPU, potansiyel paralellik için bin talimatı incelerse, EDGE'deki aynı karmaşıklık, her biri yüzlerce komuttan oluşan bin hiper bloğu incelemesine izin verir. Bu, programlayıcıya ek maliyet olmaksızın önemli ölçüde daha iyi bir kapsam sağlar. Kavrama adını veren işte bu işleyiş şeklidir; "grafik", aralarında akan veri ile bağlanan blok dizisidir.

EDGE konseptinin bir diğer avantajı, büyük ölçüde ölçeklenebilir olmasıdır. Düşük uçlu bir tasarım, program tarafından çağrıldıklarında basitçe bloklar halinde gönderen bir saplama zamanlayıcıya sahip tek bir blok motordan oluşabilir. Masaüstü kullanımına yönelik bir EDGE işlemcisi, bunun yerine yüzlerce blok motoru içerecektir. Kritik olarak, bu tasarımlar arasında değişen tek şey çipin fiziksel yerleşimi ve yalnızca programlayıcı tarafından bilinen özel bilgilerdir; tek üniteli makine için yazılmış bir program, binlerce kat daha hızlı da olsa, masaüstü sürümünde herhangi bir değişiklik olmadan çalışacaktır. Güç ölçeklendirme de benzer şekilde önemli ölçüde geliştirildi ve basitleştirildi; blok motorlar, güç tüketimi üzerinde doğrusal bir etki ile gerektiği gibi açılıp kapatılabilir.

EDGE konseptinin belki de en büyük avantajı, her türlü veri yükünü çalıştırmak için uygun olmasıdır. CPU'nun farklı bölümlerinin farklı veri türlerine ayrıldığı modern CPU tasarımlarından farklı olarak, bir EDGE CPU normalde tek bir türden oluşur. ALU benzeri birim. Aynı anda birkaç farklı program çalıştıran bir masaüstü kullanıcısı, bilimsel bir kullanıcının yalnızca kayan nokta kullanarak tek bir programı beslemesi kadar paralellik elde eder; her iki durumda da zamanlayıcı, basitçe birimlere yapabileceği her bloğu yükleyecektir. Düşük bir seviyede, bireysel blok motorların performansı, örneğin özel bir FPU'nun performansıyla eşleşmeyecektir, ancak bu tür bir avantajı büyük paralellik yoluyla alt etmeye çalışacaktır.

Uygulamalar

GEZİLER

Austin'deki Texas Üniversitesi olarak bilinen bir EDGE ISA geliştiriyordu GEZİLER. TRIPS ISA, onu çalıştırmak üzere tasarlanmış bir CPU'nun mikro mimarisini basitleştirmek için, her bir TRIPS hiper bloğuna birkaç iyi tanımlanmış kısıtlama uygular, bunlar:

  • en fazla 128 talimata sahip,
  • en fazla 32 yük ve / veya mağazada yayın yapan,
  • en fazla 32 sicil bankası okur ve / veya yazar,
  • bir bloğun sonunu belirtmek için kullanılan bir dal kararına sahiptir.

TRIPS derleyicisi talimatları statik olarak hiper bloklar halinde bir araya getirir, ancak aynı zamanda bu blokları belirli ALU'larda çalışacak şekilde statik olarak derler. Bu, TRIPS programlarının derlendikleri kesin uygulamaya biraz bağımlı oldukları anlamına gelir.

2003 yılında, bir megabayt yerel önbellek ve transfer belleği ile birlikte 4'e 4 ızgarada on altı blok motorlu örnek bir TRIPS prototipi ürettiler. TRIPS'in tek çipli versiyonu, IBM Kanada'da 130 nm'lik bir işlem kullanan, bu tür iki "ızgara motoru" ile birlikte paylaşılan seviye 2 önbellek ve çeşitli destek sistemleri içerir. Bu tür dört yonga ve bir gigabayt RAM, deney için bir yardımcı kart üzerine birlikte yerleştirilir.

TRIPS ekibi, 1 TFLOPS gibi sürekli bir performansla çalışabilen tek yongalı bir uygulama üretme konusunda nihai bir hedef belirlemişti, bu, 2008'de mevcut olan yüksek kaliteli ticari CPU'ların yaklaşık 50 katı performans (çift çekirdekli Xeon 5160, GFLOPS).

NAKİT

CMU 's NAKİT üreten bir derleyicidir ara kod "Pegasus" denir.[3] CASH ve TRIPS konsept olarak çok benzerdir, ancak CASH belirli bir mimari için çıktı üretmeyi hedeflememektedir ve bu nedenle blok düzeninde kesin sınırlar yoktur.

WaveScalar

Washington Üniversitesi 's WaveScalar mimari büyük ölçüde EDGE'ye benzer, ancak talimatları statik olarak "dalgaları" içine yerleştirmez. Bunun yerine, özel talimatlar (phi, ve rho) dalgaların sınırlarını işaretleyin ve programlamaya izin verin.[4]

Referanslar

Notlar

  1. ^ Austin'deki Texas Üniversitesi, "TRIPS: 2012'ye kadar Saniyede Bir Trilyon Hesaplama"
  2. ^ W. Havanki, S. Banerjia ve T. Conte. "Geniş sorunlu işlemciler için ağaç bölgesi planlama", Dördüncü Uluslararası Yüksek Performanslı Bilgisayar Mimarileri Sempozyumu BildirileriOcak 1998, sf. 266–276
  3. ^ "Phoenix Projesi"
  4. ^ "WaveScalar ISA"

Kaynakça