рдХреЛрд░ i7 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ, рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдмрд╣реБрдд рдкреНрд░рд╕рд┐рджреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рдмреАрдЪ, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрд▓рдЯрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдореЗрдВ рдХреЛрд░ рдХреЛрдб, рддреАрди рдЖрд░реЗрдЦ рдФрд░ рдХреЛрд░ i7 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреИрд╢ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╣реИрдВред рдХреЛрдИ рдХрд╡рд░ рдЯреВрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрд▓рдЯрд╛ - рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдПрдХ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдпрд╛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдирд┐рдореНрди-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдкрд░ рдкрд╣реБрдВрдЪ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЗрд╕рдХрд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдЖрддреНрдореАрдпрддрд╛ рдФрд░ рдПрдордПрд╕рдЖрдИ-рдПрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд╛рд╕ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ - рдПрдХ рдореЗрдореЛрд░реА рдирд┐рдпрдВрддреНрд░рдХ, рдХреНрдпреВрдкреАрдЖрдИ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддреГрддреАрдп-рд╕реНрддрд░реАрдп рдХреИрд╢ рдФрд░ рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдгред рдореБрдЭреЗ PCIe рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВред рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдФрд░ рдХреНрдпреВрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрд▓рдЯрд╛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ - рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдФрд░ рдХрдо-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ рдорд▓реНрдЯреА-рдЪреИрдирд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдереНрд░реВрдкреБрдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореИрдВ рдХреИрд╢ рдкрд░ рд░рд╣реВрдВрдЧрд╛ред
рддреАрд╕рд░реА рдкреАрдврд╝реА рдХреЗ рдХреЛрд░ i7 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдЖрд░реЗрдЦ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд┐рд╕ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдЗрд╕ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рдиреЗрд╣реЗрд▓реНрдо, рд╡реЗрд╕реНрдЯрдореЗрд░реЗ, рд╕реИрдВрдбреА рдмреНрд░рд┐рдЬ, рдЖрдЗрд╡реА рдмреНрд░рд┐рдЬ рдФрд░ рд╣реИрд╕рд╡реЗрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ, рд╕реИрдВрдбреА рдмреНрд░рд┐рдЬ рдХреЗ рдЕрдВрджрд░ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реЗрдиреНрдиреЗрд╕реА (рд╣рд╛рдБ, рдпрд╣ рдПрдХ)
рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХрд╛ рдХреИрд╢ (рдПрд▓рдПрд▓рд╕реА), рд╕рдмрд╕реЗ рдмрдбрд╝рд╛, рдПрдХ рд╕рд╛рде рд╕рднреА рдХреЛрд░ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ - рд╡реЗ рджреЛрдиреЛрдВ рдЬреЛ "рдЯрд┐рди рдЦреАрдВрдЪрддреЗ рд╣реИрдВ" - рдХрдо-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ, рдФрд░ рдЬреЛ рдмрд╛рд╣рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдПрдкреАрдЖрдИрд╕реА рдЯрд╛рдЗрдорд░ рд╕реЗ рд╡реНрдпрд╡рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЙрдЪреНрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рддреЗрдЬреА рд╕реЗ рдЙрддреНрдкрд╛рджрдиред рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рдХреЗ рдХреИрд╢ рдХреА рдПрд╡рд┐рдХреНрд╢рди рдкреЙрд▓рд┐рд╕реА
LRU рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрд░ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдПрд▓рдПрд▓рд╕реА рдХрд╛ рдЕрдзрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ? рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ ?? рд╡реИрд╕реЗ, рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдФрд░ рдХреИрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рдЕрдХреНрд╕рд░ рдПрдХ рдмрд╛рд╣рд░реА рдШрдЯрдирд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рдФрд░ рдХреЛрдб рдХреЛ рдПрд▓рдПрд▓рд╕реА рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рд╕реА рддрд░рд╣
рд▓рд┐рдЦ рджрд┐рдпрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ L1 / 2 рдХреИрд╢ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдХрд╛ рдЧрд▓рдд рдЙрддреНрддрд░ рджрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдХрд╛ рдЕрдкрдирд╛ рдХреИрд╢ рд╣реИ, рдХрдо рд╕реЗ рдХрдо 256 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдЖрдХрд╛рд░ рдореЗрдВред .Text рдФрд░ .data рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рдХрдИ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдХрд╛рд░реНрдпред рдЦреИрд░, рдХрдо рд╕реЗ рдХрдо 32kb рдХрд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП + 32kb рдХрд╛ рдХреЛрдб рдХреИрд╢ рдореЗрдВ рдХрдИ рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╣рдореЗрд╢рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ? рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЙрдЪреНрдЪ рд░рдХреНрддрдЪрд╛рдк рдФрд░ рдмрд┐рдЬрд▓реА рдкреНрд░рдмрдВрдзрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдорд╛рд░реНрдХ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ:
рд╣реЗрд▓реНрдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ#define POOL_SIZE_L1D_LINES 512 #define POOL_SIZE_L2_LINES 8192
build_list рд╕реВрдЪреА рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░реАрдлрд╝реЗрдЪрд░ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕реЗрд╕ рдкреИрдЯрд░реНрди рди рдорд┐рд▓реЗред рдЙрд╕реА рд╕рдордп, рдкреВрд░реА рд╕реВрдЪреА рдХреИрд╢ рдореЗрдВ рд╣реИ, рдЙрд╕ рд╕реНрддрд░ рдкрд░ рдЬрд╣рд╛рдВ рд╡рд╣ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
рдЕрдм рдирдВрдмрд░ 2 рдХрд░реНрдиреЗрд▓ рдкрд░, рд╣рдо рд╕реВрдЪреА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдкрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рд╕рдордп рдХрд┐рддрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд▓рд┐рдВрдХреНрдб рд╕реВрдЪреА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЧрддрд┐ рдорд╛рдк void measure(list_item* head, int N) { unsigned __int64 i1, i2, avg = 0; for (int j = 0; j < 50; j++) { list_item* current = head; #if WARMUP_ON while(in_copy) warmup_list(head, N); #else while(in_copy) spin_sleep(1); #endif i1 = __rdtsc(); for(int i = 0; i < N; i++) { current->tick++; current = current->next; } i2 = __rdtsc(); avg += (i2-i1)/50; in_copy = true; } printf("%i\n", avg/N); }
рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдХрд╛ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╕реВрдЪреА рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдк
рддреАрд╕рд░реЗ рд╕реНрддрд░ рдореЗрдВ рдХреИрд╢ рдХреЛ рд░реЛрдХрддреЗ рд╣реБрдП рдПрдХ рджреВрд╕рд░реА рд╕реНрдЯреНрд░реАрдо рдЬреЛрдбрд╝реЗрдВ: рдЗрд╕реЗ рдХреЛрд░ рдирдВрдмрд░ 3 рдкрд░ рд╕реНрдкрд┐рди рдХрд░рдиреЗ рджреЗрдВ, рдФрд░ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ 18 рдПрдордмреА рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░реЗрдВред 18MB - LLC рд╕реНрдХреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдЗрд╕реЗ рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрд┐рдирд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд▓рдд рдФрд░ рдЕрдХреНрд╖рдо рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдХреЗрд╡рд▓ рдЙрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред)
рдПрдХ рдзрд╛рдЧрд╛ рдЬреЛ рджреВрд╕рд░реЗ рдХреЛрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдПрд▓рдПрд▓рд╕реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ list_item *area1 = (list_item *)malloc(POOL_SIZE_LLC_LINES*64*2); list_item *area2 = (list_item *)malloc(POOL_SIZE_LLC_LINES*64*2); while (true) { while(!in_copy) spin_sleep(1); #if DISRUPT_ON memcpy(area1, area2, POOL_SIZE_LLC_LINES*64*3); memcpy(area2, area1, POOL_SIZE_LLC_LINES*64*3); #else spin_sleep(10); #endif in_copy = false; };
рд╣рдо рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрди рдХрд░реЗрдВрдЧреЗ:

- рдмреЗрд╕рд▓рд╛рдЗрди, "рд░реЗрдб" рдкрд░реАрдХреНрд╖рдг, рдЕрдиреБрдХреВрд▓ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реВрдЪреА рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ - рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк, "рдмреНрд▓реВ" рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдкреВрд░реЗ рдПрд▓рдПрд▓рд╕реА рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдкрд╣рд▓рд╛ рдзрд╛рдЧрд╛ рд╕реНрдкрд┐рдирд▓реЙрдХ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред
- рдЕрдВрдд рдореЗрдВ, "рдЧреНрд░реАрди" рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓рд╛ рдереНрд░реЗрдб рд╕рдордп-рд╕рдордп рдкрд░ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рднреА рдЪрд▓рд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреАрдЯ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдбреЗрдЯрд╛ рдЕрдкрдиреЗ "рдПрд▓" рдПрд▓ 2 рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓реЗ рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреА рдХреА рдХреНрд░реЙрд▓ рдЧрддрд┐ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдерд╛ред (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд╕рдВрдШрд░реНрд╖ рдХреА рдпрд╛рджреЛрдВ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛)
рдпрд╣рд╛рдБ рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

рдХреНрд╖реИрддрд┐рдЬ - рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдХреА рд╕рдВрдЦреНрдпрд╛ред рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ - рд╕реАрдкреАрдпреВ рдЪрдХреНрд░ рдПрдХ рддрддреНрд╡ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, "рдЪрд░рдг" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдПрдХ рдЧреНрд░рд╛рдл рдЬрд┐рд╕ рдкрд░ рдХреИрд╢ рдХреА рд╕реАрдорд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ) рдЖрдкрдХреЛ рдмрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ, рд╕реНрдерд╛рдирд┐рдХ рдЗрд▓рд╛рдХреЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдореИрдВрдиреЗ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛, рдЙрд╕ рд╕рдордп рдореЗрдореЛрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
- L1D рд╣рд┐рдЯ = 4 рдЪрдХреНрд░,
- L2 рд╣рд┐рдЯ = 11 рдЪрдХреНрд░,
- рдПрд▓рдПрд▓рд╕реА рд╣рд┐рдЯ = 31 рдЪрдХреНрд░,
- DRAM рд╣рд┐рдЯ = ~ 100 рдЪрдХреНрд░,
рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХреНрд▓рд┐рдХ рдкрд░ рдЦрд░реНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИ
L1D_hit * P (L1D_hit) + L2_hit * P (L2_hit) + LLC_hit * P (LLC_hit) + DRAM_hit * P (DRAM_it) рдЬрд╣рд╛рдВ P рдЗрд╕ рдХреИрд╢ рд╕реНрддрд░ рдореЗрдВ рдЕрдЧрд▓реА рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдпрд╛рдиреА
P (L1D_hit) + P (L2_hit) + P (LLC_hit) + P (DRAM_hit) = 1
рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╡рд┐рддрд░рдг рдХреИрд╢ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ Vtune, oprofile рдпрд╛ Linux perf рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 16,384 рд╡рд╕реНрддреБрдУрдВ (512 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ) рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реВрдЪреА рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдПрдХ Vtune рд╕рдВрднрд╛рд╡рдирд╛ рдорд╛рдк рд╣реИред
| рдЕрдмрд╛рдзрд┐рдд | рд╡реНрдпрд╛рдХреБрд▓ | рд╡рд╛рд░реНрдордЕрдк |
L1 рд╣рд┐рдЯ% | 0.08 | 0 | 63 |
L2 рд╣рд┐рдЯ% | 72 | 0.07 | 0.1 |
LLC рд╣рд┐рдЯ% | 25 | 2.6 | 22 |
DRAM рдиреЗ% рдорд╛рд░рд╛ | 3 | 97 | 15 |
DTLB рдорд┐рд╕% | 21 | 66 | 37 |
Vtune рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдмреНрд▓реВ" рдФрд░ "рдЧреНрд░реАрди" рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░ рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓реЗ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЗ рдХрд╛рд░рдг рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рдХреИрд╢ рдореЗрдВ рдорд┐рд╕рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
рдпрджрд┐ рдЙрдЪреНрдЪ-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдХреИрд╢ рд╕реЗ рдмрд╛рд╣рд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рд╡реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрд░ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдХреИрд╢ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд╡рдпрдВ рдорд╛рдкрд╛ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдереАред "рдмреНрд▓реВ" рдХреЙрд▓рдо рдореЗрдВ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рд▓ рдореЗрдВ рдореБрдЭреЗ L1 рдореЗрдВ рдЕрдзрд┐рдХ рд╣рд┐рдЯ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдФрд░ "рд╣рд░реЗ" рдХреЙрд▓рдо рдореЗрдВ L2 рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣рд┐рдЯ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ 16k рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдЧреНрд░рд╛рдл рдкрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рдпрджрд┐ рдкрд╣рд▓рд╛ рдзрд╛рдЧрд╛ рд╡реНрдпрд╡рдзрд╛рди рдкрд░ рдЬрд╛рдЧрддрд╛ рд╣реИ, рддреЛ "рдмреНрд▓реВ" рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднреА рдЖрдИрдбреАрдЯреА рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдИрдПрд╕рдЖрд░ рдХреЛрдб рдХреЛ рдореЗрдореЛрд░реА рд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд▓ 1 рдЖрдИ, рдПрд▓ 2 рдФрд░ рдПрд▓рдПрд▓рд╕реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдЪреЛрдбрд╝рд╛ рд╣реБрдЖ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдорд╣рд╛рди рдЕрдлрд╕реЛрд╕ рдХреЗ рд▓рд┐рдП, рдХреЛрд░ i7 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рд╕реА рдХреЗ "рд▓реЙрдХ рдЕрдк" рднрд╛рдЧ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрд▓рдПрд▓рд╕реА рдФрд░ рдПрд▓ 1 рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдПрд▓ 2 рдФрд░ рдПрд▓ 1 рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдЗрд╕ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛрдВред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдореБрдЭреЗ рдХреЛрд░ i7 рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реАред рдХреИрд╢ рдХрд╛ рдпрд╣ рд╕рдВрдЧрдарди (рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) (рдбреЗрд╕реНрдХрдЯреЙрдк, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд░ рд▓реЛрдб) рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрд▓рдЯрд╛ рдХрд╛ рдорд╛рдорд▓рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕рдВрдХреАрд░реНрдг рд╡рд░реНрдЧ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░реАрдлреИрдЪрд░реНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрддреЗ рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдП рд╣реИрдВред
рд╡рд╛рд╣! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рдмрдбрд╝рд╛ рдкрд╛рда рд▓рд┐рдЦрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕рд╛рд░ рдПрдХ рдЯреНрд╡реАрдЯ рдкрд░ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: тАЬрдЬрдм рдПрдХ рдХреИрд╢ рд▓рд╛рдЗрди рдХреЛ рдПрд▓рдПрд▓рд╕реА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХреЛрд░ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реА рдХреИрд╢ рд▓рд╛рдЗрди рдХреЛ рдПрд▓ 1 рдФрд░ / рдпрд╛ рдПрд▓ 2 рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдорд╛рд▓рд┐рдХ рд╣реИрдВред рддреЛ рдХреИрд╢ рдХреЛ рдЧрд░реНрдо рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред "