Veritabanı Uygulamalarında FPGA Tabanlı Hızlandırıcı Kullanımı
FPGA Accelerator Utilization in Database Applications
Yazar: Öztürk, Erdinç
Dergi: Avrupa Bilim ve Teknoloji Dergisi No. 22, 2020
Anahtar kelimeler: Engineering ; Mühendislik ; Database,FPGA,Accelerator ; Veritabanı,FPGA,Hızlandırıcı Tasarımı

Yazılım uygulamalarının performansı, sistem düzeyindeki çeşitli özellikler ile ölçülebilir. Sistem performansı iki ana faktör tarafından belirlenir: veri hesaplama ve hareket kapasitesi. Hesaplama performansı için, merkezi işlem birimi (CPU) mimarisi en önemli faktördür. Bir CPU mimarisi, temel hesaplamaları gerçekleştirmek için aritmetik mantık birimlerini (ALU) kullanır. Bu ALU'ların karmaşıklığı, ilkel aritmetik işlemlerin basamak boyutu ile belirlenir. Bir CPU'nun hesaplama performansı, ALU mimarilerinin performansı ile sınırlıdır. Daha yüksek performans için, CPU çekirdek mimarilerinde artan sayıda ALU kullanılır. Ayrıca, CPU üreticileri, belirli bir sürede gerçekleştirilen işlemlerin sayısını artırmak için çok çekirdekli mimariler tasarlamaktadırlar. Bu iki yaklaşım hesaplama birimlerinin miktarını artırsa da, bu yine de bazı işlem-yoğun uygulamalar için yeterli değildir. Bazı problemler doğası gereği paralelleştirilemezler ve birden çok çekirdek arasında dağıtık olarak çalıştırılmaları zordur. Paralelleştirilebilir sorunlar için bile, çok çekirdekli bir çözüm, çekirdekler arasındaki veri giriş/çıkış sınırlamaları nedeniyle tüm CPU mimarisini yüksek bir yüzdeyle kullanamamaktadır. Veri hareketi için, sistemin bellek hiyeararşisinin yapısı baskın faktördür. Farklı düzeydeki önbelleklerin boyutu (L1, L2 ve L3), DDR arayüzünün bant genişliği (DDR4, DDR5, vb.) işlem-yoğun yazılım uygulamalarının performansını belirler. Özellikle veritabanı uygulamaları büyük miktarda veri içerdiğinden, hız için en önemli faktör bellek arayüzü haline gelir. FPGA mimarilerinin hızlandırıcı olarak kullanımı son zamanlarda işlem-yoğun yazılım uygulamalarında popüler hale gelmektedir. Bu makalede, bir FPGA mimarisinde uygulanan basit bir veritabanı sorgulama uygulaması sunulmuştur. Sonuçlar, büyük miktarda veriyle ilgili sorguları içeren veritabanı uygulamaları için önemli bir performans iyileştirmesi elde edilebileceğini göstermektedir.

Performance of software applications is determined by various system-level properties. System performance is determined by two major factors: data movement and computational bandwidth. For computational performance, central processing unit (CPU) architecture is the most important factor. A CPU architecture utilizes arithmetic logic units (ALU) to realize basic computations. Complexity of these ALUs is determined by the digit size of primitive arithmetic operations. Computational performance of a CPU is limited by the performance of its ALU architectures. For increased performance, CPU architectures utilize increased number of ALUs in their core architectures. Also, CPU manufacturers build multi-core architectures to increase number of operations realized in a given time. Although these two approaches increase the amount of computational units, this is still not enough for some compute-intensive applications. Some problems are inherently sequential and difficult to schedule amongst multiple cores. Even for parallelizable problems, a multi-core solution is not utilizing the entire CPU architecture with a high percentage, due to data i/o limitations between cores. For data movement, the structure of memory hieararchy of the system is the dominant factor. Size of different level caches (L1, L2 and L3), bandwidth of the DDR interface (DDR4, DDR5, etc.) determine the performance of compute-intensive software applications. Especially for database applications, since there is a large amount of data involved, the most important factor for speed becomes the memory interface. Usage of FPGA architectures as accelerators recently gained attention for compute-intensive software applications. In this paper, a simple database query application implemented on an FPGA architecture is presented. The results show that a significant performance improvement can be achieved for database applications involving queries on large amount of data.