Ardışık bölümün oranına göre hızlanma. Her eğri kendi tavanına, ardışık oranın tersine yaklaşır ve işlemci eklemek bu tavanı geçirmez.

Amdahl yasası, bir sistemin yalnızca bir bölümü hızlandırıldığında bütünün ne kadar hızlanacağını veren bağıntıdır. Bilgisayar mimarı Gene Amdahl'ın 1967 tarihli bildirisinde ortaya koyduğu savdan gelir ve en çok koşut hesaplamada, işlemci sayısı artırıldığında elde edilebilecek en yüksek hızlanmayı kestirmek için kullanılır.

Yasanın söylediği şey basittir: bir programın hızlandırılamayan bölümü, hızlandırılan bölüm ne kadar iyileştirilirse iyileştirilsin, toplam hızlanmaya bir tavan koyar. Bir işin yüzde onu hiçbir biçimde hızlandırılamıyorsa, geri kalan yüzde doksan sonsuz hızlı çalışsa bile program en çok on kat hızlanır. Bu tavan, koşut sistemlerin ne kadar ölçekleneceğini belirleyen temel kısıttır.

Yasanın ikinci ve daha az anılan sonucu tasarım yönlendiricidir. Toplam hızlanma, hızlandırılan bölümün payıyla ağırlıklandığından, çok küçük bir bölümü çok fazla hızlandırmak neredeyse hiçbir şey kazandırmaz; buna karşılık büyük bir bölümü az miktarda hızlandırmak belirgin kazanç sağlar. Bu, bilgisayar mimarisinde sık kullanılan "yaygın durumu hızlandır" ilkesinin nicel karşılığıdır.

Formül

Bir işin toplam süresinin 1 birim olduğu varsayılsın. İşin p oranındaki bölümü s çarpanıyla hızlandırılıyor, kalan 1 − p {\displaystyle 1-p} oranındaki bölüm ise değişmeden kalıyor olsun. Hızlandırmadan sonraki süre, değişmeyen bölümle hızlanan bölümün yeni süresinin toplamıdır:

T yeni = ( 1 − p ) + p s {\displaystyle T_{\text{yeni}}=(1-p)+{\frac {p}{s}}}

Hızlanma, eski sürenin yeni süreye oranı olduğundan Amdahl yasası şu biçimi alır:

S = 1 ( 1 − p ) + p s {\displaystyle S={\frac {1}{(1-p)+{\dfrac {p}{s}}}}}

Bağıntının davranışı iki uçta görülür. s değeri 1 olduğunda hızlanma da 1 çıkar, çünkü hiçbir şey değişmemiştir. s sonsuza götürüldüğünde ise p / s {\displaystyle p/s} terimi sıfıra iner ve hızlanma 1 / ( 1 − p ) {\displaystyle 1/(1-p)} değerine takılır. Bu değer, o iyileştirmenin verebileceği en yüksek hızlanmadır ve yalnızca hızlandırılan bölümün payına bağlıdır.

Genel biçim

İş birden çok bölüme ayrılmış ve her bölüm ayrı bir çarpanla hızlandırılmışsa bağıntı toplam üzerinden yazılır. p k {\displaystyle p_{k}} k. bölümün toplam süre içindeki payı, s k {\displaystyle s_{k}} o bölüme uygulanan hızlandırma çarpanı ve n bölüm sayısı olmak üzere:

S = 1 ∑ k = 1 n p k s k ve ∑ k = 1 n p k = 1 {\displaystyle S={\frac {1}{\displaystyle \sum _{k=1}^{n}{\frac {p_{k}}{s_{k}}}}}\qquad {\text{ve}}\qquad \sum _{k=1}^{n}p_{k}=1}

Hızlandırılmayan bölümler bu toplamda s k = 1 {\displaystyle s_{k}=1} alınarak yer alır. Tek bölümün hızlandırıldığı durum bu genel biçimin özel hâlidir.

Koşut hesaplamada

Koşut hesaplamada yasa genellikle işlemci sayısı üzerinden yazılır. Programın F oranındaki bölümü ardışıktır ve hiçbir biçimde bölünemez, kalan 1 − F {\displaystyle 1-F} oranındaki bölüm ise N işlemciye kusursuz biçimde dağıtılabilir. Bu durumda hızlanma:

