AFAK,gather
和insert
指令都是为了将不连续的数据元素从内存加载到向量寄存器而设计的,但我发现许多论文都将gather
技术作为一种更有效的方式打包不连续的元素。
insert
很容易理解:发出多个标量加载uops,并将相应的数据元素逐个加载到向量寄存器中;
gather
需要base_addr
和index
的向量,该向量会添加到base_addr
以指示要加载的元素。
但gather
是如何实现的,是否会将多个加载uops作为insert
发出?什么导致与insert
相比的性能差异?