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

Açık veri grafiği yürütme veya EDGE , Intel x86 serisi gibi yaygın işlemcilere kıyasla bilgi işlem performansını iyileştirmeyi amaçlayan bir tür komut seti mimarisidir (ISA) . 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 birden dörde kadar "ç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, DARPA'nın Polymorphous Computing Architectures programı kapsamında Austin'deki Texas Üniversitesi tarafından 2012 yılına kadar 1 TFLOPS performansına sahip tek çipli bir CPU tasarımı üretme hedefi ile yürütülmüştür ve bu henüz gerçekleştirilmemiştir. 2018 itibariyle.

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 bellek nispeten pahalıydı ve CPU tasarımcıları, bu kaynağı daha iyi kullanmak için yoğun şekilde komutları ve verileri kodlayan komut setleri ürettiler. Örneğin, add A to B to produce C öğ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 bellekte 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 olanak tanıdı.

Aslında bu talimatların çalışmasını sağlamak, CPU'da döngü gerektiriyordu; bu, erken tasarımlarda önemli bir sınırlamaydı ve tasarımcıların sadece gerçekten ihtiyaç duyulan talimatları seçmesini gerektiriyordu. IBM , 1964 yılında , ihtiyaca bağlı olarak donanımda az ya da çok talimat uygulayarak tek bir genişletilmiş komut seti mimarisinin (ISA) çok çeşitli makinelerde çalışmasına izin vermek için mikro kod kullanan System / 360 serisini tanıttı . Bu, ISA'nın genişlemesine izin verdi ve bu, 1960'larda ve 70'lerde bilgisayar tasarımının en iyi örneği haline geldi, sözde ortogonal tasarım. Çok çeşitli modlara sahip bu bellek erişimi stili, bugün CISC (Karmaşık Komut Seti Hesaplama) olarak bilinen bir stil olan yüzlerce farklı talimat içeren komut setlerine yol açtı .

1975'te IBM , en hızlı çağdaş bilgisayarlarından yaklaşık üç kat daha fazla performans gerektiren bir telefon anahtarı geliştirmek için bir proje başlattı . Bu hedefe ulaşmak için geliştirme ekibi, IBM'in son on yılda topladığı büyük miktardaki performans verilerini incelemeye başladı. Bu çalışma, karmaşık ISA'nın aslında önemli bir sorun olduğunu gösterdi; Yalnızca en temel talimatların donanımda uygulanması garanti edildiğinden, derleyiciler yalnızca belirli makinelerde donanımda çalışan daha karmaşık olanları göz ardı ettiler. Sonuç olarak, bir programın zamanının büyük çoğunluğu yalnızca beş talimatla harcanıyordu. Dahası, program bu beş talimattan birini çağırdığında bile, mikrokod, sadece dahili donanımı çağırsa bile, onu çözmek için sınırlı bir süreye ihtiyaç duyuyordu. Daha hızlı makinelerde, bu ek yük önemliydi.

O sırada IBM 801 olarak bilinen çalışmaları, sonunda RISC (Azaltılmış Yönerge Seti Hesaplama) konseptine yol açtı . Mikro kod kaldırıldı ve herhangi bir talimatın yalnızca en temel sürümleri CPU'ya yerleştirildi. Daha karmaşık kodlar derleyiciye bırakıldı. Hakkında çok fazla devre çıkarılması, 1 / 3 transistörlerin Motorola 68000 , örneğin, evcil işlemci performansı üzerinde doğrudan etkisi daha kayıtları içermesi. 1980'lerin ortalarına gelindiğinde, bu temel kavramların daha da geliştirilmiş versiyonları, daha az gelişmiş fabrikasyon kullanılmasına rağmen, en hızlı CISC tasarımlarından 10 kat daha fazla performans sağlıyordu.

İç 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 kadar büyüdü. Performansı artırmak için, CPU tasarımları dahili paralellik eklemeye başladı ve " süper skalar " oldu. Herhangi bir programda ilgisiz veriler üzerinde çalışan talimatlar vardır, bu nedenle daha fazla fonksiyonel ünite ekleyerek bu talimatlar aynı anda çalıştırılabilir. CPU'nun yeni bir bölümü, zamanlayı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ürler.

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ı.

Ek performans, farklı veri türleri üzerinde işleyenleri bulmak için talimatları inceleyerek ve bu tür verilere ayrılmış birimler ekleyerek sistemlerden çıkarılabilir ; bu, kayan nokta birimlerinin ve daha yakın zamanda tek talimat, çoklu veri (SIMD) birimlerinin kullanılmasına yol açmıştır . 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, herhangi bir işlev birimi ile global yazmaç dosyası arasındaki göreceli mesafenin zamanla arttığı anlamına gelir . Ana hafızayla 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 yazmaçlarla 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, Itanium tarafından tipik hale getirilen çok uzun talimat kelimesi (VLIW) mimarileri vardır . 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ştirme, 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. Veriler önbellekte ise beş döngü sürebilecek bir talimat, yoksa 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örler tarafından belirlenir. derlenen programla hiçbir ilgisi yoktur.

