рдлрд┐рдВрдЧрд░реНрд╕ рдкрд░ рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди



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

рдпрд╣ рдЪрд╛рд╡рд▓ рдХреЗ рджрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ "рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░" рд╕рд░рд▓ рдФрд░ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпрд╛рдВ C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреАред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЦреБрд▓рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд░реЛрдд - Intel┬о 64 рдФрд░ IA-32 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓ - рдореЗрдВ рдПрдЯрдо рдкрд░ рдПрдХ рдкреВрд░рд╛ рдЕрдзреНрдпрд╛рдп (# 13) рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрдИ рдЕрдиреБрдХреВрд▓рди рдпреБрдХреНрддрд┐рдпрд╛рдБ рд╡рд╣рд╛рдВ рджреА рдЧрдИ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

" рдЕрд╕реЗрдВрдмрд▓реА / рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдбрд┐рдВрдЧ рдирд┐рдпрдоред 4. рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлреНрд▓реИрдЧ рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдФрд░ рдПрдХ рдлреНрд▓реИрдЧ рдХрдВрдЬреНрдпреВрдорд░ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рдмреАрдЪ рдПрдХ MOV рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд▓рдЧрд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЛ-рдЪрдХреНрд░ рдХреА рджреЗрд░реА рд╣реЛрддреАред рдЗрд╕рд╕реЗ рдЖрдВрд╢рд┐рдХ рдлреНрд▓реИрдЧ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред"

рдХреНрдпрд╛ рдЖрдк рд╕рдм рдХреБрдЫ рд╕рдордЭрддреЗ рд╣реИрдВ? рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рд▓реЗрдХрд┐рди рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ рдкрд░рдорд╛рдгреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдФрд░ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ рдХреЗрд╡рд▓ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реАрди рднрд╛рд╡рдирд╛ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред



  1. рддрд╛рд░реНрдХрд┐рдХ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рджреЛрд╣рд░реА-рдереНрд░реЗрдбрд┐рдВрдЧред рдПрдЯрдо рдкрд░, рдмрд╣реБрдд рдХреБрд╢рд▓ рд╣рд╛рдЗрдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ (рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдЯрдо рдореЙрдбрд▓ рдкрд░ рдЙрдкрд▓рдмреНрдз)ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рджреЛ рдереНрд░реЗрдб рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 30-50% (рдЗрдВрдЯреЗрд▓ рдбреЗрд╕реНрдХрдЯреЙрдк рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд 15-20% рдХреЗ рдЦрд┐рд▓рд╛рдл) рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдореЗрдореЛрд░реА рд╕рдВрд░реЗрдЦрдгред 16 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдПрдкреНрд▓реАрдХреЗрд╢рди рдореЗрдВ рд▓рд╛рдн рдХрд╛ 10% рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдФрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред
  3. рдПрдХ рдЧрдВрднреАрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЦрддрд░рд╛ рдЫреЛрдЯреЗ (рдЫреЛрдЯреЗ) рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рдЖрд╣реНрд╡рд╛рди рд╣реИред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдпрд╛ рддреЛ рд╕рдВрдпреБрдХреНрдд рдпрд╛ рдЬрдмрд░рди рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрдирд▓рд╛рдЗрди)ред рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдРрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн 20% рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ! рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрдгрд┐рддреАрдп рд╡рд╛рд▓реЗ), рд╕рд╛рде рд╣реА рд╕рд╛рдЭрд╛ рд▓рд┐рдирдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдкреАрдЖрдИрд╕реА рдХреЛрдб) рдореЗрдВ рд▓рдШреБ рдХрд╛рд░реНрдп рдЫрд┐рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдмрд╛рд░ = 0 рд╣реЛрдиреЗ рдкрд░ рдЕрдЧрд▓реА рдлрд╛рдЗрд▓ рднреА рдЫреЛрдЯреА рд╣реЛрдЧреАред

    рд╢реВрдиреНрдп рдлреВ () {

    рдЕрдЧрд░ (рдмрд╛рд░) {

    / * рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ, рд▓рдВрдмрд╛ рдФрд░ рдЬрдЯрд┐рд▓ * рдХрд░реЗрдВ /

    }

    }

  4. рдПрдЯрдо рдореЗрдВ рдХреИрд╢ рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕реНрдерд╛рдиреАрдпрддрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдХреВрдж" рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВ; рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХрдЬреБрдЯ рдХрд░реЗрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдореГрдд рдбреЗрдЯрд╛ рдЖрддреНрдорд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдХреИрд╢ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  5. рдПрдЯрдо рджреЛрд╣рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлреНрд▓реЛрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 5 рдЧреБрдирд╛ рдзреАрдорд╛! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреЗрд▓рд░ рдФрд░ рд╡реЗрдХреНрдЯрд░ рдирд┐рд░реНрджреЗрд╢ (SSE) рджреЛрдиреЛрдВ рдореЗрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдбрдмрд▓ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рддреНрдпрд╛рдЧреЗрдВред
  6. рд╡рд┐рдЦрдВрдбрди рдореЗрдВ рдкрд░рдорд╛рдгреБ рднреА рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╡рд┐рднрд╛рдЬрд┐рдд рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЬрд╛рди рд▓реЗрдВ рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╡рд┐рднрд╛рдЬрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИ, 16-рдмрд┐рдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 8-рдмрд┐рдЯ рддреЗрдЬ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 32-рдмрд┐рдЯ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реИред рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рд╕рдЯреАрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рд╣реИ = "-no-pre-div" рдбрд┐рд╡рд╛рдЗрдб рдХреЛ рддреЗрдЬ рдХрд░рддреЗ рд╣реБрдПред рдФрд░ рдлрд┐рд░ рднреА - рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рднрд╛рдЬрди рдЗрдХрд╛рдИ рд╣реИ, рдЗрд╕реЗ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдбрд╝рдЪрди рдмрди рд╕рдХрддрд╛ рд╣реИред
  7. рдлреНрд▓реЛрдЯ (рд╕реНрдХреЗрд▓рд░ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╡реЗрдХреНрдЯрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ (рдпрд╛ рдЖрдВрддрд░рд┐рдХ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬ рд╣реИред

    Gcc рд╕рдВрдХрд▓рдХ рдХрд╛ "тАУfpmath = sse" рдзреНрд╡рдЬ x87 рд╕реЗ sse рддрдХ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ

    рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ..
  8. рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рдВрдХрд▓рдирдХрд░реНрддрд╛ред рдпрд╣рд╛рдВ рдПрдЯрдо рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЭрдВрдбреЗ рд╣реИрдВред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреЗрдЬреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдорд╛рдЗрдХреНрд░реЛ-рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ (рдЗрдВрдЯреЗрд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдП рдЧрдП рдореИрдиреБрдЕрд▓ рдХрд╛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ :))

    gcc <4.5: -march = core2 -mtune = generic -fpmath = sse тАУO3 [тАУffast-math]

    gcc> = 4.5: -march = atom тАУfpmath = sse -03 [-flto] [-ff-math]

    icc <11.1: -xL тАУO3 тАУipo [-fno-alias] [-no-prec-div]

    icc> = 11.1: -xSSE3_ATOM тАУipo [тАУрдирд╕реА-рдЙрд░реНрдл] [-no-prec-div]




рдпреБрдХреНрддрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреА рдЬрд╛рддреА рд╣реИрдВ, рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдЙрддреНрддрд░ рд╣реИ "рддреЛ рдИрд╢реНрд╡рд░ рдиреЗ рдкрд░рдорд╛рдгреБ рдмрдирд╛рдпрд╛ ред" рдпрджрд┐ рдЧрд╣рди рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрддреНрд░рд╛рдЪрд╛рд░ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдореЗрдВ рд╣реИрдВред



All Articles