<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx</link><description>Jomo Fisher--There are two kinds of programming problems—those that can run in parallel and those that can’t. There’s no special sauce that can turn an inherently serial problem into an efficient parallel algorithm. Today’s top-end desktop has eight cores</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#5109811</link><pubDate>Tue, 25 Sep 2007 04:02:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5109811</guid><dc:creator>Steven Spencer</dc:creator><description>&lt;P&gt;This is why software engineers write software, and electronics engineers make hardware. &amp;nbsp;I feel like my eyes have been assaulted :P!&lt;/P&gt;
&lt;P&gt;I see where your coming from, but the fact of the matter is that the bottleneck in most systems is the caching and memory access, not the core number, or speed of the cores. &amp;nbsp;This is why the current quad core is actually 2 dual cores back to back, as the 4 cores / 1 cache system is extremely hard to get right.&lt;/P&gt;
&lt;P&gt;Secondly, you would never, ever implement communications across the CPU's through TCP/IP. &amp;nbsp;You would use a multi access register or dedicated on chip bus to communicate, as TCP/IP would be too expensive in both silicon and time taken.&lt;/P&gt;
&lt;P&gt;That said, the idea of several less powerful cores to do work with is very cool. &amp;nbsp;For instance the .net threadpool could be implemented at hardware level, so that when a thread is taken from the pool, it's literally runing on a core (or timeslice on a core).&lt;/P&gt;
&lt;P&gt;I would like to see a core that could run x86 instructions, with an instruction decoder that had a second microcoded instruction set for performing IL instructions and thus removing JIT overhead. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;I realise that you can't do everything through microcode (ie precalculated addresses for jumps etc), but any reduction to JIT time would give significant decreases to startup time. &amp;nbsp;Also the underlying calls could be implemented more effectively on a non x86 core optomised for .Net style instructions.&lt;/P&gt;
&lt;P&gt;Food for thought.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5109811" width="1" height="1"&gt;</description></item><item><title>-</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#5001513</link><pubDate>Thu, 20 Sep 2007 00:20:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5001513</guid><dc:creator>Sean Donovan</dc:creator><description>&lt;P&gt;Hmmm, your post has nearly perfectly described the products from Azul Systems. &amp;nbsp;They have custom silicon to thread JVMs, so called "compute appliances". &amp;nbsp;It's actually rather neat. &amp;nbsp;I think you're also trivializing the problem (and advantages?) of shared memory.&lt;/P&gt;
&lt;P&gt;Sean&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5001513" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4999740</link><pubDate>Wed, 19 Sep 2007 21:25:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4999740</guid><dc:creator>alephnaut</dc:creator><description>&lt;p&gt;Bob and Jomo,&lt;/p&gt;
&lt;p&gt;Asymmetric multiprocessing (aSMP) is, imho, a big part of why title porting to the PS3 (which uses the Cell - 1 main CPU, 7-8 special purpose processors) hasn't happened as quickly as hoped. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Major Nelson has a 4 part series article about why aSMP isn't appropriate for games but the analysis might apply equally well to application software. &amp;nbsp;The bulk of the time of the CPU is spent doing operations (fetch, load, store) that don't benefit from the specialized processors. &amp;nbsp;Put another way, most programs don't spend enough time doing things that specialized processors do well to justify the tradeoff (speed vs flexibility).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4999740" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4596693</link><pubDate>Mon, 27 Aug 2007 23:01:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4596693</guid><dc:creator>Jomo Fisher MSFT</dc:creator><description>&lt;p&gt;Bob,&lt;/p&gt;
&lt;p&gt;Re: your PS. I couldn't agree more. I'm not sure why this misunderstanding is popping up everywhere right now.&lt;/p&gt;
&lt;p&gt;Your comment makes me think: the thing we're missing is a true killer app for general purpose parallel. Vision? The possibilities here bogle my mind, but the software isn't here yet.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4596693" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4563480</link><pubDate>Sat, 25 Aug 2007 22:08:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4563480</guid><dc:creator>Bob Warfield</dc:creator><description>&lt;P&gt;A slightly different way to put your proposition (I don't buy Desktop SMP is dead) is that you'd rather have say 1 Wintel compatible fast as possible cpu + 32 simpleton massively parallel cpus than 8 identical Wintel cpus.&lt;/P&gt;
&lt;P&gt;I pull the 1+32 vs 8 out of thin air, but there is some tradeoff that would give you more simple cpus.&lt;/P&gt;
&lt;P&gt;The problem with this approach is finding a killer app for the simpleton cpus and creating all the dev tools to go with it since it is an incompatible architecture. &amp;nbsp;There is also the question of whether so many more cpus makes the problem of accessing memory over the system bus so much worse that you still lose versus fewer more powerful cpus.&lt;/P&gt;
&lt;P&gt;I tend to think the world will have enough trouble making massively parallel software if most of the cpus are the same. &amp;nbsp;However, I can easily envision special purpose apps. For example, imaging pairing the latest graphics GPU (basically a microprocessor) with a 64 cpu Tile 64 on the same board with very high speed memory and dedicated software to do graphics (pretty well understood parallel software) at unheard &amp;nbsp;of speeds? &amp;nbsp;If it worked, by the next year they'd have a 1+64 all on one chip equivalent and you could buy one at the store for $69.95.&lt;/P&gt;
&lt;P&gt;Cheers!&lt;/P&gt;
&lt;P&gt;BW&lt;/P&gt;
&lt;P&gt;PS &amp;nbsp;Can't we put to rest once and for all that even if windows is running 64 threads it can't keep 64 cores busy? &amp;nbsp;Take a look at the column that shows cpu utilization. &amp;nbsp;Nearly all of those threads are asleep, using 0 cpu, waiting for something to happen. &amp;nbsp;Windows will do well just to keep 4 cores busy under the worst cases on a desktop.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4563480" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End for PCs</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4528516</link><pubDate>Thu, 23 Aug 2007 20:10:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4528516</guid><dc:creator>Jomo Fisher MSFT</dc:creator><description>&lt;p&gt;Joseph,&lt;/p&gt;
&lt;p&gt;I noticed the TILE64 has a variation that runs on a card in the PCI slot. I was thinking the main CPU would be the one in my PC and the slave processors would be the ones on the card.&lt;/p&gt;
&lt;p&gt;Yeah, you're right about Cell, but when I wrote this I was thinking (though not accurately conveying) that I think mainstream PC processors should head this way.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4528516" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4528144</link><pubDate>Thu, 23 Aug 2007 19:38:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4528144</guid><dc:creator>Joseph Huang</dc:creator><description>&lt;p&gt;Sounds similar to the Cell CPU.&lt;/p&gt;
&lt;p&gt;And no, the TILE64 is not similar to what you are talking about. It has 64 identical processors which have reconfigurable interconnects.&lt;/p&gt;
&lt;p&gt;If you read a bit about TILE64, you would find that you can compile C code to it. So any .NET implementation written in C would work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4528144" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4526358</link><pubDate>Thu, 23 Aug 2007 17:19:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4526358</guid><dc:creator>Justin </dc:creator><description>&lt;p&gt;I think that multi-core is a short term stepping stone for all vendors.&lt;/p&gt;
&lt;p&gt;All of the vendors have many core solutions on their roadmaps and whilst your observation, that not all tasks can be run in parallel, is correct, the availability of other cores allows your serial application to run in a much less resourse constrained environment.&lt;/p&gt;
&lt;p&gt;Many core is coming, multi-core is our opportunity to make sure we are appropriately equipped to take advantage of the parallel if appropriate. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4526358" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4516906</link><pubDate>Thu, 23 Aug 2007 02:48:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4516906</guid><dc:creator>Jonathan Allen</dc:creator><description>&lt;p&gt;I think you missed the point.&lt;/p&gt;
&lt;p&gt;Currently my computer has 48 processes running. If I had one CPU per process, then each application could run at full speed instead of constantly fighting for the same CPU.&lt;/p&gt;
&lt;p&gt;I would get this gain without any change what so ever to my existing applications.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4516906" width="1" height="1"&gt;</description></item><item><title>re: Why Symmetric Multicore is a Dead End</title><link>http://blogs.msdn.com/b/jomo_fisher/archive/2007/06/25/why-symmetric-multicore-is-a-dead-end.aspx#4515784</link><pubDate>Thu, 23 Aug 2007 00:30:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4515784</guid><dc:creator>Jomo Fisher MSFT</dc:creator><description>&lt;p&gt;Acceleratingthings,&lt;/p&gt;
&lt;p&gt;I think maybe TCP\IP is too literal. What I'm thinking of is a flexible communication structure that scales in complexity linearly with the number of processors.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4515784" width="1" height="1"&gt;</description></item></channel></rss>