影響SSE指令使用的因素 cpu特徵

2021-07-24 07:41:34 字數 1580 閱讀 1683

#採用cpuid、_cpuid、_cpuidex函式可獲取cpu特徵,但這三個函式的使用函式有一定的限制與要求

a. 32位作業系統

在32位作業系統下,可以直接採用內嵌會變調用cpuid函式獲取cpu特徵,方法如下

//用於儲存cpu四個暫存器值

unsigned long _eax, _ebx, _ecx, _edx;

void excutecpuid() }

b. 64位作業系統直接呼叫呼叫intrinsics函式「_cpuid、_cpuidex」函式獲取cpu特徵。但是只有vc2005以上版本才有intrin.h標頭檔案,且支援_cpuid函式,vc2010版本以上才支援_cpuidex函式,所以我們首先通過編譯器版本確定標頭檔案包含和指令呼叫,vc編譯器版本判斷如下

//_msc_ver是微軟c/c++編譯器——cl.exe編譯**時預定義的乙個巨集,它的值表示cl的版本,它的型別是「int」。例如

#if _msc_ver >=1200 // vc++6.0以上

#if _msc_ver >=1300 // vc2003以上

#if _msc_ver >=1400 // vc2005以上

#if _msc_ver >=1500 // vc2008以上

#if _msc_ver >=1600 // vc2010以上

總結a、 b兩點,**為

->>#if defined _msc_ver >= 1400 //vc版本為2005以上

->>#include 「intrin.h」

->> #endif

->>#if defined (_win64)

//64為作業系統,直接呼叫」intrin.h」中函式

->> #else

#if _msc_ver < 1600

->>void __cpuidex(int32 cpuinfo[4], int32 infotype, int32 ecxvalue)

->>

} ->>#endif // #if _msc_ver < 1600

->> #if _msc_ver < 1400

->>void __cpuid(int32 cpuinfo[4], int32 infotype)

->>

->>#endif // #if _msc_ver < 1400 // vc2005才支援__cpuid

->>#endif // #if defined(_win64)

#cpu特徵對應的sse指令集

1. edx: (bit23) == 1 —————mmx

2. edx: (bit25) == 1 —————sse1

3. ecx: (bit26) == 1 —————sse2

4. ecx: (bit0 ) == 1 —————sse3

5. ecx: (bit9 ) == 1 —————ssse3

6. ecx: (bit19) == 1 —————sse4.1

7. ecx: (bit20) == 1 —————sse4.2

SSE指令的使用學習

1.什麼是指令集?指令集是為了增強cpu在某些方面 如多 的功能而特意開發出的一組程式 集合。2.常見的指令集有哪些呢?1 mmx multi media extensions,做 擴充套件 指令集 intel1996年推出的一項多 指令增強技術。共包含57條多 指令,這些指令一次可以處理多個資料。...

SSE的指令系統

sse的指令系統 sse2和sse的指令系統非常相似,僅僅多了少量額外的浮點運算,64位浮點 整數運算支援 sse比傳統浮點運算要快,因為它使用128位儲存單元。在windows使用 include 在linux下使用 include 1.變數定義和使用 m128 s1 s1.m128 f32 2 ...

影響上傳速度的因素

http上傳 客戶端 上傳資料 到伺服器。上傳速度決定於 1 客戶端,2 伺服器,3 路由 1 客戶端 1.1.是否保持長連線,對於多個小檔案的上傳,保持同乙個連線非常有效 1.2.連線數,過多或過少都不好 1.3.傳送資料的粒度大小 1.4.讀檔案的效率,最好非同步讀檔案,先將資料快取好,待傳送資...