# Amdahl yasası
Bilgisayar mimarı Gene Amdahl'ın ismini alan Amdahl Yasası, sistemin bir parçasının hızlandırılması sonucunda, sistemin bir bütün olarak ele alındığında toplam hızlanmasının ne olacağını hesaplamak için kullanılır. Sıklıkla, birden fazla işlemci kullanıldığında erişilebilecek azami hızlanmayı tahmin etmek için paralel hesaplamalarda da kullanılır.
Amdahl Yasası'nın genelleştirilmiş hali:
Burada;Pk: Hızlandırılacak ya da yavaşlatılacak buyrukların, tüm buyruklara oranı.Sk: Hızlandırma çarpanı. Bu çarpan için, 1 temel kabul edilir. Çarpan 1 olduğunda, hızlanma ya da yavaşlama yoktur.
 Her bir oran ve hızlandırma için bir etiket görevi görür.
 Sistem değişikliğinden kaynaklanan hızlanma veya yavaşlamaların sayısı.


## Tanım.
Amdahl Yasası, bir algoritmanın paralel gerçeklemelerinin, seri gerçeklemesi ile arasındaki beklenen hızlanma değerlerinin ilişkisi için bir modeldir. Örneğin, eğer bir algoritmanın paralel gerçeklemeleri, algoritmanın işlemlerinin 12%'sini keyfi olarak hızlı çalıştırabiliyorsa ve işlemlerin geri kalan 88%'i paralelleştirilebilir değilse, Amdahl Yasası'na göre, paralelleştirilmiş versiyonun azami hızlanması, paralelleştirilmemiş gerçeklenmelerden
1/1 - 0.12 = 1.136 kadar hızlıdır.
Daha teknik olmak gerekirse bu yasa, işlemlerin "P"'lik bir oranının etkilenerek "S" kadar hızlandırıldığı bir noktada erişilebilecek hızlanmayı hesaplamada kullanılır. Örneğin, eğer bir iyileştirme süreci, işlemlerin 30%'unu hızlandırabiliyorsa, "P" 0,3; ve eğer bu süreç, etkilenen bölümü eskisine göre iki kat daha hızlı çalıştırabiliyorsa, "S" 2 olacaktır. Amdahl Yasası'na göre, bu iyileştirmenin toplam hızlandırması;
1/(1 - P) + P/S olacaktır.
Bu formülün nasıl çıkarıldığını görmek için; eski işlem süreci süresinin 1 birim olduğunun varsayalım. Yeni işlem sürecinin alacağı zaman, hızlandırılmamış buyrukların işlenmesi için gerek süre (yani 1 - "P") ile hızlandırılmış buyrukların işlenmesi için gereken sürenin toplanmasıyla elde edilir. Hızlandırılmış buyrukların işlenmesi için gereken süre, hızlandırılmış bölümün, hızlanmadan önce aldığı sürenin hızlanma katsayısına bölünmesi ile elde edilir. Yani "P"/"S" ile hesaplanır. Toplam hızlanma ise, hızlanmadan önce işlem için gereken sürenin, hızlanmadan sonra gereken süreye bölünmesi ile bulunur. Amdahl Yasası'nın gerektirdiği formül de tam olarak bunu yapmaktadır.
Başka bir örneği ele alacak olursak: Bize, dört bölüme ayrılmış bir işlem verilmiş olsun ve bu bölümlerin toplam buyruk sayısına oranları şu şekilde olsun: P1 = 11%, P2 = 18%, P3 = 23%, P4 = 48%. Görüldüğü gibi, bu oranların toplamı 100%'e ulaşmaktadır. Verilere göre, P1'de hızlanma veya yavaşlama olmamaktadır, buna göre S1 = 1 alınır. P2 5 kat hızlanmaktadır, yani S2 = 5, P3 20 kat hızlanmaktadır, yani S3 = 20, P4 ise 1.6 kat hızlanmaktadır ve S4 = 1.6 alınmaktadır. P1/S1 + P2/S2 + P3/S3 + P4/S4 formülünü kullanarak, çalışma zamanını .11/1 + .18/5 + .23/20 + .48/1.6 = .4575 olarak hesaplarız. Buna göre çalışma zamanı, hızlanmadan önceki zamanın yarısından biraz daha azdır. Eski çalışma zamanı, elbette ki 1 birim olarak kabul edilmiştir. Toplam hızlanmayı hesaplamak için, 1/.4575 = 2.186 formülünü kullanırız ve toplam hızlanmanın, 2 kattan biraz daha fazla olduğunu görürüz. 20 kat ve 5 kat hızlanan buyrukların, toplam işlem içindeki oranlarının az olması nedeniyle, toplam hızlanmaya fazla bir etkisi olmadığını görebiliyoruz.


