LEVENSHTEIN MESAFE ALGORİTMASI İÇİN BİR DONANIM MODÜLÜ TASARIMI

Benzer belgeler
DİZE EŞLEŞTİRME BAŞARIMINI İYİLEŞTİRMEK İÇİN FPGA TABANLI BİR DONANIM MODÜLÜ TASARIMI

Yüzde tabanlı String Eşleme Problemi için yeni bir donanım modülü tasarımı. A hardware module design for percentage-based String Matching Problem

FPGA TABANLI ORTALAMA GÖRÜNTÜ FİLTRESİ TASARIMI FPGA BASED MEAN IMAGE FILTER DESIGN

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula

KLASİK ÇARPMA ALGORİTMALARININ DONANIMSAL SİMÜLASYONLARI VE PERFORMANS DEĞERLENDİRİMİ

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır.

Gömülü Sistemler. (Embedded Systems)

PERFORMANCE COMPARISON OF KARATSUBA AND NIKHILAM MULTIPLICATION ALGORITHMS FOR DIFFERENT BIT LENGTHS

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ ÖZET FONKSİYON TABANLI GÜVENLİ BİR RFID PROTOKOLÜNÜN FPGA ÜZERİNDE GERÇEKLENMESİ

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

Daha komplike uygulamalar elektronik ticaret, elektronik kimlik belgeleme, güvenli e-posta,

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

PLC (Programlanabilir Kontrol Cihazı) TABANLI SİSTEMLERİN İNTERNET ÜZERİNDEN İZLENMESİ

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

VHDL Kullanarak FPGA ile Yüksek Kapasiteli Tam Çıkarıcı Devre Tasarımı

T.C. İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ BİLİMSEL ARAŞTIRMA PROJELERİ KOORDİNASYON BİRİMİ

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Excel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo

OSPF PROTOKOLÜNÜ KULLANAN ROUTER LARIN MALİYET BİLGİSİNİN BULANIK MANTIKLA BELİRLENMESİ

Bilgisayar Sistemlerine Genel Bakış

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

BM-311 Bilgisayar Mimarisi

YZM 2116 Veri Yapıları

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Microsoft Office Excel 2007

Fırat Üniversitesi Personel Otomasyonu

2. SAHADA PROGRAMLANABİLİR KAPI DİZİLERİ (FPGA)

FPGA ile Gömülü Sistem Tasarımına Giriş

Veri Tabanı-I 5.Hafta

Veritabanı Uygulamaları Tasarımı

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

T.C. MARDİN ARTUKLU ÜNİVERSİTESİ MİDYAT MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI (UZAKTAN ÖĞRETİM) ÖNLİSANS PROGRAMI Eğitim Öğretim Yılı

ISK116 - Bölüm 1. Grup Teknolojisi

80C51 Mikrodenetleyicilerinde Timer-Counter Yapılarının FPGA Mimarileri Kullanılarak Geliştirilmesi. Özdemir ÇETİN 1. Bölümü, Adapazarı

KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI

VHDL DONANIM TANIMLAMA DİLİD ve FPGA, CPLD DONANIMLARI. Yard. Doç. Dr. Özdemir ÇETİN

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

FIRAT ÜNİVERSİTESİ PERSONEL OTOMASYONU

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

Ara Katman Yazılımları İçin İşlemci Değer Birimi Lisanslaması

Bulanık Mantık Tabanlı Uçak Modeli Tespiti

T E M E L K AV R A M L A R. Öğr.Gör. Günay TEMÜR / Teknoloji F. / Bilgisayar Müh.

Zeki Optimizasyon Teknikleri

Mikroişlemcili Sistemler ve Laboratuvarı

Çalışma Açısından Bilgisayarlar

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

AKILLI KAVŞAK YÖNETİM SİSTEMİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

UZAKTAN EĞİTİM MERKEZİ

BİL 423 Bilgisayar Mimarisi 1. Ara Sınavı

Bilgisayar Mimarisi Nedir?

Digital Design HDL. Dr. Cahit Karakuş, February-2018

Bir ağ içerisinde bulunan tüm cihazların bir IP adresi olmak zorundadır. Cihazlar haberleşmelerini bu IP adresi üzerinden sağlar ancak cihazların

BM-311 Bilgisayar Mimarisi

BİL 810 İnşaat Mühendisliğinde Bilgisayar Uygulamaları

Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi


Motivasyon Matrislerde Satır İşlemleri Eşelon Matris ve Uygulaması Satırca İndirgenmiş Eşelon Matris ve Uygulaması Matris Tersi ve Uygulaması Gauss

SEÇİM İŞLEMLERİ. Yüzde Hesaplamaları HÜCRE KOPYALAMA & TAŞIMA FORMÜL GİRİŞİ FORMULLER 3) DÖRT İŞLEM. a) Bugün: b) Şimdi: c) Topla: d) Çarpım:

ISSN : Duzce-Turkey

