首页 > 解决方案 > 现代CPU有压缩指令吗

问题描述

我一直对此感到好奇,因为几乎所有东西都使用了压缩。

标签: cpu-architectureinstructions

解决方案


它们没有通用压缩指令。

AES 对非常小的数据块进行操作,它接受两个 128 位输入,对它们进行一些重要的计算,产生单个 128 位输出。加速计算的专用指令有很大帮助。

在现代硬件上,无损压缩速度通常受到 RAM 延迟的限制。专用指令无法提高速度,更大更快的缓存可以,但现代 CPU 已经拥有非常复杂的多级缓存。它们已经可以很好地进行压缩了。

如果您需要压缩许多千兆位/秒,有几个 独立的 加速器,但这些不是处理器的一部分,通常是连接到 PCIx 的独立芯片。它们是非常小众的产品,因为大多数用户不需要那么快地压缩那么多数据。

但是,现代 CPU 有很多用于有损多媒体压缩的东西。它们中的大多数都有多个向量指令集扩展(mmx、sse、avx),其中一些指令对例如视频压缩用例有很大帮助。例如,_mm_sad_pu8(SSE)、_mm_sad_epu8(SSE2)、_mm256_sad_epu8(AVX2) 对估计 8 位像素的 8x8 块的压缩误差非常有帮助。AVX2 版本只需几个周期即可处理 4 行块(Haswell 上 5 个周期,Skylake 上 1 个,Ryzen 上 2 个)。

最后,许多 CPU 集成了 GPU,其中包括用于硬件视频编码和解码的专用芯片,通常是 h.264,较新的还有 h.265。这是Intel GPU的表格,AMD 对编码解码部分有不同的名称。该芯片比内核中的 SIMD 指令更节能。


推荐阅读