S ( N ) = 1 F + 1 − F N {\displaystyle S(N)={\frac {1}{F+{\dfrac {1-F}{N}}}}}

N büyüdükçe ikinci terim sıfıra yaklaşır ve hızlanma 1 / F {\displaystyle 1/F} değerine yakınsar. Bu, sistemin işlemci sayısından bağımsız üst sınırıdır.

Ardışık oran F N = 8 N = 64 N = 1024 Tavan (N → ∞)
%50 1,78 1,97 2,00 2
%25 2,91 3,82 3,99 4
%10 4,71 8,77 9,91 10
%5 5,93 15,42 19,64 20
%1 7,48 39,26 91,18 100

Çizelge, ardışık oranın küçülmesinin işlemci eklemekten çok daha etkili olduğunu gösterir. Ardışık oran %10 iken 1024 işlemci ancak 9,9 kat hızlanma verirken, aynı işlemci sayısında ardışık oranı %1'e indirmek hızlanmayı 91 kata çıkarır. Koşut programlamada harcanan emeğin büyük bölümü bu yüzden işlemci eklemeye değil ardışık bölümü küçültmeye ayrılır.

Örnekler

İşlemci sayısı arttıkça koşut bölüm kısalır, ardışık bölüm olduğu gibi kalır. Toplam süre bu değişmeyen bloğa dayanır.

Tek bir bölümün hızlandırılması

Bir programın süresinin %30'unu kaplayan bir bölüm iki kat hızlandırılsın. Burada p = 0 , 30 {\displaystyle p=0{,}30} ve s = 2 {\displaystyle s=2} olduğundan hızlanma

S = 1 0 , 70 + 0 , 30 2 = 1 0 , 85 ≈ 1 , 18 {\displaystyle S={\frac {1}{0{,}70+{\frac {0{,}30}{2}}}}={\frac {1}{0{,}85}}\approx 1{,}18}

çıkar. Aynı bölüm sonsuz hızlı çalıştırılabilseydi bile hızlanma 1 / 0 , 70 ≈ 1 , 43 {\displaystyle 1/0{,}70\approx 1{,}43} değerini aşamazdı. İki katına çıkarmak bu üst sınırın yarısından çoğunu zaten toplamıştır; daha ileri gitmenin getirisi hızla azalır.

Nereyi hızlandırmalı

A bölümü sürenin büyük bölümünü kaplıyor. B beş kat hızlandırıldığında toplam süre az kısalır; A yalnızca iki kat hızlandırıldığında çok daha fazla kısalır.

Bir işin birbirinden bağımsız iki bölümü olsun: A bölümü toplam sürenin %75'ini, B bölümü %25'ini kaplasın. Hızlandırılmayan bölümün payı f ile gösterilirse, tek bölümün p kat hızlandırıldığı durumda bağıntı

S = p 1 + f ( p − 1 ) {\displaystyle S={\frac {p}{1+f\,(p-1)}}}

biçiminde de yazılabilir. İki seçenek karşılaştırıldığında:

  • B beş kat hızlandırılırsa değişmeyen bölüm A olur, f = 0 , 75 {\displaystyle f=0{,}75} ve p = 5 {\displaystyle p=5} : S = 5 / ( 1 + 0 , 75 ⋅ 4 ) = 1 , 25 {\displaystyle S=5/(1+0{,}75\cdot 4)=1{,}25}
  • A iki kat hızlandırılırsa değişmeyen bölüm B olur, f = 0 , 25 {\displaystyle f=0{,}25} ve p = 2 {\displaystyle p=2} : S = 2 / ( 1 + 0 , 25 ⋅ 1 ) = 1 , 60 {\displaystyle S=2/(1+0{,}25\cdot 1)=1{,}60}

Küçük bölümü beş kat hızlandırmak %25, büyük bölümü yalnızca iki kat hızlandırmak %60 kazanç verir. Üstelik ikinci seçenek çoğu zaman daha az emek gerektirir. Amdahl yasasının tasarımdaki asıl kullanımı budur: hangi bölüme yatırım yapılacağına karar vermek.

Çok bölümlü bir iş

