引用:
|
作者xaren
SSE裡也有整數運算,總之就是一個爛例子。
沒錯阿,資料形態是浮點或整數,和 function parameter 是什麼形態不一定有關。
但是 1.2 + 1.3 會去叫整數加法嗎?不可能。
我很認真的問,請問您是用哪種語言?
vb 那種 var 形態的嗎?
一點都不糊,暫存器歸暫存器,指令歸指令。
耗時間的是指令。
似乎 MMX 只有浮點運算,所以當初就那麼放了。
vc 的 INT_PTR 可以放浮點也可以放整數,所以應該沒有人直接拿兩個INT_PTR相加吧。
這個比較不確定。
|
SSE 包含了整數運算、浮點運算以及load/store, cache管理的指令(pre-fetch)
而發展到SSE2, 有個指標意義是當初Intel有打算讓SSE2取代堆疊架構的老舊x87
但後來P4(P7)夭折, 所以這件事也不了了之了
至於1.2 + 1.3 , 如果把它當成A.B + C.D, 而假設B+D會小於10
他可以簡單的用兩筆整數運算就取代了, 但這種情況太特殊了, 不會是一般通運的case
所以針對通用性的程式或演算法, 這種通常都會直接用浮點來處理
至於大家在討論的, 怎樣算是浮點運算, 怎樣算是整數運算
只要某個指令使用了FPU的運算資源, 基本上, 他就可以歸類為浮點運算了
而跟是不是用SSE/SSE2指令, 沒有甚麼關係, SSE指令強調的是Stream... 也就是SIMD