现代CPU是否有压缩指令

Tre*_*ery 2 cpu-architecture instructions

我一直对此感到好奇,因为压缩几乎用于所有事物。

  • 典型的现代CPU芯片的硅片上是否有任何基本的压缩支持说明?

  • 如果没有,为什么不包括在内?

  • 为什么这与加密不同?在加密中,某些CPU对AES等算法具有硬件支持?

Soo*_*nts 6

他们没有通用的压缩指令。

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。这是英特尔GPU的表格,AMD为编码解码部分提供了单独的名称。与内核中的SIMD指令相比,该芯片甚至具有更高的功耗效率。

  • 某些处理器芯片中包含压缩加速器(例如,Cavium的[OCTEON](https://www.cavium.com/news/cavium-networks-introduces-octeon-plus-based-accelerators-for-appliance-blade-server-和存储系统))。英特尔的QuickAssist技术包括压缩加速器。能源效率是此类加速器的动机之一。 (2认同)