ELEKTRONİK TABLOLAMA Aritmetiksel işlemler ve mantısal karşılaştırmaların yapıldığı programlar elektronik tablolama programlarıdır.

Yazılım Mühendisliği 1

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bilgisayar Programlama. 1.Hafta

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT

(Random-Access Memory)

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

MATLAB A GİRİŞ. EE-346 Hafta-1 Dr. Ayşe DEMİRHAN

Gelişmiş Şifreleme Standardının - AES - FPGA Üzerinde Gerçeklenmesi

AES (Advanced Encryption Standard)

FPGA Mimarisi. Bilgisayar Mimarisinde Yeni Yaklaşımlar. Mehmet AKTAŞ

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

DENEY 3: DTMF İŞARETLERİN ÜRETİLMESİ VE ALGILANMASI

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

Fiziksel Tasarım Konuları. Dosya Organizasyon Teknikleri Kayıt Erişim Yöntemleri Veri Yapıları

Mikroçita. Mikroçita Rapor 2:

BÖLÜM FORMÜLLER ve OTOMATİK TOPLAM Formüller

FPGA ile Kablosuz Görüntü Aktarımı. Yusuf Onur Koçberber

ERCİYES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTUSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİMDALI. I. GENEL BİLGİLER Ders Adı

BioAffix Ones Technology nin tescilli markasıdır.

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Bilgisayar Temel kavramlar - Donanım -Yazılım Ufuk ÇAKIOĞLU

Transkript:

LEVENSHTEIN MESAFE ALGORİTMASI İÇİN BİR DONANIM MODÜLÜ TASARIMI İbrahim ŞAHİN Bilgisayar Mühendisliği Bölümü, Teknoloji Fakültesi, Düzce Üniversitesi, Düzce, TÜRKİYE ibrahimsahin@duzce.edu.tr Günay TEMÜR Kaynaşlı Meslek Yüksekokulu, Düzce Üniversitesi, Düzce, TÜRKİYE gunaytemur@duzce.edu.tr ÖZET Bilgisayar ortamında birçok uygulama kelime arama işlemine ihtiyaç duyar. Bu arama işlemlerini tam eşleşmeli ya da benzerlik tabanlı kelime arama işlemleri olarak iki gruba ayırmak mümkündür. Web sunucularında ve Internet tabanlı arama motorlarında yapılan arama işlemlerinde veya ofis uygulamalarında heceleme kontrolünde yanlış yazılan bir kelimeye en yakın kelimelerin bulunarak, kullanıcıya değişik alternatiflerin sunulmasında, benzerlik tabanlı algoritmalar kullanılmaktadır. Literatürde geliştirilmiş birçok benzerlik tabanlı arama algoritması bulmak mümkündür. Arama motoru gibi aynı anda binlerce kişinin erişerek arama yaptığı ortamlarda algoritmanın performansı çok önemlidir. Geliştirilen algoritmalar her zaman istenen performansı gösterememekteler, ayrıca sistem üzerinde ek yük oluşturmaktadırlar. Diğer taraftan bu algoritmaların donanım tabanlı olarak gerçeklenmesi ile hem daha hızlı sonuç elde etmek hem de algoritmanın üzerinde çalıştırıldığı sistemin yükünü hafifletmek mümkündür. Bu amaçlar doğrultusunda bu çalışmada benzerlik tabanlı kelime arama algoritmalarından Levenshtein Mesafe algoritması için FPGA çipleri üzerinde çalışabilecek bir donanım modülü tasarlanmıştır. Tasarlanan modül Xilinx in Virtex 6 (XC6VLX75T) FPGA çipi için sentezlenerek gerçeklenmiştir. Modülün çalışma performansı seçilen iki farklı bilgisayaralar üzerinde çalışan yazılım versiyonu ile karşılaştırılmıştır. Karşılaştırma sonucunda önerilen modülün yazılım tabanlı Levenshtein mesafe algoritmasına göre 29000 ile 49000 kat daha hızlı sonuç ürettiği gözlenmiştir. Anahtar Kelimeler: Mesafe Algoritmaları, Heceleme, Levenshtein Uzaklığı, Donanım Modülü, FPGA A HARDWARE MODULE DESIGN FOR LEVENSHTEIN DISTANCE ALGORITHM ABSTRACT Many computer applications require string or word search operations. These search operations can be classified in two groups which are exact and approximate string matching. Approximate string matching is used in search operations performed on web servers, Internet based search engines, and spelling checking on office applications to offer users several alternative results when the users enter misspelled words. It is possible to find several approximate string matching algorithms in the scientific literature. Performance of the matching algorithms is very important in the computing environments such as web servers and search engines where several hundreds of users access to the serves and performs search operations simultaneously. Matching algorithms may not provide sufficient performance and moreover they add additional burden to the systems. On the other hand, these algorithms can be speeded up and the overhead on the computer system can be eliminated when they are implemented as hardware. In this research work, to overcome the disadvantages of the matching algorithms, a hardware module is proposed for Levenshtein Distance algorithm. The module is designed to be used with FPGA chips. It is synthesized and implemented for Xilinx s Virtex-6 (XC6VLX75T) FPGAs. The module s performance is compared to the software version running on two different computers. Results showed that using the module, Levenshtein Distance can be calculated between 29000 and 49000 times faster than software version. Keywords: Distance Algorithms, Spell Checking, Levenshtein Distance, Hardware Module, FPGA