Geleneksel tasarımlardaki temel 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 hakimdir ve klasik dinamik yerleştirme, dinamik sorunlu tasarımlar performans yeteneklerinin sınırına ulaşmış gibi görünmektedir. VLIW, statik bir yerleşim, statik sorun modeli kullanır, ancak programların çalışma zamanı davranışını önceden tahmin etmek ve düzgün bir şekilde planlamak zor olduğu için ustalaşmanın zor olduğu kanıtlanmıştır.

KENAR

Teori

EDGE mimarileri, statik yerleşim, dinamik sorun tasarımına dayalı yeni bir ISA sınıfıdır . KENAR sistemleri derlemek kaynak kodunu durağan ayrılmış oluşan bir forma hyperblocks birçok bireysel talimatlar, yüzlerce veya binlerce içeren. Bu hiper bloklar daha sonra CPU tarafından dinamik olarak programlanır. EDGE, VLIW konseptinin derleme zamanında bağımsız verileri arama konseptinin avantajlarını, onlar 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 alt yordamlar , prosedürler veya yöntemler (kullanılan çağa ve kullanılan programlama diline bağlı olarak) olarak adlandırılan ve genellikle verilerin içeri veya dışarı aktarıldığı iyi tanımlanmış giriş ve çıkış noktalarına sahip küçük bloklara bölünmüştür . Bu bilgi, yüksek seviyeli dil işlemcinin çok daha basit ISA'sına dönüştürüldüğünde kaybolur . Ancak bu bilgi o kadar kullanışlıdır ki, modern derleyiciler, bu kavramı " temel blok " olarak genelleştirmişler ve yazmaçlar aracılığıyla bellek erişimini optimize ederken bunları programlar içinde tanımlamaya çalışmışlardır . Bir talimat bloğu kontrol ifadelerine sahip değildir, ancak önceden belirlenmiş talimatlara sahip olabilir. Veri akışı grafiği , bir komut bloğundan diğerine veya bir depolama alanına veri akışını belirleyerek bu bloklar kullanılarak kodlanır.

EDGE'nin temel fikri, ISA seviyesinde 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 bir bütün olarak program tarafından 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 , 1960'lardan 1970'lere ve yine 1990'lara kadar veri akışı dillerine güçlü bir benzerlik gösterir . 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 veriyi CPU'nun yakınında tutmasının geniş ölçüde paralel olmasının zor olacağını gösterdi ve modern üretim tekniklerinin yüzlerce CPU'yu yerleştirerek çözebileceği tam da bu darboğazdır. tek bir kalıpta hafıza.

Veri akışı sistemlerinin hiç popüler olmamasının bir başka nedeni de, çağın derleyicilerinin C ++ gibi yaygın zorunlu dillerle çalışmayı zor bulmasıdır . Bunun yerine, çoğu veri akışı sistemi , ticari ilgilerini sınırlayan Prograph gibi özel diller kullandı . 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 bir bloğun tamamını inceleyebilir ve yürütme 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 çıkış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 talimat içeren 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 verilerle bağlanan blok dizisidir.

EDGE konseptinin bir diğer avantajı, büyük ölçüde ölçeklenebilir olmasıdır. Düşük kaliteli 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 tip ALU benzeri birimden oluşur. 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ı ile eşleşmeyecektir, ancak bu tür bir avantajı büyük paralellik yoluyla bastırmaya çalışacaktır.

Uygulamalar

GEZİLER

University of Texas at Austin olarak bilinen bir KENAR ISA geliştiriyordu TRIPS . 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 paketler, 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. 130 nm'lik bir süreç kullanılarak Kanada'da IBM tarafından üretilen TRIPS'in tek yongalı bir sürümü, paylaşılan seviye 2 önbellek ve çeşitli destek sistemleriyle birlikte bu tür iki "ızgara motoru" 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'lardan yaklaşık 50 kat daha fazla performans (çift çekirdekli Xeon 5160, yaklaşık 17 GFLOPS).

NAKİT

CMU 's CASH , "Pegasus" adı verilen bir ara kod üreten bir derleyicidir . CASH ve TRIPS konsept olarak çok benzer, ancak CASH belirli bir mimari için çıktı üretmeyi hedeflemiyor ve bu nedenle blok düzeninde kesin sınırlamalara sahip değil.

WaveScalar

Washington Üniversitesi 'nin WaveScalar mimarisi EDGE ölçüde benzer, ancak statik olarak onun 'dalgalar' dahilinde talimatları koymaz. Bunun yerine, özel talimatlar ( phi ve rho ) dalgaların sınırlarını belirler ve programlamaya izin verir.

Referanslar

Notlar

Kaynakça