Tre*_*ery 2 cpu-architecture instructions
我一直对此感到好奇,因为压缩几乎用于所有事物。
典型的现代CPU芯片的硅片上是否有任何基本的压缩支持说明?
如果没有,为什么不包括在内?
为什么这与加密不同?在加密中,某些CPU对AES等算法具有硬件支持?
他们没有通用的压缩指令。
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指令相比,该芯片甚至具有更高的功耗效率。