Home » Posts tagged "decoder"

Branchless UTF-8 解碼器

看到「A Branchless UTF-8 Decoder」這篇,先來回憶一下「非常經典的 UTF-8...」這篇,以及裡面提到的 encoding:

因為當初在設計 UTF-8 時就有考慮到,所以 decoding 很容易用 DFA 解決,也就是寫成一堆 if-then-else 的條件。但現代 CPU 因為 out-of-order execution 以及 pipeline 的設計,遇到 random branch 會有很高的效能損失,所以作者就想要試著寫看看 branchless 的版本。

成效其實還好,尤其是 Clang 上說不定在誤差內:

With GCC 6.3.0 on an i7-6700, my decoder is about 20% faster than the DFA decoder in the benchmark. With Clang 3.8.1 it’s just 1% faster.

而後來的更新則是大幅改善,在 Clang 上 DFA 版本比 branchless 的快:

Update: Björn pointed out that his site includes a faster variant of his DFA decoder. It is only 10% slower than the branchless decoder with GCC, and it’s 20% faster than the branchless decoder with Clang. So, in a sense, it’s still faster on average, even on a benchmark that favors a branchless decoder.

所以作者最後也有說這是個嘗試而已 XD:

It’s just a different approach. In practice I’d prefer Björn’s DFA decoder.

Google 推出 VP8 的硬體設計

Google 推出了 VP8 編碼與解碼的硬體設計,代號「Anthill」:「Introducing "Anthill," the First VP8 Hardware Encoder IP Release」。

透過 Anthill,對於 GPU 的 loading 及電源消耗會大幅降低:(這是在 ARM 平台上的估算)

不過比較奇怪的是只有寫 H1 encoder RTL 不收錢?重點在 decoder 吧?

Google does not require payment of any license fee or royalty in connection with use of the H1 encoder RTL.

另外 source code 不直接公開,必須填表格索取...