Dört bölüme ayrılmış bir iş ele alınsın. Bölümlerin payları ve uygulanan hızlandırma çarpanları şöyle olsun:

Bölüm Pay p k {\displaystyle p_{k}} Çarpan s k {\displaystyle s_{k}} Yeni süre p k / s k {\displaystyle p_{k}/s_{k}} Kazanılan süre
1 0,11 1 0,1100 0
2 0,18 5 0,0360 0,144
3 0,23 20 0,0115 0,2185
4 0,48 1,6 0,3000 0,180
Toplam 1,00 0,4575 0,5425

Yeni süre 0,4575 birim, hızlanma ise 1 / 0,457 5 ≈ 2 , 19 {\displaystyle 1/0{,}4575\approx 2{,}19} olur. Kazanılan sürenin dağılımı öğreticidir: payı yalnızca %23 olan üçüncü bölüm, yirmi kat hızlandırıldığı için tek başına toplam kazancın %40'ından çoğunu sağlamıştır. İkinci ve üçüncü bölümler birlikte kazancın üçte ikisini üretir. Buna karşılık payı en büyük olan dördüncü bölüm, çarpanı düşük kaldığı için toplam kazancın ancak üçte birini verir.

Bu örnek yasanın iki yüzünü bir arada gösterir. Pay büyüklüğü tek başına belirleyici değildir, çarpanla birlikte etki eder; ancak hiçbir çarpan bir bölümün kazancını payının üzerine çıkaramaz. Üçüncü bölüm yirmi kat yerine bin kat hızlandırılsaydı kazancı 0,2185'ten ancak 0,2298'e çıkardı.

Sonuçları

Azalan getiri

Hızlanma eğrisi işlemci sayısına göre içbükeydir: her yeni işlemci bir öncekinden daha az katkı sağlar. Ardışık oranı %10 olan bir programda ilk sekiz işlemci hızlanmayı 4,71 kata çıkarırken, sonraki elli altı işlemci onu ancak 8,77 kata taşır. Bu davranış koşut verimlilik kavramıyla ölçülür: hızlanmanın işlemci sayısına oranı, N büyüdükçe sıfıra iner. Belirli bir noktadan sonra eklenen donanım karşılığını vermez.

Kaç işlemci gerekir

Amdahl yasası, bir sisteme kaç işlemci konacağı sorusuna doğrudan bir yanıt vermez, ancak yanıtın ölçütünü verir. Hızlanmanın işlemci sayısına oranı olan koşut verimlilik, eklenen her işlemcinin ne kadarının kullanıldığını gösterir. Ardışık oranı %10 olan bir program için:

İşlemci sayısı Hızlanma Verimlilik
2 1,82 %91
4 3,08 %77
8 4,71 %59
16 6,40 %40
32 7,80 %24
64 8,77 %14
128 9,34 %7

Verimlilik ölçütüyle bakıldığında bu programda otuz iki işlemciden sonrası tartışmalıdır: işlemci sayısı dörde katlanırken hızlanma yalnızca 7,80'den 9,34'e çıkar ve donanımın %93'ü boşa gider. Kaç işlemcinin doğru olduğu, boşta kalan donanımın maliyetiyle kazanılan sürenin değeri karşılaştırılarak belirlenir; yasa bu karşılaştırmanın sayısal temelini kurar.

Ardışık bölümün kaynakları

Yasa, ardışık bölümü tek bir soyut oran olarak alır; uygulamada bu oran birden çok kaynaktan beslenir. Program başlangıcındaki ve sonundaki hazırlık ile toplama işleri, koşut bölümler arasındaki eşitleme noktaları, paylaşılan bir kaynağa sırayla yapılan erişimler ve giriş çıkış işlemleri ardışık oranı büyütür. Bu kaynakların bir bölümü işlemci sayısıyla birlikte büyüdüğünden, gerçek sistemlerde eğri Amdahl'ın öngördüğünden daha erken düzleşir ve bazen tepe noktasından sonra düşer.

Ölçülen hızlanmadan ardışık oranı çıkarmak