GİRİŞ Bilgisayar ortamında kelime arama işlemi sırasında aranan bir kelimenin var olan bir kelime dizini içerisindeki diğer kelimeler ile benzerliğinin belirlenebilmesinde mesafe algoritmalarından yararlanılmaktadır. Bu algoritmalara, özellikle günümüz arama motorları, kelime işlemci programları, virüs tarama programları veya DNA GEN eşlemeleri gibi işlemlerde ihtiyaç duyulmaktadır. Aranacak kelimenin yanlış, fazla veya eksik girilmesi gibi durumlarda çalışan mesafe algoritmaları bize aradığımız kelime dizisi içerisinde en yaklaşık sonuçları sunabilme özelliğine sahiptir. Edit Distance veya Spell Checking olarak bilinen bu mesafe algoritmaları, iki kelime arasındaki karakter farklılığını sayısal olarak hesaplarlar. Hesaplanan bu değer bize iki kelime arasında kaç karakterin uyumsuz olduğunu söyler. Sonuçta hedef dizi içerisindeki kelimelerden benzerliğin en fazla olduğu kelime (ki bu mesafenin en kısa olduğu kelimedir) bize demek istediğiniz bu mu diye sunulur. Algoritma sonucunun 0 çıkması ise iki kelimenin aynı olması demektir. Sayısal olarak hesaplanan sonuçlar algoritma için işlem maliyeti demektir ve işlem maliyeti arttıkça iki kelime arasındaki benzerlikte azalmaktadır. Internet ortamında kaçınılmaz olarak kullandığımız arama motorlarında, aranmak istenen fakat yanlış yazılmış bir kelimenin arama motoru tarafından düzeltilmesi işlemleri, mesafe algoritmaları sayesinde gerçekleştirilmektedir. Bu algoritmalar, daha önceden gerçekleştirilmiş arama kayıtlarında tutulan kelime bilgileri veya programların geniş kelime veri tabanları sayesinde kullanıcının yanlış yazmış olduğu kelime yerine tahmini en düşük maliyetli kelime sonuçlarını sunmaktadırlar. Şekil 1.1 de görüleceği gibi kullanıcının deneme yerine denme kelimesini yazdığını belirten mesafe algoritmaları, kelime dizisi içerisindeki en yakın kelime için sonuçları bize sunmuştur. Yine Şekil 1.2 de de bir kelime işlemci programı içerisinde yanlış yazılmış bir kelimeye ait maliyeti en düşük önerilerin listelendiği görülmektedir. Literatürde kelimeler arasında benzerlik mesafesini hesaplama konusunda geliştirilmiş birçok algoritma bulmak mümkündür. En çok bilinen algoritmalara örnek olarak Levenshtein Distance [1], Tanimoto Similarty [2], Jaccard Distance [3], Hamming Distance [4] verilebilir. Şekil 1.1: Arama Motorunda Aranan Kelimenin Düzeltilmesi Şekil 1.2: Kelime İşlemci Programı Tahmini Kelime Önerileri

