A Special Function Unit for Database Operations (SFU-DB): Design and Performance Evaluation

Herman Lam, C. Lee, Stanley Y.W. Su

Research output: Contribution to journalArticlepeer-review

Abstract

This paper describes the design and analysis of a special function unit for database operations (SFU-DB) which uses a novel hardware sorting module, the Automatic Retrieval Memory (ARM). The SFU-DB is a functionally independent unit that efficiently performs certain nonnumeric operations. It can function as a coprocessor for a host CPU or as a special processing unit in a highly parallel processing system. The ARM implements in hardware a true “distribution-based” sort algorithm that requires no comparison operations. Without performing any comparison, the SFU-DB avoids the lower bound constraint on comparison-based sorting algorithms and achieves, for the worst case, a complexity of O(n) for both execution time and main memory size. Using the fundamental sort algorithm with slight modifications, the SFU-DB also uses the ARM as an engine for other primitive database operations such as relational join, elimination of duplicates, set union, set intersection, and set difference, also with complexity of O(n). Finally, the SFU-DB/ARM architecture is rather simple and requires only a modest amount of specialized hardware. The specialized hardware has been designed and simulated for fabrication using CMOS gate arrays and the remainder of the SFU-DB has been simulated in software using Turbo Pascal running on an IBM-PC.

Original languageEnglish
Pages (from-to)263-275
Number of pages13
JournalIEEE Transactions on Computers
Volume40
Issue number3
DOIs
Publication statusPublished - 1991 Mar

All Science Journal Classification (ASJC) codes

  • Software
  • Theoretical Computer Science
  • Hardware and Architecture
  • Computational Theory and Mathematics

Fingerprint

Dive into the research topics of 'A Special Function Unit for Database Operations (SFU-DB): Design and Performance Evaluation'. Together they form a unique fingerprint.

Cite this