Bir programın ardışık oranı çoğu zaman doğrudan bilinmez, ancak ölçülen hızlanmadan geriye doğru hesaplanabilir. Karp ve Flatt'ın 1990'da tanımladığı ölçüt, N işlemcide ölçülen S hızlanmasından deneysel ardışık oranı verir:

f = 1 S − 1 N 1 − 1 N {\displaystyle f={\frac {{\dfrac {1}{S}}-{\dfrac {1}{N}}}{1-{\dfrac {1}{N}}}}}

Bu değerin işlemci sayısı arttıkça sabit kalması, hızlanmanın gerçekten ardışık bölümle sınırlandığını gösterir. Değer N ile birlikte büyüyorsa asıl sınır ardışık bölüm değil, koşut yürütmenin kendi ek yüküdür; bu ayrım, ölçüm sonuçlarının yorumlanmasında Amdahl yasasının çıplak biçiminden daha kullanışlıdır.

Koşut hesaplama dışında

Yasa koşut hesaplamayla anılsa da bağıntı bir alt sistemin hızlandırıldığı her duruma uygulanır; koşut hesaplama yalnızca en bilinen özel hâlidir. Amdahl'ın 1967'deki savı da işlemci sayısıyla değil, genel olarak bir işin hızlandırılamayan bölümüyle ilgilidir.

Bellek hiyerarşisinde bağıntı doğrudan işler. Bir programın süresinin %40'ı bellek beklemeyle geçiyorsa ve yeni bir önbellek düzeni bu beklemeyi dörtte bire indiriyorsa, toplam hızlanma 1 / ( 0 , 60 + 0 , 40 / 4 ) = 1 , 43 {\displaystyle 1/(0{,}60+0{,}40/4)=1{,}43} olur; bekleme tümüyle ortadan kalksa bile hızlanma 1,67'yi aşamaz. Aynı akıl yürütme giriş çıkış hızlandırmalarında, derleyici iyileştirmelerinde ve özel amaçlı hızlandırıcılarda da geçerlidir.

Hızlandırıcılar bu bakımdan öğreticidir. Bir işin küçük ama yoğun bir çekirdeğini yüzlerce kat hızlandıran bir birim, o çekirdek toplam sürenin küçük bir bölümünü kaplıyorsa sistem düzeyinde az kazandırır. Hızlandırıcı tasarımında ilk sorulan sorunun "ne kadar hızlandırıyor" değil "işin ne kadarını kapsıyor" olmasının nedeni budur.

Gustafson yasasıyla ilişkisi

Amdahl yasası problem boyutunu sabit tutup süreyi kısaltmayı, Gustafson yasası süreyi sabit tutup problemi büyütmeyi ölçer.

Amdahl yasası, problem boyutunun sabit tutulduğu ve işlemci eklenerek sürenin kısaltılmaya çalışıldığı durumu modeller. Bu bakış, ölçeklenmeyi karamsar gösterir: sabit bir işte ardışık bölümün payı değişmediğinden tavan hep aynı yerdedir.

John Gustafson 1988'de bu çerçeveyi tersine çevirdi. Uygulamada büyük koşut sistemler var olan bir işi hızlandırmak için değil, daha büyük bir işi aynı sürede çözebilmek için kurulur. Süre sabit tutulup problem işlemci sayısıyla birlikte büyütüldüğünde ardışık bölümün payı azalır, çünkü büyüyen şey koşut bölümdür. Bu varsayım altında hızlanma işlemci sayısıyla doğrusala yakın artar ve Amdahl'ın tavanı ortaya çıkmaz.

İki yasa birbiriyle çelişmez; ayrı soruları yanıtlarlar. Amdahl yasası "elimdeki işi ne kadar hızlandırabilirim" sorusunun, Gustafson yasası "bu sürede ne kadar büyük bir iş çözebilirim" sorusunun yanıtıdır. Birincisine sabit boyutlu ölçekleme, ikincisine ölçeklenen boyutlu ölçekleme denir. Hangisinin geçerli olduğu donanımın değil iş yükünün doğasına bağlıdır: gerçek zamanlı bir sınırın altında kalması gereken bir hesaplama birinci, çözünürlüğü artırılabilen bir benzetim ikinci duruma girer.