Bilindiği gibi mesafe algoritmaları, intihal programları, kelime işlemci programları ve binlerce kişinin aynı anda ulaşmak istediği birçok arama sitesi gibi web sunucuları tarafından ihtiyaç duyulan algoritmalardır. Bu tür uygulamalar için algoritmanın çalışma zamanı, istenilen verilerin en kısa sürede kullanıcılara ulaştırılması bakımından çok önemlidir. Ayrıca mesafe algoritmalarını değerli yapan bir diğer unsurda, geniş bir veri tabanı üzerinde uygulandığında yanlış yazılmış arama veya örneklemeler için istenilen maliyetteki düzeltmelerin sonuçlarını sunmasıdır. Seçilen algoritmanın hızlı dönüt vermesi birincil önceliktir. Fakat bu algoritmalar, yazılımsal olarak gerçeklendiğinde özellikle sonuçların mikro saniye mertebesinde hesaplanması istendiği durumlarda hem uzun zaman almakta hem de üzerinde çalıştıkları web sunucularda veya bilgisayarlarda ekstra yük oluşturmaktadırlar. Diğer bir taraftan bu algoritmalar özel olarak tasarlanmış modüllerle donanımsal olarak gerçeklenebilirler. Böylece hem çok daha kısa sürede sonuç elde edilmesi, hem de sisteme eklenecek ekstra donanım sayesinde sunucu ya da bilgisayar üzerinde yükün hafifletilmesi mümkündür. Bu amaçlar doğrultusunda bu çalışmada yaygın olarak kullanılan mesafe algoritmalarından Levenshtein algoritması için bir donanım modülü tasarlanmıştır. Tasarlanan modül, Alanda Programlanabilir Kapı Dizileri (Field Programmable Gate Array (FPGA)) çipleri kullanılarak gerçeklenmiştir. Çalışma kapsamında geliştirilen modül çeşitli test durumları üzerinde denenmiş ve modülün ürettiği sonuçlar doğrulanmıştır. Aynı veriler, değişik özelliklere sahip genel amaçlı bilgisayarlar üzerinde yazılım olarak denenmiş, elde edilen sonuçlar tasarlanan modülün veri işleme hızı ile karşılaştırılmıştır. Test sonuçları tasarlanan donanım modülünün yazılım tabanlı algoritmaya göre 29000 ile 49000 kat daha hızlı sonuç verdiğini göstermiştir. GENEL BİLGİLER Mesafe algoritmaları Mesafe algoritmaları, bilgisayar ve matematik dünyasında farklı iki karakter dizisi arasındaki benzerliği hesaplayan algoritmalardır. Bu algoritmaların bir kısmı benzerliği hesaplarken diğer bir kısmı farklılığı hesaplasa da genelde mesafe algoritmaları olarak bilinirler. Günümüzde bu algoritmalar, arama motorları veya kelime işlemci programlarının dışında; kopya içerik tespiti (intihal), parmak izi tanıma, virüs tarama, DNA/RNA analizi gibi alanlarda yoğun bir şekilde kullanılmaktadır. En sık kullanılan algoritmalar bu bölümde kısaca açıklanmıştır. Levenshtein Mesafe Algoritması En çok bilinen mesafe algoritmalarının başında gelen Levenshtein Mesafesi iki kelimeyi harf harf karşılaştırarak, bir kelimenin diğerine dönüştürülmesi için gerekli olan işlem maliyetini hesaplamaktadır. Maliyet hesaplamada kullanılan matematiksel formül (1) de verilmiştir. max(i, j) if min(i, j) = 0, lev a,b (i 1, j) + 1 lev a,b (i, j) = min { lev a,b (i, j 1) + 1 diğer, lev { a,b (i 1, j 1)+1 ai b j Formül de verilen denklemin hesaplanabilmesi için geliştirilen Levenshtein algoritması Şekil 2.1 de verilmiştir. Algoritma hesaplama sonucunda bir tam sayı değeri vermektedir. Bu değer bir kelimenin diğerine dönüştürülmesi için gerekli işlem adedinin değeridir. Bir kelimenin diğerine dönüşmesi için yapılabilecek işlemler ise Silme (Deletion), Yer Değiştirme (Substitution), Ekleme (Insertion) şeklindedir [5]. İşlem türüne bakılmaksızın her bir işlem bir (1) maliyet değerine sahiptir. Şekil 2.2 de bir kelimenin diğerine dönüşüm için gerekli maliyeti gösteren örnek bir uygulama görülmektedir. Verilen örnek girdilere göre tablonun son hücresinde gösterilen maliyet kadar işlem gerçekleştirerek accountatn kelimesi accountants kelimesine dönüştürülmektedir. Böylece algoritma tarafından yanlış yazılmış olabileceği tahmin edilen accountatn kelimesi için accountants mı demek istediniz diye sunulmaktadır. (1)

int LevenshteinDistance(char s[1..m], char t[1..n]) { // d bir tablodur, m+1 satır ve n+1 sütun declare int d[0..m, 0..n] for i from 0 to m do d[i, 0] := i for j from 0 to n do d[0, j] := j for i from 1 to m do for j from 1 to n do { if s[i] = t[j] then cost := 0 else cost := 1 d[i, j] := min ( d[i-1, j] + 1, // del. d[i, j-1] + 1, // ins. } } return d[m, n] d[i-1, j-1] + cost) // subs. Şekil 2.1: Levenshtein Mesafe Algoritması [12] j # a c c o u n t a t n i # 0 1 2 3 4 5 6 7 8 9 10 a 1 0 1 2 3 4 5 6 7 8 9 c 2 1 0 1 2 3 4 5 6 7 8 c 3 2 1 0 1 2 3 4 5 6 7 o 4 3 2 1 0 1 2 3 4 5 6 u 5 4 3 2 1 0 1 2 3 4 5 n 6 5 4 3 2 1 0 1 2 3 4 t 7 6 5 4 3 2 1 0 1 2 3 a 8 7 6 5 4 3 2 1 0 1 2 n 9 8 7 6 5 4 3 2 1 1 1 t 10 9 8 7 6 5 4 3 2 1 2 s 11 10 9 8 7 6 5 4 3 2 2 İşlem Maliyeti Şekil 2.2: Levenshtein Mesafesi İçin Örnek Uygulama Hamming Mesafe Algoritması Hamming mesafesi olarak bilinen algoritma, verilen aynı uzunluktaki iki kelimenin birbirinden ne kadar farklı olduğunun belirlemek için kullanılır. Yani verilen bir kelimenin diğerine dönüşümü için gerekli işlem maliyetini hesaplamaktadır. Hamming mesafe algoritması aynı uzunluktaki iki kelimeyi karşılaştırdığından dolayı sadece yer değiştirme yaparak bir kelimeyi diğerine dönüşümü için gerekli maliyeti vermektedir [6]. Jaccard Mesafe Algoritması Jaccard Mesafesi bir matematiksel hesaplama olup dönüşüm içeren bir yaklaşım değildir. Benzerlik hesabı yapan bu algoritma hesaplamalarda Jaccard Index ini kullanmaktadır. Index basit olarak iki dizi için yapılmış olan özellik çıkarımı sonrasında belirlenir. Özellikten kast edilen, iki kelimenin harf harf veya bi-gram yöntemi ile 2 li gruplar halinde karşılaştırılması işlemidir. Ardından ortak olan özelliklerin sayısının, iki kelimedeki toplam özellik sayısına bölünmesi ile Jaccard Index i elde edilmektedir. İşlem sonucu 0-1 arasında değişen değerlerden oluşacaktır. Sonucun 1 olması bu iki kelimenin birbirine tamamen eşit olduğunu, 0 olması ise kelimelerin hiçbir ortak özelliğinin olmadığını gösterir. Hesaplanan Jaccard Mesafesi 1 den çıkarılır. Burada amaç, benzerlik değerinin tersini hesaplamaktır. Böylelikle birbirine yakın olan kelimelerde benzerliğin artması ile birlikte mesafe azalmaktadır. Bu yaklaşıma göre mesafe benzerliğin tam tersidir [7]. Tanimoto Benzerliği Tanimoto benzerlik fonksiyonu resimler arasında kullanılan bir mesafe algoritması olmasına karşın metinler içinde kullanılabilmekte ve Jaccard Mesafesi ile tanım olarak benzerlik göstermektedir. 1960 lı yıllarda iki resim arasındaki benzerliğin bulunması amacıyla yapılan çalışmalar sonucu ortaya çıkmıştır. Resimlerin bitmap yani 1 ve 0 olarak tutulduğu bir ortamda benzerliklerinin belirlenmesi sırasında, Tanimoto Benzerliği her bir resmin aynı adresinde bulunan mantıksal değerlerin ve, veya operatörleri ile işleme sokularak orantılanmasıyla hesaplanır. Jaccard benzerliğinde de olduğu gibi hesaplama sonucunda 0-1 arasında bir değer bulunur. Benzerliğin 1 olması iki resmin birbirine eşit olduğunu, 0 olması ise resimlerin tamamıyla birbirinden farklı olduğunu gösterir. Yine Jaccard benzerliğinde olduğu gibi Tanimoto mesafesi benzerliğin tersi olarak düşünüldüğünde iki resim veya dizi birbirine ne kadar benzemezse mesafe de o kadar uzaklaşacaktır [8]. FPGA çipleri FPGA çipleri yeniden programlanabilir yapısı ve paralel işlem yapabilme yeteneği ile günümüzde tasarımcılara büyük kolaylık sağlayan tümleşik devrelerdir. FPGA ların son yıllarda gerçek zamanlı ve yüksek başarım gerektiren veri işleme uygulamalarındaki kullanımlarının oldukça yaygınlaştığı

görülmektedir [9][10]. Bir FPGA çipi içerisinde bulunan yapılandırılabilir mantıksal bloklar (Configurable Logic Blocks (CLBs)), ara bağlantılar (interconnecting network) ve giriş/çıkış blokları (Input/Output Blocks (IOBs)) kullanıcının tasarladığı devreye göre programlanabilirler. Bu çipler genellikle diğer devre elemanları ile birlikte bir elektronik kart şeklinde bilgisayar sistemlerine monte edilirler. Kartlar üzerinde FPGA çipinin ve bilgisayar sisteminin erişebildiği paylaşımlı hafıza üniteleri mevcuttur. Ana bilgisayar öncelikle işlenecek veriyi kart üzerindeki hafızaya aktarır. FPGA çipi istenen modül ile yapılandırıldıktan sonra çipler hafızadaki veriyi işlerler. Veri işleme süreci tamamlanınca FPGA çipi bir kesme sinyali ile ana bilgisayara sonuçların hazır olduğunu belirtir. Ana bilgisayar sonuçları kart üzerindeki hafızadan alır. Bu yaklaşımın en önemli avantajı, FPGA çipleri verileri işlerken ana bilgisayarın diğer işleri yürütmesidir. Diğer taraftan FPGA çipi içine yüklenen modül konfigürasyonu sadece özel bir işi yapmak için tasarlanmış bir modülü olduğundan genel amaçlı bilgisayarlara göre çok daha hızlı işlem yapar. LEVENSHTEIN MESAFESİ İÇİN FPGA MODÜL TASARIMI Bu çalışmada, Levenshtein algoritmasının mesafe hesaplama işlemlerini PC tabanlı yazılımsal çözümlere göre çok daha hızlı gerçekleştirebilecek FPGA tabanlı bir donanım modülü tasarlanmıştır. Tasarlanan modül, iki kelime arasındaki farklılığın ne kadar işlem maliyeti ile giderilebileceğini yani bir kelimenin diğerine dönüştürülmesindeki gerekli işlem sayısını yazılım versiyonuna göre çok daha kısa sürede hesaplamaktadır. Modül dört farklı seviyede hiyerarşik olarak tasarlanmış olup Şekil 3.1 de en üst seviye (birinci seviye) blok diyagramı görülmektedir. Modül 8 bitlik VeriGirişi girişi ile birlikte birer bitlik LoadA, LoadB, LoadC, Clock, Reset girişlerine sahiptir. Ayrıca hesaplama sonucunda mesafe değerinin alındığı 5 bitlik bir Mesafe çıkışı mevcuttur. VeriGirişi (7:0) Clock LaodA LoadB LoadC Reset LEVENSHTEIN MODÜLÜ Mesafe (7:0) Şekil 3.1: Birinci Seviye Blok Diyagram Şekil 3.2 de modülün ikinci seviye blok diyagramı görülmektedir. A00 - A15 ve B00 B15 kaydedicileri VeriGirişi nden gelen her iki kelimenin karakterlerini tutan kaydedici zincirleridir. İlk kelime LoadA=1 ve LoadB=0 sinyalleri ile A kaydedicilerine yüklenirken sinyallerin değişimi ile (LoadA=0 ve LoadB=1) diğer kelime B kaydedicisine yüklenir. Bu kaydediciler, karakterlerin sıra ile gelerek ilk kaydediciden son kaydediciye doğru ilerleyeceği şekilde tasarlanmıştır. A ve B kaydedicileri birer yürüyen merdiven gibi düşünülebilir. Gelen ilk karakter her clock ile birlikte bir sonraki kaydediciye çıkış olarak aktarılmaktadır. Aktarım bittikten sonra LoadA ve LoadB sinyalleri 0 a çekilir ve LoadC=1 yapılarak mesafe hesaplama işlemi başlatılır. Satır ve sütün hesaplamalarının başlangıcında kullanılan 0 dan 16 ya kadar sıralı değerler bulunmaktadır. Bu değerler modül içinde sabit olarak tanımlanmıştır ve satır ve sütün sıra numaraları ile aynı değerdedirler. Şekil 3.2 de de görüleceği gibi 0 köşe sayısı olup herhangi bir kaydediciyi temsil etmemektedir.

Load_A VeriGirişi (7:0) A00 A01 A15 Load_B 0 1 2 16 Load_C B00 1 C 0,0 C 0,1 C 0,15 Hesaplama Dilimi B01 2 C 1,0 C 1,1 C1,15 Hesaplama Dilimi B15 16 C 15,0 C15,1 C 15,15 Hesaplama Dilimi Mesafe (7:0) Şekil 3.2: İkinci Seviye Blok Diyagram İkinci seviye blok içerisinde 16 adet hesaplama dilimi bulunmaktadır. Her dilim, Şekil 2.2 de örnek olarak verilmiş matrisin bir satırını hesaplanmasında sorumludur. Şekil 3.3 de görüldüğü gibi her bir dilimin içerisinde 16 adet (C 00 C 15) hesap hücresi mevcuttur ve bu hücreler Şekil 2.2 de görülen matrisin elemanlarını hesaplamaktan sorumludur. Hesaplama sonucunda elde edilen mesafe değeri hücre içerilerinde bulunan kayıtçılarda tutulur. Sol Üst Üst A 0 Sol Üst Üst A 1 Sol Üst Üst A 2 Sol Üst Üst A 15 B j Sol C j,0 B j C j,1 B j C j,2 B j C j,15 Load_C Diğer Hesaplama Dilimine Giden Çıkışları Şekil 3.3: Bir Hesaplama Diliminin İç Yapısı Şekil 3.4 de bir hücrenin iç yapısı görülmektedir. nin toplam beş girişi vardır. Bu girişler hücrenin bulunduğu konumdaki A i ve B j değerleri, hücrenin üst, sol ve sol-üst çapraz komşularından gelen girişlerdir. öncelikle A i ve B j girişlerinde gelen değerleri karşılaştırır. Karşılaştırma sonucunda eğer bu iki değer eşit ise sol-üst komşudan gelen değer olduğu gibi değil ise 1 arttırılarak yeniden düzenlenir. Ardında yeniden düzenlenmiş sol-üst komşu değeri, üst komşu değeri ve sol komşu değer birlikte karşılaştırılır. Karşılaştırma soncunda bu üç değerden en küçüğü hücre çıkışı olarak belirlenir ve diğer hücrelere iletilir. Modül içinde veri akışı dilimler arasında yukarıdan aşağıya doğru, hücreler arasında ise yukarında aşağıya solda sağa ve sağ-alt köşeye doğrudur. Karşılaştırılacak kelimelerin kaydedicilere yüklenmesinin ardında hesaplama işlemi başlar. Hesaplama aşamasında LoadC=1 yapılarak hücreler içinde veri akışının gerçekleşmesi sağlanır. Her saat darbesinden sonra doğru sonuç hücreler üzerinde sağ ve aşağıya bir birim ilerler. Bunun anlamı sağ alt köşeye mesafe bilgisinin doğru bir biçimde ulaşmasıdır. Buda 48 saat darbesi süre sonra gerçekleşir. ler pipeline (kanal) mantığı ile tasarlandıklarından her saat darbesinde sol üst köşeden yeni iki kelime için mesafe hesaplama işlemi başlatılabilir. İlk iki kelimenin mesafe bilgisi 48 saat darbesinden sonra hesaplanmasına karşın takip eden her saat darbesinde yeni bir sonuç elde edilebilir. Modül içindeki toplam 256 hücre bulunmaktadır ve hücreler 16 ve daha az karakterlik kelimeleri karşılaştırabilecek şekilde tasarlanmıştır.

B j A i Karşılaştırıcı (=?) SolÜst Üst 1 1 + + 1 Mux 0 En Küçük Çıkışı Sol 1 + Şekil 3.4: Bir nin İç Yapısı KARŞILAŞTIRMALI TEST SONUÇLARI Bu çalışmada kapsamında tasarlanan Levenshtein mesafe modülü, bir donanım tanımlama dili olan VHDL de kodlanmış ve Xilinx firması tarafında üretilen Virtex 6 (XC6VLX75T) çipi için sentezlenerek gerçeklenmiştir. Tablo 1 de modüle ait sentezleme sonuçları verilmiştir. Tablodan da rahatlıkla anlaşılacağı üzere XC6VLX75T çipi için 6 adet modül kopyasının yerleştirilmesi mümkündür. Daha yüksek kapasiteli çipler için daha fazla modülün aynı anda yerleştirilmesi mümkündür. Bu sayede birden fazla modül aynı anda çalıştırılarak tek bir kelimeyi veri tabanındaki birden fazla kelime ile karşılaştırması yada tam tersi işlem yapılması mümkündür. Böylece yazılımsal çözümlere göre mesafe hesaplama süresi daha da kısalmış olacaktır. Tablo 1: Virtex-6 FPGA Çip İstatistikleri Cihaz Slice. Sayısı ve (%) LUTs Sayısı ve (%) Slice FFs Sayısı ve (%) Bounded IOBs Sayısı ve (%) XC6VLX75T 256 (0.27) 7034 (15.10) 99 (1.37) 17 (7.08) Modülün belirlenen iki kelime arasındaki mesafeyi hesaplama süresi ISE benzetim programı kullanılarak elde edilmiş ve farklı özelliklere sahip iki bilgisayar üzerinde çalıştırılan yazılım versiyonunun aynı kelimeler arasındaki mesafeyi hesaplama süreleri ile karşılaştırılmıştır. Karşılaştırma amacıyla seçilen bilgisayarlardan PC-1 4 çekirdekli Hyper Treading (HT) teknolojisine sahip i7 işlemcili, PC-2 ise çift çekirdekli HT teknolojisine sahip olmayan işlemcili bilgisayarlardır. Deneylerde kullanılan test kelimeleri bir.txt dosyası içerisinde tutulmaktadır. Bilgisayarların, oluşturulan bu test verilerinde mesafe hesaplama başarımının ölçülmesi için C++ dilinde yazılan bir Levenshtein algoritması kullanılmıştır. Elde edilen arama süreleri mikro saniye türünden Tablo 2 de verilmiştir. Bu tabloda Kelime 1 ler aramak için girilen kelimeyi Kelime 2 ler ise kelimenin aslını ifade etmektedir. Tabloda ayrıca karşılaştırma amacıyla aynı kelimeler için modülün mesafe hesaplama süreleri de verilmiştir. Modüle kelime uzunluğuna bakmaksızın hep 48 saat darbesi sonunda sonuç ürettiğinden hesaplama süresi değişik uzunluktaki kelimeler için hep aynıdır. Diğer taraftan kelime uzunlukları arttıkça PC lerin hesaplama süreleri de artmaktadır.

Tablo 2: PC lerin vevirtex-6 üzerinde modülün Levenshtein mesafesi hesaplama süreleri. Örnek DİZİ İçerik Mesafe Örnek_1 Örnek_2 Örnek_3 Örnek_4 Kelime 1 Kelime 2 Kelime 1 Kelime 2 Kelime 1 Kelime 2 Kelime 1 Kelime 2 alagortime algoritma livensiteyn levenshtein enthusastec enthusiastic yükseokullarımız yüksekokullarımız PC-1 (µs) PC-2 (µs) Modül (µs) 4 1431.913 1063.387 0.035664 3 1582.841 1109.831 0.035664 2 1689.278 1096.110 0.035664 1 1747.886 1171.353 0.035664 Şekil 4.1 deki grafikte modülün tek bir çip üzerinde tek bir kopyasının değişik kelime uzunluklarında PC lere göre hız kazancı görülmektedir. Bu grafikten görüldüğü gibi modül PC lere göre 29000 ile 49000 kat arasında daha hızlı mesafe hesaplaması yapmaktadır. PC ler aynı anda tek bir kelime çiftinin karşılaştırabilmektedir. Oysa bir FPGA çipine yerleştirilecek birden fazla modül kopyası ile aranan bir kelime aynı anda birde fazla hedef kelime ile karşılaştırılabilir. Bu durumda modülün hız kazancı PC lere göre katlanarak artacaktır. Virtex-6 Çipinin PC'lere Göre Hız Kazançları Hız Kazancı 50000 45000 40000 35000 30000 25000 20000 15000 10000 5000 0 PC1 / Virtex-6 PC2 / Virtex-6 9 karakter 11 karakter 13 karakter 17 karakter Şekil 4.1: Virtex-6 FPGA Çipine Göre Sentezlenmiş Modülün PC lere Göre Hız Kazanç Grafiği SONUÇ VE TARTIŞMA Tam eşleşmeli ya da benzerlik tabanlı kelime arama işlemleri için birçok algoritma geliştirilmiştir. Web sunucusu, arama motoru, virüs taraması gibi bu algoritmaların yoğun olarak kullanıldıkları ortamlarda algoritmanın performansı çok önemlidir. Algoritmalar her zaman istenen performansı gösterememekteler, ayrıca sistem üzerinde ek yük oluşturmaktadırlar. Diğer taraftan bu algoritmaların donanım tabanlı olarak gerçeklenmesi ile hem daha hızlı sonuç elde etmek hem de algoritmanın üzerinde çalıştırıldığı sistemin yükünü hafifletmek mümkündür. Bu amaçlar doğrultusunda bu çalışmada benzerlik tabanlı kelime arama algoritmalarında Levenshtein Mesafe algoritması için bir donanım modülü tasarlanmıştır. Tasarlanan modül Xilinx in Virtex 6 (XC6VLX75T) FPGA çipi için sentezlenerek gerçeklenmiştir. Modülün çalışma performansı seçilen iki farklı PC üzerinde çalışan yazılım versiyonu ile karşılaştırılmıştır. Karşılaştırma sonucunda önerilen modülün yazılıma göre yaklaşık 29000 ile 49000 kat daha hızlı sonuç ürettiği gözlenmiştir. Tasarlanan modülün çip kullanım istatistiklerine bakıldığında aynı modülün 6 farklı kopyasının tek bir çip üzerine yerleştirilebilmesi mümkün görünmektedir. Çalışanın devamında eşzamanlı birden fazla arama işleminin gerçekleştirilebilmesi için yeni modül tasarımları yapılacaktır.

KAYNAKLAR [1]. Levenshtein VI., Binary codes capable of correcting deletions, insertions, and reversals, Soviet Physics Doklady, 10: 707 10, (1966). [2]. J. D. Rogers and T. T. Tanimoto, A Computer program for classifying plants. Science, 132(3434): 1115 1118. doi:10.1126/science.132.3434.1115, (1960). [3]. P. Jaccard, The distribution of the flora in the alpine zone, New Phytologist 11: 37 50, (1912). [4]. W. R. Hamming, Error detecting and error correcting codes, Bell System Technical Journal, 29 (2): 147 160, MR 0035935, (1950). [5]. Levenshtein Distance, https://en.wikipedia.org/wiki/levenshtein_distance, (2016). [6]. Hamming Distance, https://en.wikipedia.org/wiki/hamming_distance, (2016). [7]. Jaccard Distance, http://bilgisayarkavramlari.sadievrenseker.com/2013/07/01/jaccard-indeksi-jaccardindex/, (2016). [8]. Tanimoto Distance, https://en.wikipedia.org/wiki/jaccard_index, (2016). [9]. A. Dehon, The Density Advantage of Reconfigurable Computing, IEEE Computer, pp. 33,41-49, (2000). [10]. D. Knuth, The Art of Computer Programming, volume 3, p. 506 542, (1973). [11]. S. Qasim, A. S.A. ve B. Almashary, An Overview of Advanced FPGA Architectures for Optimized Hardware Realization of Computation Intensive Algorithms, IMPACT 09, (2009). [12]. http://www.algorithmist.com/index.php/edit_distance, (2016).