2015年4月30日 星期四

整數定數除法的代換 (constant integer division)

不論是 CPU 或是硬體,裡面的除法都很慢
可以的話都要避免
而對於整數的常數除法,有一些方法可以用乘法代換掉
想法很簡單,既然是整數的話只要足夠近似就行了
例如在 gcc 裡面,以下這個東西編譯出來的組合語言相當於 (x*3435973837)>>35

echo "unsigned int f(unsigned int x){return x/10;}" | g++ -S -xc - -o -
接下來說明如何在 unsigned integer 達成這件事
主要參考了 libgmp 大數運算 library 的文件

2015年4月27日 星期一

Terasic DE5-NET Altera Stratix V FPGA PCIe 使用(一)

因為某些需求
花了一個禮拜研究怎麼使用 DE5 FPGA
希望可以使用到上面的 DRAM 跟 PCIe 界面
雖然說實驗的平台是 DE5
不過應該對於 DE4, DE2 150i 等等有 PCIe 的 FPGA 都或多或少適用
標題裡面有個(一),因為我應該不會想一次打完

2015年4月17日 星期五

Linux kernel module 嘗試 (1)

因為最近說不定有機會用到 kernel driver
所以藉此看了一下基本的使用
大致研究了一下,基本上這東西一般被認為不難寫
寫起來很無聊,只要照著硬體的 spec 去呼叫就會動
會寫的人就覺得很簡單,難的是如何呼叫到正確的函數