引用英特爾 ?64 和IA-32體系結(jié)構(gòu)優(yōu)化參考手冊,第2.4.6節(jié)“ REP字符串增強(qiáng)”:使用REP字符串的性能特征可以歸結(jié)為兩個(gè)組成部分: 啟動(dòng)開銷和數(shù)據(jù)傳輸吞吐量。[...]對于較大粒度數(shù)據(jù)傳輸?shù)腞EP字符串,隨著ECX值的增加,REP字符串的啟動(dòng)開銷將逐步增加:短字符串(ECX <= 12):REP MOVSW / MOVSD / MOVSQ的延遲約為20個(gè)周期,快速字符串(ECX> = 76:不包括REP MOVSB):處理器實(shí)現(xiàn)通過將盡可能多的數(shù)據(jù)移入16個(gè)字節(jié)來提供硬件優(yōu)化。如果16字節(jié)數(shù)據(jù)傳輸之一跨越高速緩存行邊界,則REP字符串延遲的延遲將有所不同:不分割:延遲包括大約40個(gè)周期的啟動(dòng)成本,每64字節(jié)的數(shù)據(jù)增加4個(gè)周期,緩存拆分:延遲包括大約35個(gè)周期的啟動(dòng)成本,每個(gè)64字節(jié)的數(shù)據(jù)增加6個(gè)周期。中間字符串長度:REP MOVSW / MOVSD / MOVSQ的等待時(shí)間具有大約15個(gè)周期的啟動(dòng)成本,并且每個(gè)字/雙字/ qword中的數(shù)據(jù)移動(dòng)迭代需要一個(gè)周期。(強(qiáng)調(diào)我的)沒有進(jìn)一步提及這種啟動(dòng)成本。它是什么?它做什么,為什么總是要花更多時(shí)間?
REP執(zhí)行什么設(shè)置?
當(dāng)年話下
2019-11-20 10:25:12