色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

FPGA該怎樣加速廣告推薦算法

錢衛國2年前11瀏覽0評論

FPGA該怎樣加速廣告推薦算法?

首先,利用傳統的軟件技巧來優化算法,然后將其轉向定制指令以加速算法。我們將討論不同實現方法的性能比較和折衷。CRC算法可用來校驗數據在傳輸過程中是否被破壞。這些算法很流行,因為它們具有很高的檢錯率,而且不會對數據吞吐量造成太大影響,因為CRC校驗位被添加進數據信息中。但是,CRC算法比一些簡單的校驗和算法有更大的計算量要求。盡管如此,檢錯率的提高使得這種算法值得去實施。一般說來,發送端對要被發送的消息執行CRC算法,并將CRC結果添加進該消息中。消息的接收端對包括CRC結果在內的消息執行同樣的CRC操作。如果接收端的結果與發送端的不同,這說明數據被破壞了。CRC算法是一種密集的數學運算,涉及到二元模數除法(modulo-2 division),即數據消息被16或32位多項式(取決于所用CRC標準)除所得的余數。這種操作一般通過異或和移位的迭代過程來實現,當采用16位多項式時,這相當于每數據字節要執行數百條指令。如果發送數百個字節,計算量就會高達數萬條指令。因此,任何優化都會大幅提高吞吐量。代碼列表1中的CRC函數有兩個自變量(消息指針和消息中的字節數),它可返回所計算的CRC值(余數)。盡管該函數的自變量是一些字節,但計算要逐位來執行。該算法并不高效,因為所有操作(與、移位、異或和循環控制)都必須逐位地執行。列表1:逐位執行的CRC算法C代碼。/** The width of the CRC calculation and result.* Modify the typedef for a 16 or 32-bit CRC standard.*/typedef unsigned char crc;#define WIDTH (8 * sizeof(crc))#define TOPBIT (1 0; "bit){/** Try to divide the current data bit.*/if (remainder & TOPBIT){remainder = (remainder 0; "bit){/** Try to divide the current data bit.*/if (remainder & TOPBIT){remainder = (remainder > (WIDTH - 8));remainder = crcTable[data] ^ (remainder