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.