我见过的大多数支持本机标量硬件FP的体系结构都将它们推到了一个与主寄存器组分开的完全独立的寄存器空间中。
我见过的大多数支持本机标量硬件FP的体系结构都将它们推到了一个与主寄存器组分开的完全独立的寄存器空间中。
st(0)通过st(7)索引的每个项目。这可能是最流行的区别。它只能通过加载/存储到内存或将比较结果发送到EFLAGS与其他寄存器进行交互。(286 fnstsw ax和i686 fcomi)。addsd xmm1, m64或subsd xmm1, m64,但你只能加载和存储,通过寄存器movq xmm1, r/m64,movq r/m64, xmm1和朋友。这与ARM64 NEON相似,尽管它与ARM的标准标量指令集略有不同。相反,许多矢量化指令甚至都不会为这种区别而烦恼,只是在标量和矢量之间作了区分。对于x86,ARM和MIPS,全部三个:
但是我想知道:是否有CPU体系结构将相同的寄存器空间重用于整数和浮点运算?
如果不是这样(由于兼容性之外的原因),是什么会阻止硬件设计人员选择走这条路?
我有一个C/C++程序,它涉及密集的32位浮点矩阵数学计算,如加法,减法,乘法,除法等.
我可以通过将32位浮点数转换为16位定点数来加速我的程序吗?我可以获得多少速度增益?
目前我正在研究Intel I5 CPU.我正在使用Openblas来执行矩阵计算.我应该如何重新实现openblas函数(如cblas_dgemm)来执行定点计算?
我知道SSE(简单SIMD扩展)一次运行4x32 = 8x16 = 128位数据,即4个32位浮点类型或8个16位定点类型.我想在从32位浮点转换为16位定点后,我的程序会快两倍.