Xian-He Sun ve Lionel Ni 1990'da üçüncü bir çerçeve önerdi. Problem boyutunu belleğin izin verdiği ölçüde büyütmek, iki uç arasında kalan ve çoğu bilimsel uygulamaya daha iyi uyan bir ölçekleme biçimi verir; bu modelde hızlanma Amdahl'ın tavanının üstünde, Gustafson'un doğrusalının altında kalır.

Genişletmeler

Çok çekirdekli işlemcilerde

Klasik biçim, işlemcilerin birbirinin aynı ve sabit güçte olduğunu varsayar. Mark Hill ve Michael Marty 2008'de yasayı çok çekirdekli yonga tasarımına uyarladı. Sabit bir kırmık bütçesi verildiğinde bu bütçe çok sayıda küçük çekirdeğe, az sayıda büyük çekirdeğe ya da ikisinin karışımına ayrılabilir. Model, ardışık bölümün varlığı yüzünden yalnızca küçük çekirdek koymanın kötü sonuç verdiğini gösterir: ardışık bölüm tek bir çekirdekte koştuğundan o çekirdeğin tek iş parçacığı başarımı bütünü belirler. Bu sonuç, tümü aynı olan tasarımlar yerine büyük ve küçük çekirdekleri bir arada kullanan türdeş olmayan tasarımların gerekçesini oluşturur.

Güç tüketimi açısından

Dong Hyuk Woo ve Hsien-Hsin Lee 2008'de aynı çerçeveyi enerjiye taşıdı. Koşut bölüm çok sayıda çekirdeğe yayıldığında ardışık bölüm boyunca kalan çekirdekler boşta bekler; bu çekirdeklerin boştaki tüketimi, hızlanma sınırlıyken enerji verimini daha da düşürür. Model, boşta kalan çekirdeklerin uyutulmasının ya da tümüyle kapatılmasının çekirdek sayısı arttıkça neden zorunlu hâle geldiğini nicel olarak ortaya koyar.

Gecikme ile iş çıkarma ayrımı

Amdahl yasası tek bir işin bitiş süresiyle, gecikmeyle ilgilidir. Çok sayıda birbirinden bağımsız işin aynı anda koşturulduğu durumlarda böyle bir tavan oluşmaz: her iş kendi işlemcisinde tek başına çalıştığından ardışık bölümler birbirini beklemez ve iş çıkarma işlemci sayısıyla doğrusal artar. Ağ sunucuları, toplu iş kuyrukları ve çok sayıda bağımsız benzetim koşusu bu sınıfa girer.

Ayrım tasarımda önemlidir, çünkü aynı donanım iki ölçüte göre bambaşka değerlendirilir. Tek bir isteğin gecikmesini kısaltmak isteyen bir sistem Amdahl'ın tavanına çarpar; saniyede karşılanan istek sayısını artırmak isteyen bir sistem çarpmaz. Çok çekirdekli sunucuların çok sayıda görece yavaş çekirdekle kurulabilmesinin, buna karşılık etkileşimli işlerde tek iş parçacığı başarımının hâlâ belirleyici olmasının nedeni bu ayrımdır.

Sınırları

Yasa birkaç güçlü varsayıma dayanır ve bunların her biri gerçek sistemlerde bozulabilir.

Koşut bölüm kusursuz bölünmez. Model, koşut bölümün işlemcilere eşit dağıtıldığını ve dağıtımın hiçbir maliyeti olmadığını varsayar. Uygulamada iş dengesiz bölünür, veri taşınır ve eşitleme yapılır; bu ek yükler işlemci sayısıyla birlikte büyüdüğünden ölçülen hızlanma modelin verdiğinden düşük kalır.

Ardışık oran sabit değildir. Yasa F değerini programın değişmez bir özelliği gibi ele alır. Gerçekte bu oran problem boyutuna, girdiye ve kullanılan algoritmaya göre değişir; çoğu bilimsel uygulamada problem büyütüldükçe küçülür. Sabit sayılması, yasanın karamsar görünmesinin başlıca nedenidir.

