<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>EMSTONE Bebop &#187; Threading</title>
	<atom:link href="http://bebop.emstone.com/tags/threading/feed/" rel="self" type="application/rss+xml" />
	<link>http://bebop.emstone.com</link>
	<description>엠스톤 개발팀 블로그</description>
	<lastBuildDate>Sun, 29 Jan 2012 05:25:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
		<item>
		<title>False Sharing 회피</title>
		<link>http://bebop.emstone.com/2008/12/29/avoiding-false-sharing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=avoiding-false-sharing</link>
		<comments>http://bebop.emstone.com/2008/12/29/avoiding-false-sharing/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 01:16:34 +0000</pubDate>
		<dc:creator>moonpfe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Threading]]></category>

		<guid isPermaLink="false">http://bebop.emstone.com/?p=313</guid>
		<description><![CDATA[False sharing 은 멀티 프로세서 환경에서 서로 다른 쓰레드가 공유 캐시 라인의 서로 다른 위치에 쓰려고 할 때 발생한다고 합니다. 이로 인해 심각한 성능 하락이 생길 수 있다고 합니다. 다음은 False sharing 이 발생하는 예입니다. 그림에서 보는 바와 같이 Thread &#8230; <a href="http://bebop.emstone.com/2008/12/29/avoiding-false-sharing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>False sharing 은 멀티 프로세서 환경에서 서로 다른 쓰레드가 공유 캐시 라인의 서로 다른 위치에 쓰려고 할 때 발생한다고 합니다. 이로 인해 심각한 성능 하락이 생길 수 있다고 합니다.</p>
<p>다음은 False sharing 이 발생하는 예입니다. 그림에서 보는 바와 같이 Thread 0 과 Thread 1 이 각각 Core 0, Core 1 에서 동작하고 있습니다. 그리고 각각 개인 캐시(Private Cache) 인 L1 캐시를 가지고, 공유 캐시인 L2 캐시를 가지고 동작할 때, Core 0, 1 이 각각 공유 캐시의 같은 라인을 사용하는 개인 캐시 라인에 쓰려고 할 경우 발생합니다.</p>
<p style="text-align: center;"><img class="size-full wp-image-314 aligncenter" src="http://bebop.emstone.com/wp-content/uploads/2008/12/false_sharing.png" alt="false_sharing" width="339" height="281" /></p>
<p><strong>False sharing 을 피하는 방법들</strong></p>
<ul>
<li> 쓰레드 간에 공유하지 않는 데이터를 서로 다른 캐시 라인에 할당하도록 합니다.</li>
<li>전역 변수를 함수의 지역 변수로 복사하고, 처리한 후 함수에서 나가기 전에 지역 변수를 전역 변수에 복사해 줍니다.</li>
<li> 쓰레드를 하나의 코어에서 수행하도록 합니다.</li>
</ul>
<p><strong>Reference</strong></p>
<ul>
<li><a href="http://software.intel.com/en-us/articles/software-techniques-for-shared-cache-multi-core-systems">Software Techniques for Shared-Cache Multi-Core Systems</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bebop.emstone.com/2008/12/29/avoiding-false-sharing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/kr/</creativeCommons:license>
	</item>
	</channel>
</rss>

