рдЗрдВрдЯреЗрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ 2.0.1

X86 рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╡рд░ рддреАрди рдЯреВрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЬрд░реВрд░рдд рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ - Vtune XE рд╢рд╛рдпрдж рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдЬреЛ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЖрдП рд╣реИрдВред

рджреВрд╕рд░рд╛ рдЙрдкрдХрд░рдг , рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИред рдПрд╡реАрдПрдХреНрд╕ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рджрд╛рдпрд░рд╛ рдХреБрдЫ рд╡реНрдпрд╛рдкрдХ рд╣реИред

Vtune рдХреЗ рдмрд╛рдж рдХрднреА-рдХрднреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдорд┐рд▓рд╛ рд╣реИ (рдФрд░ рдЕрдХреНрд╕рд░, рдбреЗрд╡рд▓рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ), рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рд▓рдЧрднрдЧ рддреАрди рд╡рд░реНрд╖реЛрдВ рд╕реЗ, рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯреЗрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рдРрд╕реЗ рдЫреЛрдЯреЗ рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ, рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ 6 рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ:
1. рдЗрд╕реА .c / .cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ
# iacaMarks.h "
2. dll / рдЗрд╕рд▓рд┐рдП IACA рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдЬрдЧрд╣ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ,
3. рдореИрдХреНрд░реЛ рдХреЛ рд╕реНрд░реЛрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
IACA_START, IACA_END
рддрджрдиреБрд╕рд╛рд░, рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

 IACA_START
	 for (int i = 0; рдореИрдВ <len / 32; i ++) 
	 { 
		 reg2 = _mm_load_si128 ((__ m128i *) src + i * 2); 
		 reg3 = _mm_load_si128 ((__ m128i *) src + i * 2 + 1); 
		 reg1 = reg0; 
		 reg0 = reg3; 
		 reg3 = _mm_alignr_epi8 (reg3, reg2, 16 - 1); 
		 reg2 = _mm_alignr_epi8 (reg2, reg1, 16 - 1); 
		 _mm_store_si128 ((__ m128i *) dst + i * 2, reg2); 
		 _mm_store_si128 ((__ m128i *) dst + i * 2 + 1, reg3); 
	 } 
 IACA_END

4. рд╣рдо рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрдИрд╕реАрд╕реА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдиреБрдХреВрд▓рди (рдкреАрдЬреАрдУ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ) рдХреЗ рд╕рд╛рде рдЬреАрд╕реАрд╕реА рдпрд╛ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА)ред рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред

5. рдлрд┐рд░, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░, рддреБрд▓рд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдореА рд╡рд╕реНрддреБ рдЦрд┐рд▓рд╛рдПрдВ:
iaca -64 -arch IVB -cp DATA_DEPENDENCY -mark 0 -o output.txt ssecpy.obj
IACA рдХреЗ рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
-64 - рдХрд╛ рдЕрд░реНрде рд╣реИ 64-рдмрд┐рдЯ рдХреЛрдбред рдЖрдк -32 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
-рдЖрд░реНрдХ IVB - IACA рдХреЛ рдЖрдЗрд╡реА рдмреНрд░рд┐рдЬ рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдп: рдиреЗрд╣реЗрд▓реНрдо, рд╡реЗрд╕реНрдЯрдореАрдпрд░, рдПрд╕рдПрдирдмреАред
-analysis LATENCY IACA рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рдкрд░ рдХреМрди рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ (рдпрд╛рдиреА рдХрд┐рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рддреЗрдЬреА рд╕реЗ рдХреА рдЬрд╛ рд╕рдХреЗ)ред рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдп: -cp THROUGHOPUT IACA рдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ "рдкреНрд▓рдЧ" рдХреМрди рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
-рдорд╛рд░реНрдХ 0 рдЖрдИрдПрд╕реАрдП рдХреЛ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рднреА рдХреЛрдб-рдЪрд┐рд╣реНрдирд┐рдд рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк -рдорд╛рд░реНрдХ n рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ IACA рдХреЗрд╡рд▓ n-рд╡реЗрдВ рдЪрд┐рдиреНрд╣рд┐рдд-рдЖрдЙрдЯ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ред
6. рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдХрдмреВрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдореИрдВ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░рд╣реАрди рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ), 4-6 рдЪрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рдореИрдВ рдКрдм рдирд╣реАрдВ рдЬрд╛рддрд╛ред

рдЕрдм рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЙрдкрдХрд░рдг рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдпреВ-рдСрдкреНрд╕ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкреЛрд░реНрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдИрдПрд╕реАрдП рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ IACA рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЙрдирдХрд╛ рдпрд╣ рднреА рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ L1D рдФрд░ L1I рдореЗрдВ рдХреЛрдИ рдЪреВрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рднреА рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред рдпрд╣ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╕реНрдХреАрдк рдХрд░рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ! "" рдЕрдкрдиреА рдЬрдЧрд╣ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕рдВрд╕реНрдХрд░рдг 2.0.1 рдПрд╕рдПрдирдмреА рдФрд░ рдЖрдИрд╡реАрдмреА рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЖрдИрдПрд╕реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдПрдХреНрд╕, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In144195/


All Articles