İçeriğe atla

Çarpma algoritmaları

Çarpma algoritmaları, çarpma işlemi için gereken sonlu işlemler kümesidir. Çarpma işlemi, aritmetik işlemlerinde sık kullanılan ve bilimsel uygulamalarda önemli rolü olan, temeli aslında toplama ve kaydırma işlemlerine dayanan aritmetiksel bir işlemdir. Toplama işleminden daha karmaşıktır ve daha çok zaman alır aynı zamanda daha çok alan gerektirir.

Bilimsel programdaki komutların hemen hemen %9’u çarpma işlemi gerektirmektedir. Çarpma işlemi bir işlemcide 2 ile 8 saat çevrimi arası kadar bir zamanda yapılabilir. Bu yüzden, bir işlemcinin başarımını belirleyen en kritik ve önemli faktörlerden biri de çarpma algoritmalarının iyileştirilmesiyle birlikte bunların donanımda hızlı ve etkin uygulamasıdır.

Çarpma yöntemleri

Sıralı toplama/Kaydırma çarpma algoritması

Sıralı toplama/kaydırma algoritmasının temelinde çarpan sayısının en anlamsız basamağının bitinin değerine bakılır.

Çarpma algoritması 1. yol

Çarpma algoritması 1. yol

Çarpma algoritmalarından ilkinin yapılabilmesi için 64-bit çarpılan yazmacı, 64-bit AMB, 64-bit çarpım yazmacı, 32-bit çarpan yazmacı gerekmektedir. Bu algoritmanın çalışması için sağ taraftaki gibi bir donanıma ihtiyacı vardır. Algoritma genel olarak şu şekilde çalışmaktadır (n değeri 32 olarak alınmıştır): Her bir saat çevriminde çarpan bir bit sağa kaydırılır ve bu bitin değeri dikkate alınır. Son bit eğer '1' ise çarpılan değer çarpıma eklenir ve sonuç çarpım yazmacına yazılır. Bu işlemden sonra çarpılan yazmacı sola 1 bit kaydırılırken, çarpan yazmacını da sağa 1 bit kaydırılır. Çarpılan kaydırılırken sağına sıfırlar eklemeyi de unutmamak gerekir. Ancak ilk aşamada kontrol edilen çarpan yazmacının son biti '0' ise o zaman sadece çarpılan yazmacı sola 1 bit kaydırılırken, çarpan yazmacını da sağa 1 bit kaydırılır. Aşağıdaki kısa örnek algoritmanın nasıl işlediği hakkında bilgi vermektedir.

Yukarıdaki örnekte de görüldüğü gibi çarpan sayısının son biti 1'dir. Bu sebepten algoritma sol taraftaki yolu izler ve çarpılan sayı (0000 0010) çarpıma eklenir, böylece ikinci satırdaki çarpım sonucu bulunur, daha sonra çarpılan yazmacı 1 bit sola kaydırılır ve 2. satırdaki sonuç (0000 0100) elde edilmiş olur. Aynı şekilde algoritmayı takip edecek olursak çarpan yazmacı da sağa 1 bit kaydırılır ve ikinci satırdaki 0001 sonucu elde edilir. Yine aynı şekilde ikinci satırda da çarpan değerinin son biti 1 olduğu için aynı yöntem uygulanır; böylece üçüncü satırı elde etmiş oluruz. Üçüncü satırda çarpan bitinin 0 olduğu görülmektedir bu sebepten algoritmayı uygularken, algoritmanın sol kolu takip edilir ve çarpım yazmacına herhangi bir değer eklemeyeceğimizden bu sonucu değiştirmez ve aynen kalır; dolayısıyla çarpan yazmacı sürekli 0000 lardan oluşacağı için yani her defasında son biti 0 olacağı için sonuç aynı kalır.

Çarpma algoritması 2. yol

Çarpma algoritması 2. yol

Bu algoritmalarda ikincisinin yapılabilmesi için ise 32-bit çarpılan yazmacı, 32-bit AMB, 64-bit sonuç yazmacı, 32-bit çarpan yazmacı gerekmektedir. Algoritmanın işleyişi aşağıdaki gibidir: İlk yolda olduğu gibi yine çarpan yazmacının son bitine bakılır. Son bit eğer '1' ise çarpılanla çarpımın sol yarısı toplanır ve sonuç çarpım yazmacının sol yarısına yazılır. Bu işlemden sonra çarpım yazmacı sağa 1 bit kaydırılırken çarpan yazmacı da sağa 1 bit kaydırılır. Son bit '0' ise herhangi bir işlem yapılmaksızın yine çarpım yazmacı sağa 1 bit kaydırılırken çarpan yazmacı da sağa 1 bit kaydırılır. Sonuç olarak çarpım yazmacı çarpanın boyutu kadar bir alanı israf eder. Çarpım yazmacının israf edilen alanı azaldıkça çarpandaki geri kalan bitlerin sayısı da azalır. Daha sonrasında ise n değeri kontrol edilir ve eğer 32'den küçükse döngü devam eder, değilse döngüden çıkar. Kısacası algoritmada n değeri 32 alındığı için bu algoritma 32 kez tekrarlanacaktır.

