【 在 kirbyzhou 的大作中提到: 】
: 一是为啥不包含simd?
Ling: 这是个有趣的问题,通常情况下我们使用simd指令是在可以连续访问多片内存,没有相关性可以更多乱序,能够将多个cache miss 同时并行,例如memcpy中就是典型的案例, 因此不适适使用这种优化,所以若有这种操作可以避免切换,该优化主要为高吞吐高并行的大数据计算场景,比如我们在做的超低延迟数据库,他数据关联较多,会导致大量不连续的指令和数据的L2缺失。
: 二是这个切换的代价会大于现在的yield吧,对于寄存器多的处理器尤其明显。毕竟abi规定了不用保存全部上下文。
Ling:17个寄存器要写内存和从内存读,x86的写和读的吞吐分别是1/cycle,2/cycle,由于彼此可以乱序,缓存命中情况下的延迟为17个周期,我们使用的是2.1GCPU,耗费了8个纳秒,接近理论值,如果要真正实现,通过进一步优化可以节省更多时间。
:
--
修改:MaLing FROM 112.17.240.*
FROM 47.251.4.*