SAMBA is a hardware accelerator with a library of high level comparison C-procedures. This makes possible the choice of pre-defined programs, such as the classical programs already developed for bank-scanning, or user-defined programs tuned to a specific application.
As an example, scanning a bank can be summarized by the following simplified loop:
InitSW(Matrix,Gap1,GapN); LoadQuerySequence(QS); GetFromBank(SUBSET[0]); for (i=1;i<NbSubSet;i++) { LoadAndCompare(SUBSET[i],Score[i-1]); } Compare(Score[i-1]);The C-procedures (highlight in red) belongs to the SAMBA library.
Thus, SAMBA is controlled by a few procedure calls inside a normal C-program, without forcing the user to have specific knowledge of the structure of the accelerator and how it works. A library of basic procedures has been developed to be rapidly understood by programmers; but these procedures stay close enough to the accelerator hardware to provide efficient speed-up.