Çarpma algoritması 3. yol

Çarpma algoritmalarının 3. yolunda 32-bit çarpılan yazmacı, 32 -bit AMB, 64-bit çarpım yazmacı, (0-bit çarpan yazmacı) gerekmektedir. Algoritmanın işleyişi ise şu şekilde çalışmaktadır: Her bir saat çevriminde çarpım bir bit sağa kaydırılır ve bu bitin değeri test edilir. Çarpım yazmacının son bitinin değeri '0' ise sadece kaydırma işlemi gerçekleşirken, bitin değeri '1' ise çarpılan sayının değeri çarpımın sol yarısına eklenir ve sonuç çarpım yazmacının sol yarısına yazıldıktan sonra değeri bir bit sağa kaydırılır. Çarpan sayının tüm bitleri test edildikten sonra 2n uzunluğunda sonuç elde edilir. Burada gecikme değeri en fazla n çevrim zamanı kadar olur.[1]

Resim galerisi

Kaynakça

  1. ^ "Strassen algorithm for polynomial multiplication". everything2. 10 Ağustos 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2013. 

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">AES</span> Şifreleme standartı

AES, elektronik verinin şifrelenmesi için sunulan bir standarttır. Amerikan hükûmeti tarafından kabul edilen AES, uluslararası alanda da defacto şifreleme (kripto) standardı olarak kullanılmaktadır. DES'in yerini almıştır. AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.

<span class="mw-page-title-main">Aritmetik mantık birimi</span>

Aritmetik mantık birimi (AMB) aritmetik ve mantık işlemlerini gerçekleştiren bir dijital devredir. AMB en basit işlemi gerçekleştiren mikro denetleyiciden, en karmaşık mikroişlemciye sahip bir bilgisayara kadar tüm işlemcilerin yapıtaşıdır. Modern bilgisayarların içinde bulunan mikroişlemcilerin ve ekran kartlarının içinde çok karışık ve güçlü AMB'ler bulunmaktadır. AMB kavramına ilk olarak 1945 yılında matematikçi John von Neumann EDVAC adlı yeni bir bilgisayar üzerine bulgularını anlatan raporunda değinmiştir.

<span class="mw-page-title-main">Çarpma</span>

Çarpma, temel aritmetik işlemlerden biridir. Sayılarda çarpma, çarpılan sayının çarpan sayı kadar adedinin toplamının alınması işlemidir.

Veri yolu, bilgisayar yapısında, bilgisayarın içindeki parçalar arasında ya da bilgisayarlar arasında verileri ya da gücü transfer eden bir alt sistemdir ve genellikle aygıt yürütme yazılımı tarafından kontrol edilir. Nokta- nokta bağlantısının tersine, veri yolu, birçok çevresel aygıtı aynı takım kablo ile mantıksal olarak bağlayabilir. Her bir veri yolu kendi bağlayıcılarını fiziksel fiş aygıtlarına, kartlara veya kabloların tümüne karşı tanımlar.

Kayan noktalı sayılar gerçel sayıların bilgisayar ortamındaki gösterim şekillerinden biridir. Gerçek dünyada sayılar sonsuza kadar giderken, bilgisayar ortamında bilgisayar donanımının getirdiği sınırlamalardan dolayı bütün sayıların gösterilmesi mümkün değildir. Bununla birlikte gerçekte sonsuza kadar giden birtakım değerler bilgisayar ortamında ortamın kapasitesine bağlı olarak yaklaşık değerlerle temsil edilirler. Bu sınırlamaların etkisini en aza indiren, sayıların maksimum miktarda ve gerçeğe en yakın şekilde temsilini sağlayan sisteme "Kayan-Noktalı Sayılar" sistemi denir. Kayan-Noktalı sayılar sistemi, bir sayı ile 10'un herhangi bir kuvvetinin çarpımı şeklinde sıklıkla kullanılan bilimsel gösterime oldukça benzeyen bir notasyona sahiptir ve en sık kullanılan IEEE 754 standardına göre şekillendirilmiştir.

IEEE Kayan Nokta Aritmetiği Standardı kayan noktalı sayıların gösteriminde en çok kullanılan standarttır. İkilik sistemdeki sayılar bilimsel gösterim ile gösterildikten sonra işaret, üst ve anlamlı kısımdan oluşan üç parça şeklinde ifade edilebilirler. Bu gösterime sonsuz, sayı değil ve sıfırın gösterimi dahildir. IEEE 754 standardına göre sayılar tek duyarlı ve çift duyarlı şekilde gösterilebilirler.

Döngüsel artıklık denetimi, çoğunlukla sayısal şebekelerde ve depolama cihazlarında kullanılan ve ham veride yapılan hatalı değişimleri algılayan, uygulaması kolay ve güvenliği güçlü bir hata bulma yöntemidir.

<span class="mw-page-title-main">Kesir</span>

Kesir, bir birimin bölündüğü parçalardan birinin veya birkaçının bütüne oranını ifade eden sayı. Kesir kavramı, ondalık sayılardan ve yüzdelerden ayırmak amacıyla sıklıkla sadece "bayağı kesirleri" tanımlamak için kullanılır.