## Ardışık Bir Programda Hızlanma.
Bir bölümü p kat kadar hızlandırılmış bir ardışık programın azami hızlanması,
Azami Hızlanma ≤p/1 + f * (p - 1) olarak bulunur. Burada f (0.0 lt; f lt; 1.0), hızlandırmadan önce, hızlandırılmamış bölümün tuttuğu süredir. Örneğin:
  - Eğer B bölümü (mavi) 5 kat hızlandırılırsa, p = 5 t_n (kırmızı) = 3 saniye, t_i (mavi) = 1 saniye ve
 - : f = t_n / (t_n + t_i) = 0.75
 - : Azami hızlanma ≤5/1 + 0.75   (5 - 1) = 1.25
  - Eğer A bölümü (kırmızı) 2 kat hızlandırılrsa, p = 2, t_n (mavi) = 1 saniye, t_i (kırmızı) = 3 saniye ve
 - : f = t_n / (t_n + t_i) = 0.25
 - : Azami hızlanma ≤2/1 + 0.25   (2 - 1) = 1.60 (Daha iyi!)
Buna göre, A'yı 2 kat hızlandırmak, B'yi 5 kat hızlandırmaktan daha iyi sonuç vermektedir.
  - A'yı 2 etmeniyle hızlandırmak, toplam program hızında +60% 'lık bir artış sağlamaktadır.
  - B'yi 5 etmeniyle hızlandırmak ise ki bu süreç A'yı hızlandırmaktan daha fazla efor gerektirecektir, toplam program hızında yalnızca +25%'lik bir artış sağlayacaktır.


## Paralellik.
Paralelliğin özel bir durumunda Amdahl yasası der ki; eğer F ardışık (paralel değil) bir işlemin bir parçasıysa ve (1 - F) paralelleştirilebilir kısımsa, N işlemcili kullanarak azami hızlanma:
1/F+1-F/N ‘dır.Limitini aldığımızda N sonsuza yönelir, azami hızlanma 1/F’e yönelir. Uygulamada maliyet/başarım oranı, (1-F)/N, F’ten küçük olduktan sonra N arttıkça düşer.
Örneğin, F %10 ise problemin azami hızlanması 10’un çarpanları kadar olabilir. N’in büyüklüğünün bir önemi yoktur. Bunun için, paralel işlem sadece ya az sayıda işlemci için ya da F‘in çok küçük olduğu problemlerde kullanışlıdır. Paralel programlamanın büyük bir kısmı F değerini olabilecek en küçük değerde tutmayı amaçlar.


## Sınırlamalar.
Amdahl’ın yasasına göre, kuramsal azami hızlanma, N işlemci ile N olur. Bu doğrusal (lineer) hızlanma olarak adlandırılır. Ancak uygulamada N işlemcisi olan bir makinede N’den fazla hızlanma olması görülmeyen bir durum değildir. Buna üstün doğrusal hızlanma denir. Bunun olası bir nedeni önbellek toplanmasıdır. Paralel bilgisayarlarda, sadece işlemci sayılarının değiştirilmesiyle değil, farklı işlemcilerin toplanan önbelleklerin büyüklüğü ile yapılır. Daha büyük toplanan önbellek boyutu ile daha fazla veri kümesi veya veri kümesinin tamamı önbelleklere sığabilir. Böylece bellek erişim zamanı düşer ve ek hızlanma sağlanır.


## Amdahl’ın Başparmak Kuralı.
Amdahl’ın başparmak kuralı, bilgisayarın desteklediği her saniye başına buyruk için 1 bayt bellek ve 1 bit/saniye G/Ç gerektiğidir. Bu Amdahl’ın Diğer Kanunları başlığı altında işlenmektedir.