<?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: PC progression</title>
	<atom:link href="http://www.philsteinmeyer.com/69/pc-progression/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.philsteinmeyer.com/69/pc-progression/</link>
	<description>Phil Steinmeyer's rumblings on the game biz, programming, and life</description>
	<lastBuildDate>Thu, 24 Jun 2010 12:48:14 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Mike Rozak</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-244</link>
		<dc:creator>Mike Rozak</dc:creator>
		<pubDate>Thu, 09 Mar 2006 22:52:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-244</guid>
		<description>StGabe - Yes, I have done lots of multithreaded programming. And, yes, graphics, notably ray tracing, does very well in a multi-cpu/core system. It&#039;s much more math intensive than memory intensive. I have a multithreaded ray tracer now, and it does slow down with each additional core, but not that much. However, I agree that a single memory pool for many processors is a failure point; I wouldn&#039;t be surprised if at some point that each processor (with N cores) is given its own bank of memory.

Nick Harris - Having experienced and even participated in just such hype 15 years ago about how every computer would have a DSP, I don&#039;t believe you, and I don&#039;t think you have considered the issue in full. Special processors are disliked by consumers because they end up costing more (since each has its own memory, bus, small OS in each, etc.). Special processors are disliked by developers because they have to write code for them, especially since the special processors usually require assembly coding to maximumize their speed.</description>
		<content:encoded><![CDATA[<p>StGabe &#8211; Yes, I have done lots of multithreaded programming. And, yes, graphics, notably ray tracing, does very well in a multi-cpu/core system. It&#8217;s much more math intensive than memory intensive. I have a multithreaded ray tracer now, and it does slow down with each additional core, but not that much. However, I agree that a single memory pool for many processors is a failure point; I wouldn&#8217;t be surprised if at some point that each processor (with N cores) is given its own bank of memory.</p>
<p>Nick Harris &#8211; Having experienced and even participated in just such hype 15 years ago about how every computer would have a DSP, I don&#8217;t believe you, and I don&#8217;t think you have considered the issue in full. Special processors are disliked by consumers because they end up costing more (since each has its own memory, bus, small OS in each, etc.). Special processors are disliked by developers because they have to write code for them, especially since the special processors usually require assembly coding to maximumize their speed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: StGabe</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-243</link>
		<dc:creator>StGabe</dc:creator>
		<pubDate>Thu, 09 Mar 2006 21:49:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-243</guid>
		<description>For what&#039;s worth I&#039;m a young programmer who took courses on distributed and parallel computing.  You&#039;re not talking about learning a new API, getting comfortable with threads or just learning some new algorithms.  The challenges endemic to computing in a distributed fashion make any software project intrinsically much more complex and difficult.

There are two problems with, &quot;brilliant AI on one core, audio on another core and graphics on a third.&quot;  The first is that one process will almost always dominate all other processes and so the extra cores will be idle most of the time while the entire game is bottlenecked by the most expensive process.  The second is that each of those tasks is going to be consuming lots of memory, both RAM and cache.  Depending on how you set things up you may actually slow down the entire process by distributing it just because you your distributed cache isn&#039;t too slow for whatever your bottleneck operation happens to be at the moment.

The bottom line is that distributed/parallel computing is a lot less useful in practice than it sounds.  To get really good results requires both a problem that is amenable to parallel processing (and a lot aren&#039;t) and endless fine-tuning.  And even then there are many problems where more processors won&#039;t help at all (a lot of tasks are just far too sequential).</description>
		<content:encoded><![CDATA[<p>For what&#8217;s worth I&#8217;m a young programmer who took courses on distributed and parallel computing.  You&#8217;re not talking about learning a new API, getting comfortable with threads or just learning some new algorithms.  The challenges endemic to computing in a distributed fashion make any software project intrinsically much more complex and difficult.</p>
<p>There are two problems with, &#8220;brilliant AI on one core, audio on another core and graphics on a third.&#8221;  The first is that one process will almost always dominate all other processes and so the extra cores will be idle most of the time while the entire game is bottlenecked by the most expensive process.  The second is that each of those tasks is going to be consuming lots of memory, both RAM and cache.  Depending on how you set things up you may actually slow down the entire process by distributing it just because you your distributed cache isn&#8217;t too slow for whatever your bottleneck operation happens to be at the moment.</p>
<p>The bottom line is that distributed/parallel computing is a lot less useful in practice than it sounds.  To get really good results requires both a problem that is amenable to parallel processing (and a lot aren&#8217;t) and endless fine-tuning.  And even then there are many problems where more processors won&#8217;t help at all (a lot of tasks are just far too sequential).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick Harris</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-242</link>
		<dc:creator>Nick Harris</dc:creator>
		<pubDate>Thu, 09 Mar 2006 20:54:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-242</guid>
		<description>I have a couple of thoughts on this. First of all eliminating the graphics cards from PCs is not what you should expect to see from the market.  In fact you will see is the exact opposite.  As CPU speeds level off what you will see is more modularization, The next big thing is cards for physics processing becoming mainstream, and also then possibly AI decision making cards and who knows what else the possibilities are endless.   I think it&#039;s an awesome area of expansion to let different functions be performed by different cards, I think in the future you will see these cards be embedded in motherboards, the same way that cheap graphics and sound cards are now, but for the true power users I think the upgradeable cards will continue to be way to go.

I think the 360 and other next-generation consoles will see a huge difference graphically in the future due to their isolation of tasks.  (IE processor one processing graphics, processor two spending more time then previously allowed for brilliant artificial intelligence, and processor three focuses on audio and managing the other two.)  You are judging the next-generation consoles on the first games released for them.  The first games rarely take full advantage of a new consoles potential. 

Thirdly, I agree that writing programs to operate this way is difficult for old hacks like us who learned on single processors, but I think as new programmers are taught on multi-core processors, and classes in colleges focus more closely on this, it will become a more intuitive and second natured ability for most programmers of the future.  Also side-note I think there will be many more extensions to graphics APIs, compilers, coding languages that will take advantage of the multi-core processors in the furture.</description>
		<content:encoded><![CDATA[<p>I have a couple of thoughts on this. First of all eliminating the graphics cards from PCs is not what you should expect to see from the market.  In fact you will see is the exact opposite.  As CPU speeds level off what you will see is more modularization, The next big thing is cards for physics processing becoming mainstream, and also then possibly AI decision making cards and who knows what else the possibilities are endless.   I think it&#8217;s an awesome area of expansion to let different functions be performed by different cards, I think in the future you will see these cards be embedded in motherboards, the same way that cheap graphics and sound cards are now, but for the true power users I think the upgradeable cards will continue to be way to go.</p>
<p>I think the 360 and other next-generation consoles will see a huge difference graphically in the future due to their isolation of tasks.  (IE processor one processing graphics, processor two spending more time then previously allowed for brilliant artificial intelligence, and processor three focuses on audio and managing the other two.)  You are judging the next-generation consoles on the first games released for them.  The first games rarely take full advantage of a new consoles potential. </p>
<p>Thirdly, I agree that writing programs to operate this way is difficult for old hacks like us who learned on single processors, but I think as new programmers are taught on multi-core processors, and classes in colleges focus more closely on this, it will become a more intuitive and second natured ability for most programmers of the future.  Also side-note I think there will be many more extensions to graphics APIs, compilers, coding languages that will take advantage of the multi-core processors in the furture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: StGabe</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-240</link>
		<dc:creator>StGabe</dc:creator>
		<pubDate>Thu, 09 Mar 2006 19:05:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-240</guid>
		<description>I&#039;m not sure that putting graphics processing onto CPU cores is a big win.  Even graphics processing these days is bound by the memory heirarchy.  Not just RAM but cache.  If we see a doubling of RAM and cache sizes and speeds  every 18 months then I think we&#039;d be in business.

Have you written much parallel code?  Having done so I can say two things:

1) It&#039;s very hard.  Programming even a simple task in parallel to get even a two-time speedup can be a huge chore.

2) For most problems there are natural bounds to how much parallelism you can harness before communication overhead, memory bandwidth and dependencies lock you down.  If you can&#039;t get the data to your processors, or can&#039;t do anything on all your other processor until one processor finishes then it doesn&#039;t matter how many processors you have.

This is why the next gen consoles aren&#039;t that much of an improvement over the last gen.  They have lots of processing power across lots of cores.  However they provide only marginally better memory size/bandwidth than the past generation.  They can crunch a lot of numbers, if and only if they could actually get those numbers to the cores, which they can&#039;t, and performance is only slightly better than the past generation.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure that putting graphics processing onto CPU cores is a big win.  Even graphics processing these days is bound by the memory heirarchy.  Not just RAM but cache.  If we see a doubling of RAM and cache sizes and speeds  every 18 months then I think we&#8217;d be in business.</p>
<p>Have you written much parallel code?  Having done so I can say two things:</p>
<p>1) It&#8217;s very hard.  Programming even a simple task in parallel to get even a two-time speedup can be a huge chore.</p>
<p>2) For most problems there are natural bounds to how much parallelism you can harness before communication overhead, memory bandwidth and dependencies lock you down.  If you can&#8217;t get the data to your processors, or can&#8217;t do anything on all your other processor until one processor finishes then it doesn&#8217;t matter how many processors you have.</p>
<p>This is why the next gen consoles aren&#8217;t that much of an improvement over the last gen.  They have lots of processing power across lots of cores.  However they provide only marginally better memory size/bandwidth than the past generation.  They can crunch a lot of numbers, if and only if they could actually get those numbers to the cores, which they can&#8217;t, and performance is only slightly better than the past generation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Rozak</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-239</link>
		<dc:creator>Mike Rozak</dc:creator>
		<pubDate>Thu, 09 Mar 2006 05:32:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-239</guid>
		<description>I disagree with your claims that there&#039;s no use for additional cores.

For one, when CPUs reach (about) 8 cores, you&#039;ll find that suddenly graphics accelerators aren&#039;t needed, since 8 non-optimized CPU cores should match an optimized GPU.

In early 1990, speech recognition could only be done on a DSP. Then came the Pentium with floating point, and speech recognition was done on that. DSP cards for PCs disappeared (not that there were many in the first place). A DSP is still faster at FFTs, but it doesn&#039;t really matter. Cost/flexibility tradeoffs for the user means that they&#039;ll go for the cheaper solutions, which will ultimately be CPU-based rendering.

Music synthesis used to be done on a DSP too, although it wasn&#039;t called that. It was called a sound card with 16-voice polyphony. Now-a-days, unless you buy a high-end sound card, the synthesis is done on the CPU. Sound cards used to do MPEG decompress, but now its all CPU.

Furthermore, as graphics quality gets better (aka: ray tracing), you&#039;ll find that GPUs, which are vector processors, don&#039;t do any better than CPUs.

Of course, if you&#039;re writing casual games, none of this matters... unless your casual games start using 3D, speech recognition, music synthesis, etc. Even then, you won&#039;t have to worry much about multithreaded code yourself.


Another note: Dual-core computers came out Q1 2007. Quad-core computers will be out around Q1 2007 (as far as I recall), doubling once every 24 months instead of every 18.</description>
		<content:encoded><![CDATA[<p>I disagree with your claims that there&#8217;s no use for additional cores.</p>
<p>For one, when CPUs reach (about) 8 cores, you&#8217;ll find that suddenly graphics accelerators aren&#8217;t needed, since 8 non-optimized CPU cores should match an optimized GPU.</p>
<p>In early 1990, speech recognition could only be done on a DSP. Then came the Pentium with floating point, and speech recognition was done on that. DSP cards for PCs disappeared (not that there were many in the first place). A DSP is still faster at FFTs, but it doesn&#8217;t really matter. Cost/flexibility tradeoffs for the user means that they&#8217;ll go for the cheaper solutions, which will ultimately be CPU-based rendering.</p>
<p>Music synthesis used to be done on a DSP too, although it wasn&#8217;t called that. It was called a sound card with 16-voice polyphony. Now-a-days, unless you buy a high-end sound card, the synthesis is done on the CPU. Sound cards used to do MPEG decompress, but now its all CPU.</p>
<p>Furthermore, as graphics quality gets better (aka: ray tracing), you&#8217;ll find that GPUs, which are vector processors, don&#8217;t do any better than CPUs.</p>
<p>Of course, if you&#8217;re writing casual games, none of this matters&#8230; unless your casual games start using 3D, speech recognition, music synthesis, etc. Even then, you won&#8217;t have to worry much about multithreaded code yourself.</p>
<p>Another note: Dual-core computers came out Q1 2007. Quad-core computers will be out around Q1 2007 (as far as I recall), doubling once every 24 months instead of every 18.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Steinmeyer</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-237</link>
		<dc:creator>Phil Steinmeyer</dc:creator>
		<pubDate>Thu, 09 Mar 2006 00:03:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-237</guid>
		<description>Another thing is that there have been few NEW apps in the last 6-8 years that are real CPU hogs.  Yes, all types of programs have gotten a bit more bloated and slow, but that&#039;s because they can, not because they must.  And there are specialty apps that can use the CPU.  

But games, for instance, are much less of a CPU driver these days, as more people are playing the high-end 3D games on consoles and using their PCs for lighter weight fare (including casual games).  And to the extent that CPU busting games ARE still out there (i.e. 3D shooters, WoW, etc), they&#039;re bound much more by graphics card than by CPU, in general.

Otherwise, the last few years have seen a lot more web-type things, and a lot of music-type things.  Neither of those are very CPU bound.  Video, maybe, but that&#039;s still more a question of bandwidth than CPU, for the most part.</description>
		<content:encoded><![CDATA[<p>Another thing is that there have been few NEW apps in the last 6-8 years that are real CPU hogs.  Yes, all types of programs have gotten a bit more bloated and slow, but that&#8217;s because they can, not because they must.  And there are specialty apps that can use the CPU.  </p>
<p>But games, for instance, are much less of a CPU driver these days, as more people are playing the high-end 3D games on consoles and using their PCs for lighter weight fare (including casual games).  And to the extent that CPU busting games ARE still out there (i.e. 3D shooters, WoW, etc), they&#8217;re bound much more by graphics card than by CPU, in general.</p>
<p>Otherwise, the last few years have seen a lot more web-type things, and a lot of music-type things.  Neither of those are very CPU bound.  Video, maybe, but that&#8217;s still more a question of bandwidth than CPU, for the most part.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: StGabe</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-236</link>
		<dc:creator>StGabe</dc:creator>
		<pubDate>Wed, 08 Mar 2006 22:57:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-236</guid>
		<description>To a large extent I think that the huge growth in CPU&#039;s was becoming a non-issue anyway.  We don&#039;t need more CPU speed these days, what we need is more memory bandwidth, which has been growing at a slower pace.  Multithreading just exacerbates this.  Sure, get 4 threads running on 4 cores.  The CPU time may be &quot;free&quot; because of the extra cores but you now need to move around 4 times the data and that&#039;s going to be the real show-stopper.</description>
		<content:encoded><![CDATA[<p>To a large extent I think that the huge growth in CPU&#8217;s was becoming a non-issue anyway.  We don&#8217;t need more CPU speed these days, what we need is more memory bandwidth, which has been growing at a slower pace.  Multithreading just exacerbates this.  Sure, get 4 threads running on 4 cores.  The CPU time may be &#8220;free&#8221; because of the extra cores but you now need to move around 4 times the data and that&#8217;s going to be the real show-stopper.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Jordan</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-235</link>
		<dc:creator>Phil Jordan</dc:creator>
		<pubDate>Wed, 08 Mar 2006 22:37:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-235</guid>
		<description>I think the main progression in the future will be on the software and usability side of things, rather than raw power. For example, ever more portable computers - I have a feeling tablet-PC like things are going to be big once someone figures out a use for them.
There have been plenty of demonstrations that software has lots of potential to become more usable and generally better, and the idea is certainly spreading as far as I can tell.
I don&#039;t know if there&#039;s an aviation analogy to be made, but from my point of view, this is where it&#039;s going. It might even be related to the fact that &#039;the free lunch is over&#039; - (we) developers are having to write better, more thought-out software.

~phil</description>
		<content:encoded><![CDATA[<p>I think the main progression in the future will be on the software and usability side of things, rather than raw power. For example, ever more portable computers &#8211; I have a feeling tablet-PC like things are going to be big once someone figures out a use for them.<br />
There have been plenty of demonstrations that software has lots of potential to become more usable and generally better, and the idea is certainly spreading as far as I can tell.<br />
I don&#8217;t know if there&#8217;s an aviation analogy to be made, but from my point of view, this is where it&#8217;s going. It might even be related to the fact that &#8216;the free lunch is over&#8217; &#8211; (we) developers are having to write better, more thought-out software.</p>
<p>~phil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven Rokiski</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-234</link>
		<dc:creator>Steven Rokiski</dc:creator>
		<pubDate>Wed, 08 Mar 2006 22:24:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-234</guid>
		<description>In terms of a user running ONE application on a normal windows desktop machine with NO applications running in the backround, and lets imagine that app is a big and hungry one like office, yeah, a bonus 10% or so on common tasks is what you get by going dual CPU.

If your parents are running software like your common antivirus solutions, these sit in the backround always scanning memory, always looking at incoming web traffic on the integrated firewall, etc.  This takes a lot of cycles.  This is exactly the sort of thing that going dual cpu is going to help with.  Granted, on a windows machine, I/O is still a bigger bottleneck with such software, because of win32 kernel issues with DMA (not always using it).  Thus, disk writes hurt extra because you&#039;re hitting the BIOS for disk writes, freezing the whole system with a hardware interupt.  Adding more memory to prevent paging alleviates most of this problem.

Most adult users seem to use 1 program at a time, but the generations who have grown up with computers multitask- a lot.  My neice isn&#039;t particularly computer literate, but I&#039;ve never seen her use a computer without 6 different applications running the foreground, with multiple backround tasks (downloading files, ripping CDs, mp3 player, rss feeds, etc.).

Also keep in mind that OSes (let alone applications) have never really been optimised for multiple cpus outside of the CS research community.  Techniques do exist for getting high performance across multiple (and many, 8+) cores, but they&#039;ve never been implimented in a production environment.  Expect the XBox 360 to change that; and since the 360 has a non-power-of-two number of CPU cores (3), there will probably be a bit of new computers science generated by dealing with that.</description>
		<content:encoded><![CDATA[<p>In terms of a user running ONE application on a normal windows desktop machine with NO applications running in the backround, and lets imagine that app is a big and hungry one like office, yeah, a bonus 10% or so on common tasks is what you get by going dual CPU.</p>
<p>If your parents are running software like your common antivirus solutions, these sit in the backround always scanning memory, always looking at incoming web traffic on the integrated firewall, etc.  This takes a lot of cycles.  This is exactly the sort of thing that going dual cpu is going to help with.  Granted, on a windows machine, I/O is still a bigger bottleneck with such software, because of win32 kernel issues with DMA (not always using it).  Thus, disk writes hurt extra because you&#8217;re hitting the BIOS for disk writes, freezing the whole system with a hardware interupt.  Adding more memory to prevent paging alleviates most of this problem.</p>
<p>Most adult users seem to use 1 program at a time, but the generations who have grown up with computers multitask- a lot.  My neice isn&#8217;t particularly computer literate, but I&#8217;ve never seen her use a computer without 6 different applications running the foreground, with multiple backround tasks (downloading files, ripping CDs, mp3 player, rss feeds, etc.).</p>
<p>Also keep in mind that OSes (let alone applications) have never really been optimised for multiple cpus outside of the CS research community.  Techniques do exist for getting high performance across multiple (and many, 8+) cores, but they&#8217;ve never been implimented in a production environment.  Expect the XBox 360 to change that; and since the 360 has a non-power-of-two number of CPU cores (3), there will probably be a bit of new computers science generated by dealing with that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Steinmeyer</title>
		<link>http://www.philsteinmeyer.com/69/pc-progression/comment-page-1/#comment-233</link>
		<dc:creator>Phil Steinmeyer</dc:creator>
		<pubDate>Wed, 08 Mar 2006 18:33:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.philsteinmeyer.com/69/pc-progression/#comment-233</guid>
		<description>Just to be more clear, 65% improvement every 42 months equals (adjusted for compounding) ~15.4% improvement annually.

100% improvement every 18 months equals ~58.7% improvement annually.

So, by comparison on this simple measure, the rate of annual improvement has dropped to about a quarter of what it was just a few years earlier.  

And the road map for near-term future CPU improvements shows things probably getting flatter in years ahead - again, with the push for multi-core, which sounds splashy (TWICE as many CPUs as your old machine!) but in fact has a quite low impact on effective speed (in my opinion).</description>
		<content:encoded><![CDATA[<p>Just to be more clear, 65% improvement every 42 months equals (adjusted for compounding) ~15.4% improvement annually.</p>
<p>100% improvement every 18 months equals ~58.7% improvement annually.</p>
<p>So, by comparison on this simple measure, the rate of annual improvement has dropped to about a quarter of what it was just a few years earlier.  </p>
<p>And the road map for near-term future CPU improvements shows things probably getting flatter in years ahead &#8211; again, with the push for multi-core, which sounds splashy (TWICE as many CPUs as your old machine!) but in fact has a quite low impact on effective speed (in my opinion).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
