<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mastering Multicore Performance</title>
	<atom:link href="http://bezenek.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bezenek.wordpress.com</link>
	<description>Information about multi-core programming, etc.</description>
	<lastBuildDate>Fri, 07 May 2010 22:21:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bezenek.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/fc6a9beb544d176d17f892a3e7990930?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Mastering Multicore Performance</title>
		<link>http://bezenek.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bezenek.wordpress.com/osd.xml" title="Mastering Multicore Performance" />
	<atom:link rel='hub' href='http://bezenek.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Kellblog: A view into the guts of Silicon Valley.</title>
		<link>http://bezenek.wordpress.com/2010/04/26/kellblog-learn-about-the-guts-of-silicon-valley/</link>
		<comments>http://bezenek.wordpress.com/2010/04/26/kellblog-learn-about-the-guts-of-silicon-valley/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 11:28:56 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://bezenek.wordpress.com/?p=171</guid>
		<description><![CDATA[While preparing for a job interview, I ran across Kellblog.  It is a Blog written by the CEO of MarkLogic, Dave Kellogg. From reading the blog to be ready for my interview, I find Dave has an excellent vertical view of Silicon Valley, from the engineer up to the big conglomerate companies.  He focuses a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=171&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While preparing for a job interview, I ran across <a href="http://www.kellblog.com/best-of-kellblog/" target="_blank">Kellblog</a>.  It is a Blog written by the CEO of <a href="http://www.marklogic.com/" target="_blank">MarkLogic</a>, Dave Kellogg.</p>
<p>From reading the blog to be ready for my interview, I find Dave has an excellent vertical view of Silicon Valley, from the engineer up to the big conglomerate companies.  He focuses a bit on the players in search and databases, as that is his area, but I expect many aspects of his posts are universal in the high-tech business.</p>
<p>-Todd</p>
<p>p.s. I was thinking Dave should have named his blog &#8220;KellBlogg&#8221; instead of &#8220;Kellblog,&#8221; but if you look at <a href="http://www.kellblog.com/2009/10/12/update-on-the-renaming-effort/" target="_blank">one of his blog posts</a>, you will see why that is a poor marketing choice.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=171&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/26/kellblog-learn-about-the-guts-of-silicon-valley/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
		<item>
		<title>Event Timing:  Why the Microsoft Way Is Not the Best Way</title>
		<link>http://bezenek.wordpress.com/2010/04/13/why-the-microsoft-way-is-wrong/</link>
		<comments>http://bezenek.wordpress.com/2010/04/13/why-the-microsoft-way-is-wrong/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 07:05:14 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[Programming Tips]]></category>

		<guid isPermaLink="false">http://bezenek.wordpress.com/?p=130</guid>
		<description><![CDATA[Microsoft wants you to use their library entries: QueryPerformanceFrequency() and QueryPerformanceCounter() The first is OK, as it will give you an accurate number of cycles per second as returned by the intrinsic __rdtsc, which executes the RDTSC instruction.  That is, if you divide the value returned by __rdtsc by that returned by QueryPerformaceFrequency() you will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=130&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Microsoft wants you to use their library entries:</p>
<p>QueryPerformanceFrequency()</p>
<p>and</p>
<p>QueryPerformanceCounter()</p>
<p>The first is OK, as it will give you an accurate number of cycles per second as returned by the <em>intrinsic </em><strong>__rdtsc</strong>, which executes the RDTSC instruction.  That is, if you divide the value returned by <strong>__rdtsc </strong>by that returned by QueryPerformaceFrequency() you will get a value in seconds.  This value may vary by processor, so QueryPerformanceFrequency() is valuable, but it should be considered &#8220;expensive,&#8221; and thus only called at the start or end of a performance-critical section of code.</p>
<p>I noticed QueryPerformanceFrequency() returns an incorrect value when running in a 32-bit program executing on 64-bit Windows 7.  The value is 1,000 Hz too small.  This is easy to fix.  I have not experimented to see what is returned by querying the counter directly:</p>
<blockquote>
<pre>// Get the current ticks per second from the CPU.
unsigned __int64 m_ticksPerSecond;
__asm {
  mov ecx, 0xe8
  rdmsr
  mov m_ticksPerSecond,   eax
  mov m_ticksPerSecond+4, edx
}</pre>
</blockquote>
<p>QueryPerformanceCounter() is deathly expensive, and can ruin your performance evaluation if you are not aware of it.</p>
<p>QueryPerformanceCounter() does the same thing as <strong>__rdtsc</strong>, but requires a trap into the operating system.  This would be our burden if <strong>__rdtsc</strong> were always protected by the OS, but it is usually not (see my previous article.)</p>
<p>If we assume we must use QueryPerformanceCounter() to get a current cycle count, this is what we can expect:</p>
<blockquote>
<pre>LARGE_INTEGER m_temp;  // LARGE_INTEGER is MS-specific.
unsigned __int64 m_startTick;

QueryPerformanceCounter(&amp;m_temp);
m_startTick = m_temp.QuadPart;</pre>
</blockquote>
<p>Execution time for QueryPerformanceCounter():</p>
<pre>Kernel time: 47 nanoseconds  <strong>(110 cycles)</strong>
User time:   32 nanoseconds  <strong>(75 cycles)</strong>
Total Time:  79 nanoseconds  <strong>(185 cycles)</strong></pre>
<p>The timings are similar for the VS 2005 and Intel compilers.</p>
<p>Using the __rdtsc intrinsic required 3-5 cycles, so <strong>it is about 50 times as fast</strong> as using QueryPerformanceCounter().</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=130&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/13/why-the-microsoft-way-is-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
		<item>
		<title>Timing the Event Timer</title>
		<link>http://bezenek.wordpress.com/2010/04/12/timing-the-timer/</link>
		<comments>http://bezenek.wordpress.com/2010/04/12/timing-the-timer/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 03:06:09 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[Programming Tips]]></category>

		<guid isPermaLink="false">http://bezenek.wordpress.com/?p=71</guid>
		<description><![CDATA[Let&#8217;s use the __rdtsc timing mechanism to time itself.  This will provide a measure of the observer effect it induces, as well as a measure of how well it might work as an ultimate timing device.   Given such a tool, it is possible to evaluate the performance of almost any program. These examples are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=71&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s use the <strong>__rdtsc </strong>timing mechanism to time itself.  This will provide a measure of the <a href="http://en.wikipedia.org/wiki/Observer_effect_%28information_technology%29" target="_blank">observer effect </a>it induces, as well as a measure of how well it might work as an ultimate timing device.   Given such a tool, it is possible to evaluate the performance of almost any program.</p>
<p>These examples are executed using the Visual Studio 2005 compiler.  Results are given for the Intel compiler only when they differ.  For simple examples like these, the results are usually the same.</p>
<h3>Pinning the Process to Core Zero</h3>
<p>I will start by pinning the monitored process to core #0 of the four cores on my system.  If I allow the process to simply run on my system, it might be migrated by the operating system (Windows XP) between the four cores on my processor many times per second.  This migration can skew the results of the test.  I &#8220;pin&#8221; the process to core zero using the statement:</p>
<blockquote>
<pre>SetProcessAffinityMask(GetCurrentProcess(), 0x01);</pre>
</blockquote>
<p>The hexadecimal value &#8220;0&#215;01&#8243; tells Windows to assign this process to core zero.  (I know this does not make a lot of sense, but the cores are assigned to each binary digit, starting from the right.  Core zero is &#8220;x1&#8243;, core 3 is &#8220;x4&#8243;, and core 4 would be  &#8220;x10&#8243;, if I had more than four cores in my system.)  If I wanted to describe cores 0 and 4, I would use &#8220;x11&#8243;, which corresponds to the binary number &#8220;b10001.&#8221;</p>
<h3>The Timing</h3>
<p>I now will show some timings, with the running process &#8220;pinned&#8221; to core zero as mentioned above.  The results are likely to be the same without the pinning, but we would not be certain the experiment was sound.</p>
<p>The CpuTimer type uses the __rdtsc values.</p>
<blockquote>
<pre>CpuTimer timer, timer1, timer2;
timer2.Start();
for (int n = 0; n &lt; 100000000; n++) {
  timer1.Start();
  timer.Start(); timer.Stop();
  timer1.Stop(); timer1.GetTimeSeconds();
}
timer2.Stop();</pre>
</blockquote>
<h3>Results:</h3>
<ul>
<li>Time to do a Start()/Stop() pair:  between 1.4 and 1.7 nanoseconds <strong>(3-5 cycles)</strong></li>
</ul>
<ul>
<li> Time to do GetTimeSeconds(), which is dominated by the time to convert the number of ticks to a 64-bit floating point number: about 5 nanoseconds <strong>(12-15 cycles)</strong></li>
</ul>
<p>The cycle counts for a 64-bit FP divide on my machine are:  latency 6, throughput 5, so the time to convert the number of ticks to a floating-point number is spot-on.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=71&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/12/timing-the-timer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
		<item>
		<title>Timing Events</title>
		<link>http://bezenek.wordpress.com/2010/04/12/how-to-time-events/</link>
		<comments>http://bezenek.wordpress.com/2010/04/12/how-to-time-events/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 02:26:54 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[Programming Tips]]></category>

		<guid isPermaLink="false">http://bezenek.wordpress.com/?p=62</guid>
		<description><![CDATA[When timing events, accuracy is paramount.  To attain this, two things must be done: (i) make the timer interval as small as possible and (ii) make sure the timer does not influence the event being timed.  If the timer influences the timed event, some people mistakenly call this the Heisenberg Uncertainty Principle, which is correctly [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=62&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When timing events, accuracy is paramount.  To attain this, two things must be done: (i) make the timer interval as small as possible and (ii) make sure the timer does not influence the event being timed.  If the timer influences the timed event, some people mistakenly call this the <a href="http://en.wikipedia.org/wiki/Uncertainty_principle#Popular_culture" target="_blank">Heisenberg Uncertainty Principle</a>, which is correctly know as the <a href="http://en.wikipedia.org/wiki/Observer_effect_%28information_technology%29" target="_blank">observer effect</a>.</p>
<p>Many contemporary processors provide a mechanism to access a cycle counter accurate to a single cycle.  In recent x86 processors, we are able to access a count of the number of cycles since the processor was last started via the <em>rdtsc</em>, or &#8220;read time-stamp counter&#8221; instruction.  On my test machine, this counter is accurate to 1/2,330,000,000th of a  second or about 43 nanoseconds!  Compare this to the well-known Unix time() function which returns the time accurate to the nearest second.</p>
<p>Both the Visual Studio and Intel compilers provide and <em>intrinsic </em>to allow easy execution of this instruction in a C/C++ program:  __rdtsc.</p>
<p>In some secure environments (envision the NSA protecting its computers from some evil hacker), the operating system (OS) may not want to allow a normal user program to directly query the value of the time-stamp counter register.  But, in Windows and the Unix OSes with which I am familiar, you can access this directly.  Accessing it indirectly can cause trouble, as will be shown in later posts.</p>
<h3>The __rdtsc Intrinsic</h3>
<p>The __rdtsc <em>intrinsic </em>returns the number of clock cycles (stored in the time-stamp counter register) since the last system reset.  This is a 64-bit unsigned value, so on my 2.33GHz machine, it takes just over 250 years for this to wrap-around back to zero.  So, we can use it to time almost any event.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=62&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/12/how-to-time-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
		<item>
		<title>Multiple Cores v. Higher Processor Speeds</title>
		<link>http://bezenek.wordpress.com/2010/04/12/multiple-cores-v-higher-processor-speeds/</link>
		<comments>http://bezenek.wordpress.com/2010/04/12/multiple-cores-v-higher-processor-speeds/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 23:52:54 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[General Information]]></category>

		<guid isPermaLink="false">http://bezenek.wordpress.com/?p=40</guid>
		<description><![CDATA[Processor speeds peaked during the lifetime of the Intel Pentium 4 processor line.  At this point, the industry in general realized the power cost of additional processing speed was too large to continue.  See The Future of Microprocessors for more information. We are now faced with a future where the performance of software with only [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=40&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Processor speeds peaked during the lifetime of the Intel Pentium 4  processor line.  At this point, the industry in general realized the  power cost of additional processing speed was too large to continue.   See <a href="http://portal.acm.org/citation.cfm?id=1095418" target="_blank">The  Future of Microprocessors</a> for more information.</p>
<p>We are now faced with a future where the performance of software with  only a single thread of execution will not continue to double every 18  months as a result of <a href="http://en.wikipedia.org/wiki/Moore%27s_law" target="_blank">Moore&#8217;s  Law</a> as it has in the past.</p>
<blockquote><p><strong>Side note:</strong> Moore&#8217;s Law states: &#8220;The number of  transistors which can be placed inexpensively on an integrated circuit  [tends to double] approximately every two years.&#8221;  It does not say  programs will run faster or clock rates will go up or anything else.   Moore&#8217;s Law refers to transistor counts, period.</p>
<p>In the past, having more transistors lead to on-chip  floating-point units, superscalar pipelines, out-of-order execution,  caching, and prediction mechanisms which used transistors to allow a  single thread to execute faster at a given clock rate.  Also,  transistors with smaller feature sizes were able to be clocked at higher  rates, giving an additional performance increase for a single thread of  code.  Today, processor designers have billions of transistors  available, and clock rates are constrained by power limitations.</p></blockquote>
<p>As a result, in order to continue to benefit from Moore&#8217;s Law,  programmers will have to build multi-threaded applications which scale  well to current (4-12) and future multicore counts.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=40&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/12/multiple-cores-v-higher-processor-speeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction</title>
		<link>http://bezenek.wordpress.com/2010/04/08/hello-world/</link>
		<comments>http://bezenek.wordpress.com/2010/04/08/hello-world/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 16:43:42 +0000</pubDate>
		<dc:creator>bezenek</dc:creator>
				<category><![CDATA[General Information]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Please feel free to comment on or challenge anything you see in this blog.  This is how I learn the details of complex issues. In general, I will talk about the x86 family of processors in this blog.  This includes those made by Intel and AMD.  If a discussion of other implementations of the x86 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=1&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Please feel free to comment on or challenge anything you see in this blog.  This is how I learn the details of complex issues.</p>
<p>In general, I will talk about the x86 family of processors in this blog.  This includes those made by Intel and AMD.  If a discussion of other implementations of the x86 ISA or other ISAs, e.g., SPARC, PowerPC, ARM, MIPS, etc., is included, the specific ISA or its implementation will be denoted.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bezenek.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bezenek.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bezenek.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bezenek.wordpress.com&amp;blog=13030453&amp;post=1&amp;subd=bezenek&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bezenek.wordpress.com/2010/04/08/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5fabfe1acaa0f1a5239b6bf7bf387dfc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bezenek</media:title>
		</media:content>
	</item>
	</channel>
</rss>