Hızlanma tavanı aşılabilir. Uygulamada N işlemcili bir makinede N katından fazla hızlanma ölçülebilir; buna üstün doğrusal hızlanma denir. En yaygın nedeni önbellek toplamıdır: işlemci sayısı arttıkça toplam önbellek kapasitesi de artar ve iş parçalara bölündüğünde her parça bir işlemcinin önbelleğine sığmaya başlar. Bellek erişim süresi düştüğü için elde edilen hızlanma, yalnızca işlemci sayısından beklenenin üstüne çıkar. Bu, yasanın çürütülmesi değil, varsayımlarından birinin dışına çıkılmasıdır; model iş başına yapılan işin sabit kaldığını varsayar, oysa burada değişen bellek davranışıdır.

Tarihçe

Amdahl savını 1967'de AFIPS Bahar Ortak Bilgisayar Konferansı'nda sundu. Bildirinin amacı bir formül vermek değil, o dönemde yükselen bir görüşe karşı çıkmaktı: tek işlemcili yaklaşımın bırakılıp büyük hesaplama gücünün çok sayıda işlemciyi birleştirerek elde edilmesi gerektiği savına, gerçek programlarda ardışık kalan işin bunu engelleyeceğini söyleyerek yanıt verdi. Bildiride bugün kullanılan cebirsel biçim geçmez; sav sayısal örnekler ve akıl yürütmeyle kurulmuştur. "Amdahl yasası" adı sonradan yerleşmiştir.

Sav uzun süre koşut hesaplamaya karşı bir kanıt gibi okundu. Gustafson'un 1988 tarihli yazısı bu okumayı sarstı ve tartışmayı problem boyutunun sabit olup olmadığına kaydırdı. Amdahl 2013'te yasaya kendi gözünden bakan bir değerlendirme yayımladı; burada savının bir yasak değil, tasarımcıyı ardışık bölüme dikkat etmeye çağıran bir uyarı olduğunu vurguladı.

Amdahl'ın öteki kuralları

Amdahl'ın adı, dengeli sistem tasarımına ilişkin birkaç kaba orana da verilir. Bunların en bilineni, bir bilgisayarda saniyede yürütülen her buyruk için yaklaşık 1 bayt bellek ve saniyede 1 bit giriş çıkış bant genişliği bulunması gerektiğini söyler. Oran, işlemci gücüyle bellek ve giriş çıkış kapasitesinin birlikte büyümesi gerektiğini anlatan bir kestirim kuralıdır; kesin bir yasa değil, tasarımda denge gözetmeye çağıran bir ölçüttür.

Ayrıca bakınız

Kaynakça

  1. ^ a b Amdahl, Gene M. (1967). Validity of the single processor approach to achieving large scale computing capabilities. AFIPS Spring Joint Computer Conference. 30. ss. 483-485. doi:10.1145/1465482.1465560. 
  2. ^ a b c d e f g h i j Hennessy, John L.; Patterson, David A. (2019). Computer Architecture: A Quantitative Approach (6 bas.). Morgan Kaufmann. ISBN 978-0128119051. 
  3. ^ a b c Karp, Alan H.; Flatt, Horace P. (1990). "Measuring parallel processor performance". Communications of the ACM. 33 (5). ss. 539-543. doi:10.1145/78607.78614. 
  4. ^ a b Amdahl, Gene M. (2013). "Computer Architecture and Amdahl's Law". Computer. 46 (12). ss. 38-46. doi:10.1109/MC.2013.418. 
  5. ^ a b c Hill, Mark D.; Marty, Michael R. (2008). "Amdahl's Law in the Multicore Era". Computer. 41 (7). ss. 33-38. doi:10.1109/MC.2008.209. 
  6. ^ a b c Gustafson, John L. (1988). "Reevaluating Amdahl's law". Communications of the ACM. 31 (5). ss. 532-533. doi:10.1145/42411.42415. 
  7. ^ Sun, Xian-He; Ni, Lionel M. (1993). "Scalable problems and memory-bounded speedup". Journal of Parallel and Distributed Computing. 19 (1). ss. 27-37. doi:10.1006/jpdc.1993.1087. 
  8. ^ Woo, Dong Hyuk; Lee, Hsien-Hsin S. (2008). "Extending Amdahl's Law for Energy-Efficient Computing in the Many-Core Era". Computer. 41 (12). ss. 24-31. doi:10.1109/MC.2008.494. 

Dış bağlantılar