即时编译器的向量化优化是什么?SIMD 到底是什么?

前言

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见100个问题搞定Java虚拟机

正文

向量化优化借助的是 CPU 的 SIMD 指令,即通过单条指令控制多组数据的运算。
它被称为 CPU 指令级别的并行。

HotSpot 虚拟机运用向量化优化的方式

第一种是使用 HotSpot intrinsic,在调用特定方法的时候替换为使用了 SIMD 指令的高效实现。

Intrinsic 属于点覆盖,只有当应用程序明确需要这些 intrinsic 的语义,才能够获得由它带来的性能提升。

关于 intrinsic 可以参考我的这篇博客——HotSpot虚拟机中的intrinsic是指什么?

第二种是依赖即时编译器进行自动向量化,在循环展开优化之后将不同迭代的运算合并为向量运算。

自动向量化的触发条件较为苛刻,因此也无法覆盖大多数用例。

向量化计算的典型应用——ClickHouse

笔者在学习 ClickHouse 之前对于向量化计算一直比较模糊,学习了 ClickHouse 才知道了向量化计算的强大。
ClickHouse 并不是用 Java 语言来写的(C++),但是底层原理都是共通的。

以下内容摘自 ClickHouse 官网:

Distinctive Features of ClickHouse

...

Vector Computation Engine
Data is not only stored by columns but is processed by vectors (parts of columns), which allows achieving high CPU efficiency.

翻译

ClickHouse 的独特功能

...

向量化计算引擎
数据不仅由列存储,还由向量(列的一部分)处理,从而实现较高的CPU效率。

关于 ClickHouse 大家可以关注我的另一个专栏——1000个问题搞定大数据技术体系

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值