<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Multicore Programming: The Next Frontier?</title>
	<atom:link href="http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/feed/" rel="self" type="application/rss+xml" />
	<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/</link>
	<description>Deep Insights for Chip Architects and Engineers</description>
	<lastBuildDate>Thu, 24 May 2012 23:22:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<item>
		<title>By: Cory Isaacson</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-6193</link>
		<dc:creator>Cory Isaacson</dc:creator>
		<pubDate>Sat, 28 Feb 2009 19:46:50 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-6193</guid>
		<description>This article makes very good points, for sure parallel processing and multi-threaded code is a real challenge. There is a new technique, Software Pipelines, which addresses this, taking advantage of multi-core technology without the low-level pain of multi-threaded programming. Using pipelines, service components can be run in parallel, without the service component itself being aware of the runtime environment.

Here is a link to the book I recently published on the subject if you are interested:

http://www.amazon.com/gp/aw/d.html/191-4626580-2453906?ie=UTF8&amp;a=0137137974</description>
		<content:encoded><![CDATA[<p>This article makes very good points, for sure parallel processing and multi-threaded code is a real challenge. There is a new technique, Software Pipelines, which addresses this, taking advantage of multi-core technology without the low-level pain of multi-threaded programming. Using pipelines, service components can be run in parallel, without the service component itself being aware of the runtime environment.</p>
<p>Here is a link to the book I recently published on the subject if you are interested:</p>
<p><a href="http://www.amazon.com/gp/aw/d.html/191-4626580-2453906?ie=UTF8&#038;a=0137137974" rel="nofollow">http://www.amazon.com/gp/aw/d.html/191-4626580-2453906?ie=UTF8&#038;a=0137137974</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Unchalo</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-6121</link>
		<dc:creator>Daniel Unchalo</dc:creator>
		<pubDate>Tue, 10 Feb 2009 17:49:47 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-6121</guid>
		<description>The book &quot;C# 2008 and 2005 threaded prorgamming&quot; is really cool and it has great examples.
Highly recommended to every developer who want to learn multicore programming.</description>
		<content:encoded><![CDATA[<p>The book &#8220;C# 2008 and 2005 threaded prorgamming&#8221; is really cool and it has great examples.<br />
Highly recommended to every developer who want to learn multicore programming.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Unchalo</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-6085</link>
		<dc:creator>Daniel Unchalo</dc:creator>
		<pubDate>Wed, 21 Jan 2009 16:29:51 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-6085</guid>
		<description>There is a new book about multicore programming with C# 2005 and 2008, by Packt Publishing. It sounds interesting. Look at this link http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book  
  
It sounds cool.

I&#039;m interested in multicore and parallel programming. I&#039;ll buy the book and I&#039;ll post my coments somewhere.</description>
		<content:encoded><![CDATA[<p>There is a new book about multicore programming with C# 2005 and 2008, by Packt Publishing. It sounds interesting. Look at this link <a href="http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book" rel="nofollow">http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book</a>  </p>
<p>It sounds cool.</p>
<p>I&#8217;m interested in multicore and parallel programming. I&#8217;ll buy the book and I&#8217;ll post my coments somewhere.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-180</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Mon, 17 Nov 2008 14:57:42 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-180</guid>
		<description>[quote]Multicore doesn’t offer better energy efficiency and it doesn’t offer better performance for most applications. So what’s the selling point?[/quote]

Fragrate and frame rate.  Megabucks go into improving the KDR (Kill/Death Ratio).  This is gaming lingo, but applies to Military operations, and to Wall Street.  We use supercomputers because we lack good parallel computers (and the supers are multiple parallel) to modle nuclear implosions and explosions, Wall Street does (and will increasingly) do the same to &quot;milk the cow&quot; (exploit the market) to the critical edge of not killing it.</description>
		<content:encoded><![CDATA[<p>[quote]Multicore doesn’t offer better energy efficiency and it doesn’t offer better performance for most applications. So what’s the selling point?[/quote]</p>
<p>Fragrate and frame rate.  Megabucks go into improving the KDR (Kill/Death Ratio).  This is gaming lingo, but applies to Military operations, and to Wall Street.  We use supercomputers because we lack good parallel computers (and the supers are multiple parallel) to modle nuclear implosions and explosions, Wall Street does (and will increasingly) do the same to &#8220;milk the cow&#8221; (exploit the market) to the critical edge of not killing it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ed</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-165</link>
		<dc:creator>ed</dc:creator>
		<pubDate>Mon, 17 Nov 2008 00:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-165</guid>
		<description>One core is plenty for most applications. But dedicating a core to each application, or at least to some applications, is incredibly inefficient. Data centers are now dealing with that problem. Each server is running at a max of 15% utilization because everyone was afraid to load more than one Microsoft app and OS on a server because it wasn&#039;t as robust as Unix or any of the mainframe or minicomputer OSes. Now they&#039;re resorting to virtualization, which brings its own issues. Just lobbing the challenge to the software programmers isn&#039;t helping. They&#039;ve already concluded over four decades that they can&#039;t solve it.</description>
		<content:encoded><![CDATA[<p>One core is plenty for most applications. But dedicating a core to each application, or at least to some applications, is incredibly inefficient. Data centers are now dealing with that problem. Each server is running at a max of 15% utilization because everyone was afraid to load more than one Microsoft app and OS on a server because it wasn&#8217;t as robust as Unix or any of the mainframe or minicomputer OSes. Now they&#8217;re resorting to virtualization, which brings its own issues. Just lobbing the challenge to the software programmers isn&#8217;t helping. They&#8217;ve already concluded over four decades that they can&#8217;t solve it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sebastien renaud</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-107</link>
		<dc:creator>sebastien renaud</dc:creator>
		<pubDate>Fri, 14 Nov 2008 21:07:12 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-107</guid>
		<description>Really interesting subject, but as always, I fail to understand why people think a paradigm shift ( new programming model/language ) is necessary in order to take advantage of it. Humans think in sequential terms and cores execute in a sequential fashion ( if you abstract the multi-alu / instruction reordering stuff that have been the norm on in SINGLE core processors for a long while ). Bottom line is: I strongly agree with Gene Bushuyev you will always gain from structuring your sequential modules with clean and minimized interfaces. Taking advantages of multiple cores with that kind of code is much easier. I also agree with the fact that some application are more geared towards parallelism than others. However, who really needs to split up Word or Excel? Assuming that 16 cores CPUs are not too far off, a single core for each application seems good enough, no?</description>
		<content:encoded><![CDATA[<p>Really interesting subject, but as always, I fail to understand why people think a paradigm shift ( new programming model/language ) is necessary in order to take advantage of it. Humans think in sequential terms and cores execute in a sequential fashion ( if you abstract the multi-alu / instruction reordering stuff that have been the norm on in SINGLE core processors for a long while ). Bottom line is: I strongly agree with Gene Bushuyev you will always gain from structuring your sequential modules with clean and minimized interfaces. Taking advantages of multiple cores with that kind of code is much easier. I also agree with the fact that some application are more geared towards parallelism than others. However, who really needs to split up Word or Excel? Assuming that 16 cores CPUs are not too far off, a single core for each application seems good enough, no?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ed</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-77</link>
		<dc:creator>ed</dc:creator>
		<pubDate>Fri, 07 Nov 2008 22:16:35 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-77</guid>
		<description>The bigger issue behind all of this is what&#039;s going to be the impetus to buy new hardware--computers or otherwise--if it doesn&#039;t offer better performance.

Car makers are in a bind now for the same thing. The rising price of gas (even if it has taken a dip, it will go back up) means the real focus is gas mileage. It&#039;s great to step on the accelerator and feel real power, but the biggest selling point is fuel economy. That&#039;s why rental car companies are charging extra money for hybrids.

Multicore doesn&#039;t offer better energy efficiency and it doesn&#039;t offer better performance for most applications. So what&#039;s the selling point?</description>
		<content:encoded><![CDATA[<p>The bigger issue behind all of this is what&#8217;s going to be the impetus to buy new hardware&#8211;computers or otherwise&#8211;if it doesn&#8217;t offer better performance.</p>
<p>Car makers are in a bind now for the same thing. The rising price of gas (even if it has taken a dip, it will go back up) means the real focus is gas mileage. It&#8217;s great to step on the accelerator and feel real power, but the biggest selling point is fuel economy. That&#8217;s why rental car companies are charging extra money for hybrids.</p>
<p>Multicore doesn&#8217;t offer better energy efficiency and it doesn&#8217;t offer better performance for most applications. So what&#8217;s the selling point?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gene Bushuyev</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-67</link>
		<dc:creator>Gene Bushuyev</dc:creator>
		<pubDate>Fri, 31 Oct 2008 17:54:29 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-67</guid>
		<description>The article presents very good observations on both technical and programming challenges facing multi-core development. And if the hardware challenges, like memory performance, bus saturation, etc. may be solved in the near future, software problems will remain. The fact that human brain cannot multitask (medical fact) naturaly leads to software solutions that are sequential. Simply giving software developer a good thread library doesn&#039;t change that, it&#039;s still very hard for a person to reason in asynchronous, parallel manner. That results in software programs that are slow to develop, and debug, and that contain not only logical bugs, but also bugs, related to unpredictable thread counteraction.
On a positive side, working on our own event-driven GBL designer, I&#039;ve found that partitioning a design to modules, which communicate only through signal interfaces and are not coupled otherwise, leads to quite natural parallelization. Event-driven architecture naturally allows a developer to reason about event-response decisions, not about sequential program flow.
Designs that are based on event-driven mechanism show amaizingly loose coupling and can be naturally parallelized without any extra efforts from a programmer.</description>
		<content:encoded><![CDATA[<p>The article presents very good observations on both technical and programming challenges facing multi-core development. And if the hardware challenges, like memory performance, bus saturation, etc. may be solved in the near future, software problems will remain. The fact that human brain cannot multitask (medical fact) naturaly leads to software solutions that are sequential. Simply giving software developer a good thread library doesn&#8217;t change that, it&#8217;s still very hard for a person to reason in asynchronous, parallel manner. That results in software programs that are slow to develop, and debug, and that contain not only logical bugs, but also bugs, related to unpredictable thread counteraction.<br />
On a positive side, working on our own event-driven GBL designer, I&#8217;ve found that partitioning a design to modules, which communicate only through signal interfaces and are not coupled otherwise, leads to quite natural parallelization. Event-driven architecture naturally allows a developer to reason about event-response decisions, not about sequential program flow.<br />
Designs that are based on event-driven mechanism show amaizingly loose coupling and can be naturally parallelized without any extra efforts from a programmer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Gross</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-55</link>
		<dc:creator>John Gross</dc:creator>
		<pubDate>Sun, 26 Oct 2008 10:08:44 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-55</guid>
		<description>Peter Robertson hits the nail on the head when he points out that most code that is being written for multi-core assumes a shared memory model, and because this entails use of reference (to avoid gratuitous movement of data), will not work in a distributed memory environment.  And since it is generally agreed that the shared memory model is unlikely to scale past 8/16 cores, in about 3 or 4 years time, the industry is looking at another major upheaval.

Connective Logic&#039;s Blueprint toolset provides a means of developing software that works with both memory models.  In the shared memory case data is exchanged by reference, but when the same code runs on a cluster the data is transparently moved and cached.  When it&#039;s no longer referenced it&#039;s garbage collected.  The developer only ever sees a Single Virtual Process and mapping to actual physical processes is achieved using &#039;late-accretion&#039;, which does not impact on the &#039;application&#039; code itself (see www.connectivelogic.co.uk).</description>
		<content:encoded><![CDATA[<p>Peter Robertson hits the nail on the head when he points out that most code that is being written for multi-core assumes a shared memory model, and because this entails use of reference (to avoid gratuitous movement of data), will not work in a distributed memory environment.  And since it is generally agreed that the shared memory model is unlikely to scale past 8/16 cores, in about 3 or 4 years time, the industry is looking at another major upheaval.</p>
<p>Connective Logic&#8217;s Blueprint toolset provides a means of developing software that works with both memory models.  In the shared memory case data is exchanged by reference, but when the same code runs on a cluster the data is transparently moved and cached.  When it&#8217;s no longer referenced it&#8217;s garbage collected.  The developer only ever sees a Single Virtual Process and mapping to actual physical processes is achieved using &#8216;late-accretion&#8217;, which does not impact on the &#8216;application&#8217; code itself (see <a href="http://www.connectivelogic.co.uk" rel="nofollow">http://www.connectivelogic.co.uk</a>).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Robertson</title>
		<link>http://chipdesignmag.com/sld/blog/2008/10/22/multicore-programming-the-next-frontier/comment-page-1/#comment-48</link>
		<dc:creator>Peter Robertson</dc:creator>
		<pubDate>Fri, 24 Oct 2008 10:27:15 +0000</pubDate>
		<guid isPermaLink="false">http://chipdesignmag.com/sld/?p=406#comment-48</guid>
		<description>Multicore is not the answer as it fails for at least three reasons.

1: It is hoping to make legacy code run faster by some automatic or semi-automatic
   process.  The reality is that existing sequential programs are doomed. We either
   waste huge amounts of effort in dead ends that restrict progress by forever
   looking backwards or we realise that new code written to a better model is what
   eventually must dominate.

2: Processor complexity is growing out of control. It is a sad fact that computing
   is the only area of engineering where &quot;more complex&quot; is considered &quot;better&quot;.
   Multicore is a prime example. Even though a certain complexity is inevitable, it
   should also be invisible. It seems that processor designers add new features with
   little consideration of their effects on software (or if they do, it&#039;s only for
   existing software built to work round existing hardware deficiencies). For example,
   should you really need &gt;100 registers to program a transfer on one serial link
   (sRIO on TI C6000 processors)? Are there no engineers with the knowledge and
   courage to protest about such nonsense when they see it?
   
3: Multicore is a shared-resource architecture and as such cannot scale. Even if
   existing multicore architectures were perfect, the needs of tomorrow will require
   greater numbers of processors and we would end up right back where we are now. We
   would be forced to add yet another ad hoc mechanism (such as building clusters of
   multicores) that would lead us right back to rewriting software.
   
At some stage we will have no choice but to move to true distributed parallelism that
does not have these built-in limitations. There will still be hardware challenges, but
they and their solutions must not be directly visible to the underlying programming model.

Processors are essentially sequential; parallelism comes from having many of them.
Given this, existing programming languages, even though dreadful in many ways, are
widely known and adequate to express what happens on each processor. All that is needed
is an environment in which explicitly sequential, but independent, components can be
distributed over numerous processors. We would then have a chance that programs written
for such systems would survive and match the faster processors of the future.

Peter S. Robertson
3L Ltd</description>
		<content:encoded><![CDATA[<p>Multicore is not the answer as it fails for at least three reasons.</p>
<p>1: It is hoping to make legacy code run faster by some automatic or semi-automatic<br />
   process.  The reality is that existing sequential programs are doomed. We either<br />
   waste huge amounts of effort in dead ends that restrict progress by forever<br />
   looking backwards or we realise that new code written to a better model is what<br />
   eventually must dominate.</p>
<p>2: Processor complexity is growing out of control. It is a sad fact that computing<br />
   is the only area of engineering where &#8220;more complex&#8221; is considered &#8220;better&#8221;.<br />
   Multicore is a prime example. Even though a certain complexity is inevitable, it<br />
   should also be invisible. It seems that processor designers add new features with<br />
   little consideration of their effects on software (or if they do, it&#8217;s only for<br />
   existing software built to work round existing hardware deficiencies). For example,<br />
   should you really need &gt;100 registers to program a transfer on one serial link<br />
   (sRIO on TI C6000 processors)? Are there no engineers with the knowledge and<br />
   courage to protest about such nonsense when they see it?</p>
<p>3: Multicore is a shared-resource architecture and as such cannot scale. Even if<br />
   existing multicore architectures were perfect, the needs of tomorrow will require<br />
   greater numbers of processors and we would end up right back where we are now. We<br />
   would be forced to add yet another ad hoc mechanism (such as building clusters of<br />
   multicores) that would lead us right back to rewriting software.</p>
<p>At some stage we will have no choice but to move to true distributed parallelism that<br />
does not have these built-in limitations. There will still be hardware challenges, but<br />
they and their solutions must not be directly visible to the underlying programming model.</p>
<p>Processors are essentially sequential; parallelism comes from having many of them.<br />
Given this, existing programming languages, even though dreadful in many ways, are<br />
widely known and adequate to express what happens on each processor. All that is needed<br />
is an environment in which explicitly sequential, but independent, components can be<br />
distributed over numerous processors. We would then have a chance that programs written<br />
for such systems would survive and match the faster processors of the future.</p>
<p>Peter S. Robertson<br />
3L Ltd</p>
]]></content:encoded>
	</item>
</channel>
</rss>