<span class="mw-page-title-main">Yazmaç öbeği</span>

Yazmaç öbeği, bir merkezi işlem birimindeki işlemci yazmaçlarının bir dizisini ifade etmektedir. Modern tümleşik devre tabanlı yazmaç öbekleri genellikle çok portlu hızlı durağan rastgele erişimli bellekleri (SRAM) kullanılarak sistemlere tümleştirilmektedirler. Bu tür rastgele erişimli bellekleri kullandıkları okuma ve yazma girişlerine göre ayrılır, fakat normal çok portlu durağan rastgele erişimli bellekler okuma ve yazma işlemlerini aynı girişleri kullanarak gerçekleştirebilmektedirler.

<span class="mw-page-title-main">Alpha 21064</span>

Alpha 21064, Alpha(Alpha APX olarak ortaya çıkan) buyruk kümesi mimarisini(ISA) oluşturan Digital Equipment Corporation tarafından geliştirilmiş bir mikroişlemcidir. 1994 yılında ismi değiştirilmeden önce DECchip 21064 olarak bilinirdi.Ayrıca EV4 kod adıyla da bilinmektedir. 1992 şubat ayında tanıtılmış ve aynı yıl eylül ayında yeni sürüm olanağı sağlanmıştır.21064, ilk ticari Alpha ISA uygulamasıdır. Ayrıca Ekim 1993'te, 21064'ten türeyen Alpha 21064A ticari amaçla kullanılan ilk mikroişlemci olmuştur.

<span class="mw-page-title-main">Alpha 21164</span>

Alpha 21164, aynı zamanda Alpha buyruk kümesi mimarisini geliştirmiş olan Digital Equipment Corporation tarafından geliştirilmiş, EV5 kod adıyla da bilinen bir mikroişlemcidir. Alpha 21164 Digital'in en çok satışı yapılan mikroişlemcisi Alpha 21064A'yı takiben 1995 yılı Ocak ayında tanıtılmıştır. Onu 1998 yılında 21264 izleyecektir.

<span class="mw-page-title-main">Alpha 21264</span>

Alpha 21264 1996 yılı Ekim ayında Digital Equipment Corporation tarafından indirgenmiş komut takımı bilgisayarı(RISC) mikroişlemcisi olarak tanıtılmıştır. 21264 Alfa işlemcisi Komut kümesi ile tanımlanmıştır.

<span class="mw-page-title-main">Napier'in kemikleri</span> John Napier tarafından icat edilmiş matematiksel aygıt

Napier'in kemikleri, John Napier tarafından oluşturulan bir abaküstür. Pratik olarak çarpma, bölme ve karekök alma işlemleri için kullanılabilir. Napier, bu eserini Rabdology adıyla 1617'nin sonunda, İskoçya Edinburgh'da yayımlamıştır. Napier'in kemikleri, Napier'in adıyla ilişkili olan logaritma ile aynı şey değildir.

<span class="mw-page-title-main">BCD kodu</span>

BCD kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edilir.

Arama algoritmaları, bilgisayar biliminde seçili özelliklere göre istenilen bilgileri bulan algoritmalardır. Listeler, metinler ve şekiller üzerinde çalışırlar.

NetBurst, İntel'in 2000 yılında piyasaya sürdüğü Pentium 4 işlemci markasının mikromimarisine verilen isimdir. 2006 Temmuz'unda Core mikromimarisinin çıkışına kadar İntel işlemcilerin mikromimarisi olmuştur. Selefi P6 mikromimarisine göre en önemli özelliği derin boru hattı yapılanmasıyla avantaj sağladığı yüksek saat sıklığıdır. Temel olarak dört ana parçadan oluşmaktadır: Sıralı(ing. In-order) Ön-Uç(ing. Front-end), Sırasız(ing. out-of-order) yürütme birimi, Tam sayı ve kayan nokta yürütme birimleri ve bellek altdizgesi.

<span class="mw-page-title-main">Uluslararası Veri Şifreleme Algoritması</span>

Uluslararası Veri Şifreleme Algoritması (IDEA), 1991 yılında Xuejia Lai ve James Massey tarafından tasarlanmış bir blok şifreleme algoritmasıdır. Bilinen en güçlü algoritmalardandır.

<span class="mw-page-title-main">Temel aritmetik</span>

Temel aritmetik, aritmetiğin en basit kısmıdır ve toplama, çıkarma, çarpma, bölme gibi işlemlerden oluşur.

Kasumi, UMTS, GSM, GPRS gibi mobil sistemde kullanılan bir blok şifrelemedir. Bir telefon konsorsyumu ve mobil dünyaya yön veren bir grup projesi olan 3GPP için tasarlanmıştır. KASUMI adını orijinal Japoncadaki pus anlamına gelen kelimeden alır. UMTS yani 3G sistemlerde bütünlük ve gizlilik için kullanılır. GSM'de A5/3 anahtar dizisi oluşturmak için, GRPS’de ise GEA3 anahtar dizisi oluşturmak için kullanılır.