<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>Intel® Software Network Blogs &#187; What If Software</title>
	<link>http://softwareblogs.intel.com</link>
	<description></description>
	<pubDate>Sat, 17 May 2008 04:17:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>How do you like our new look?</title>
		<link>http://softwareblogs.intel.com/2008/04/16/how-do-you-like-our-new-look/</link>
		<comments>http://softwareblogs.intel.com/2008/04/16/how-do-you-like-our-new-look/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 00:06:01 +0000</pubDate>
		<dc:creator>Bill Pearson (Intel)</dc:creator>
		
		<category><![CDATA[Customer Support]]></category>

		<category><![CDATA[Gaming]]></category>

		<category><![CDATA[Graphics]]></category>

		<category><![CDATA[Intel® Software Network 2.0]]></category>

		<category><![CDATA[Manageability]]></category>

		<category><![CDATA[Mobility]]></category>

		<category><![CDATA[Multicore]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[University Curriculum]]></category>

		<category><![CDATA[Virtualization]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2008/04/16/how-do-you-like-our-new-look/</guid>
		<description><![CDATA[Did you notice that the ISN site has a new look?  We just launched the update which moves our navigation up to a simple header at the top of each page.  We've also made the header and navigation consistent across the blogs, content, forums, etc.
For those of you still wondering what I'm talking [...]]]></description>
			<content:encoded><![CDATA[<p>Did you notice that the ISN site has a new look?  We just launched the update which moves our navigation up to a simple header at the top of each page.  We've also made the header and navigation consistent across the blogs, content, forums, etc.</p>
<p>For those of you still wondering what I'm talking about, I'll let you in on a little secret.  We're showing the old design to about half of you, and the new design to the other half.  Yes, this is intentional.  We're collecting metrics to guage the effectiveness of the new design.</p>
<p>Would you like to do me a favor?  Let me know what you think about it.  Does it work better than the old design?  How would you improve it?</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2008/04/16/how-do-you-like-our-new-look/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Parallel programming extensions to C/C++</title>
		<link>http://softwareblogs.intel.com/2008/03/11/parallel-programming-extensions-to-cc/</link>
		<comments>http://softwareblogs.intel.com/2008/03/11/parallel-programming-extensions-to-cc/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 17:14:36 +0000</pubDate>
		<dc:creator>Rajiv Deodhar (Intel)</dc:creator>
		
		<category><![CDATA[Multicore]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2008/03/11/parallel-programming-extensions-to-cc/</guid>
		<description><![CDATA[An experimental Intel compiler supports new C/C++ keywords "__parallel" and "__spawn". Use as statement prefixes to create parallel tasks. ]]></description>
			<content:encoded><![CDATA[<p>At Intel we have been wondering whether parallel programming features <em>built into</em> mainstream compiled languages such as C and C++ would speed up adoption of parallel programming. Parallel programs would make better usage of available hardware and enable more efficient solutions to day-to-day problems. The C++ language committee has been considering parallel programming extensions but they move slowly. As an experiment, we've introduced some simple extensions to C/C++ that allows asynchronous execution of any statement. A compiler that supports these features is available at Intel's whatif.intel.com site: <a href="http://softwarecommunity.intel.com/articles/eng/3689.htm">http://softwarecommunity.intel.com/articles/eng/3689.htm</a>.</p>
<p>We were motivated to do this because even though multi-core processors are everywhere, programs that make use of more than one processor are relatively rare. Granted, multi-threading is in common use within the high-performance computing community. They've used parallel processing for decades using techniques such as MPI for clusters and OpenMP for multi-processor systems. On the desktop, with the availability of "hyper-threading", or logical multi-processors, most of the commonly used pre-packaged software has also been adapted to use multiple processors. However, we have not yet reached the point where all programmers designing a new program or extension to some existing software ask themselves "how do I make my program use multiple processors if they are available and do the job in parallel?"</p>
<p>Writing a parallel program is far more complex than writing a sequential program. Until a person actually writes one, he/she will not appreciate the truth of the previous statement. There are any number of pitfalls and subtle issues when global state is modified simultaneously. But that complexity aside, there is also a lack of <em>ease of access</em> to parallel programming features in compiled languages such as C and C++. Yes, there are APIs provided by Microsoft Windows and standard threading packages such as pthreads, but they remain outside the language, harder to use than say, just writing a for-loop, and non-portable in general.</p>
<p>The language extensions we chose are a very small set: <strong>__parallel</strong> and <strong>__spawn</strong> for structured parallel execution in a fork-join model, a <strong>__par</strong> construct for for-loops whose iterations can be executed in parallel, and <strong>__critical</strong> for protecting against concurrent updates to shared variables.</p>
<p>We're eager to have you check out the compiler and tell us what you think. You opinion on the following would be very welcome:</p>
<ol>
<li>are these extensions expressive enough to parallelize programs?</li>
<li>are they easy to use?</li>
<li>do they provide sufficient protection mechanisms against race conditions?</li>
<li>is it a good idea to build these features into the language?</li>
<li>do you see performance gains from using these features?</li>
</ol>
<p>Other comments are also welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2008/03/11/parallel-programming-extensions-to-cc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Intel® Decimal Floating-Point Math Library</title>
		<link>http://softwareblogs.intel.com/2008/03/06/intel-decimal-floating-point-math-library/</link>
		<comments>http://softwareblogs.intel.com/2008/03/06/intel-decimal-floating-point-math-library/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 19:29:53 +0000</pubDate>
		<dc:creator>Marius Cornea (Intel)</dc:creator>
		
		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2008/03/06/intel-decimal-floating-point-math-library/</guid>
		<description><![CDATA[Decimal floating-point operations were a necessity from the beginnings of the modern age of computing. However, the lack of a good standard for decimal computations has led to the existence of numerous proprietary software packages for decimal or decimal-like computation, most based on fixed-point decimal types, and each with its own characteristics and capabilities. A [...]]]></description>
			<content:encoded><![CDATA[<p>Decimal floating-point operations were a necessity from the beginnings of the modern age of computing. However, the lack of a good standard for decimal computations has led to the existence of numerous proprietary software packages for decimal or decimal-like computation, most based on fixed-point decimal types, and each with its own characteristics and capabilities. A turning point for decimal computation is the revision of the IEEE Standard 754-1985 for Binary Floating-Point Arithmetic (a new standard seems to be close to adoption), as an important addition to it is the definition of decimal floating-point arithmetic.  The primary motivation was that decimal arithmetic makes numerical calculations more human-friendly. Results will be as people expect them, identical to what would be obtained using pencil and paper.</p>
<p>Decimal arithmetic also provides a robust, reliable framework for financial applications that are often subject to legal requirements concerning rounding and precision of the results in the areas of banking, telephone billing, tax calculation, currency conversion, insurance, or accounting in general. The binary floating-point arithmetic that computers use does not always satisfy the existing accuracy requirements. For example, (7.00 / 10000.0) * 10000.0 calculated in single precision is 6.9999997504, and not 7.00. Similar examples can be found for double precision, or any other binary floating-point format. The underlying cause is that most decimal fractions, such as 0.1, cannot be represented exactly in binary floating-point format. The IEEE 754R standard proposal attempts to resolve such issues by defining all the rules for decimal floating-point arithmetic in a way that can be adopted and implemented on all computing systems in software, hardware, or a combination of the two.</p>
<p>In planning to improve on how decimal calculations are carried out and at the same time to make Intel Corporation one of the early adopters of the decimal floating-point arithmetic from the IEEE Standard 754R draft, we have implemented in software a <a href="http://softwarecommunity.intel.com/articles/eng/3687.htm" title="Intel® Decimal Floating-Point Math Library">decimal floating-point library</a>, posted here. Standardization committees for high-level languages such as C and C++ are already developing plans to add decimal floating-point support to these languages. A software package such as this for decimal floating-point arithmetic can be used as a computation engine by compilers or other tools requiring decimal floating-point support, and it should constitute an attractive option for various financial computations. Our library has already been contributed to GCC 4.3, where it will be used for decimal floating-point calculations on Intel Architecture platforms.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2008/03/06/intel-decimal-floating-point-math-library/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What developers talks about Integrated debugger for Java*/JNI Environments</title>
		<link>http://softwareblogs.intel.com/2007/12/11/what-developers-talks-about-integrated-debugger-for-javajni-environments/</link>
		<comments>http://softwareblogs.intel.com/2007/12/11/what-developers-talks-about-integrated-debugger-for-javajni-environments/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 13:22:21 +0000</pubDate>
		<dc:creator>Vasily Levchenko (Intel)</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/12/11/what-developers-talks-about-integrated-debugger-for-javajni-environments/</guid>
		<description><![CDATA[Recently I've got a chance to talk with several commercial VM engineer, and I would like to publish some summary of conversation:

"I use      Visual studio for native and Eclipse for java"
"I would      really like to be able to debug by going from JVM-code to Java-code [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I've got a chance to talk with several commercial VM engineer, and I would like to publish some summary of conversation:</p>
<ul>
<li>"I use      Visual studio for native and Eclipse for java"</li>
<li>"I would      really like to be able to debug by going from JVM-code to Java-code and      back"</li>
<li>That would be      more interesting if it would be more VM-independent</li>
<li>"It is a      bit scary to expect the jvm that you debub, be responsible for future      debugging"</li>
<li>"It would      be interesting/fun to implement it in XXX as well"</li>
</ul>
<p>Also I've chance to talk with author Mariot Chauvin of gdb-centric solution(see <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/presentations/spring2006/debugger_for_eclipse.ppt?cvsroot=Tools_Project">http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/presentations/spring2006/debugger_for_eclipse.ppt?cvsroot=Tools_Project</a></p>
<p>for details). He's mentioned about some instability of gdb/MI + Eclipse, and think that in VM debugging could add some stability.</p>
<p>Some my comment and thoughts.</p>
<p>First of all great thank to  anonymous VM engineer and Mariot for interesting feedbacks and ideas. As for me I agree with instability GDB/MI, so why personally I prefer GDB/CLI. I agree with Mariot   about "unmodified debugger"-centric solution, especially that the most modern VM doesn't use C-calling convention in jitted code and there should be some "extension" like CDB ("Microsoft Debugging Tools for Windows") has got to handle method entry/exit and JNI up(down)call to help debugger, mixing stacks and stack walking.</p>
<p>With NCAI we has the most issues resolved (java stack handling, jvmti safe points and other java world related things).</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/12/11/what-developers-talks-about-integrated-debugger-for-javajni-environments/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Intel® Performance Tuning Utility - 3.0 is coming soon!</title>
		<link>http://softwareblogs.intel.com/2007/12/07/intel-performance-tuning-utility-30-is-coming-soon/</link>
		<comments>http://softwareblogs.intel.com/2007/12/07/intel-performance-tuning-utility-30-is-coming-soon/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 09:59:27 +0000</pubDate>
		<dc:creator>Alexei Alexandrov (Intel)</dc:creator>
		
		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/12/07/intel-performance-tuning-utility-30-is-coming-soon/</guid>
		<description><![CDATA[Finally I've found some time to write my first blog post! And there is a good reason to do this - the coming-soon upload of Intel® Performance Tuning Utility version 3.0 to WhatIf site. This version will include a huge number of bug fixes as well as new features - such as data latency analysis, [...]]]></description>
			<content:encoded><![CDATA[<p>Finally I've found some time to write my first blog post! And there is a good reason to do this - the coming-soon upload of Intel® Performance Tuning Utility version 3.0 to <a href="http://whatif.intel.com">WhatIf site</a>. This version will include a huge number of bug fixes as well as new features - such as data latency analysis, call count analysis and others.</p>
<p>As usual, documentation of the product will provide detailed information about the product features. We also glad to advertise the latest issue of <a href="http://www.intel.com/technology/itj/index.htm">Intel Technology Journal</a> which contains <a href="http://www.intel.com/technology/itj/2007/v11i4/2-parallelization/1-abstract.htm">an article about the version 3.0 of Intel Performance Tuning Utility</a>. The article is unique in the sense that it explains the motivation behind concepts that we put into the tool. It also takes a real-world example of tuning a multithread program and walks you through this process demonstrating how Intel PTU features are used. Reading the paper is a good chance to get prepared to the new tool version <img src='http://softwareblogs.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Of course, I will make a separate post as soon as Intel® PTU 3.0 is uploaded to the WhatIf.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/12/07/intel-performance-tuning-utility-30-is-coming-soon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debugger's role and its usage scenarios, some expanding to Java*/JNI world.</title>
		<link>http://softwareblogs.intel.com/2007/12/06/debuggers-role-and-its-usage-scenarios-some-expanding-to-javajni-world/</link>
		<comments>http://softwareblogs.intel.com/2007/12/06/debuggers-role-and-its-usage-scenarios-some-expanding-to-javajni-world/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 15:03:32 +0000</pubDate>
		<dc:creator>Vasily Levchenko (Intel)</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/12/06/debuggers-role-and-its-usage-scenarios-some-expanding-to-javajni-world/</guid>
		<description><![CDATA[Historically general mechanism to debug managed code with encapsulation or involving of unmanaged code is in using of two different debuggers (see http://www-128.ibm.com/developerworks/java/library/j-jnidebug/index.html, http://developers.sun.com/learning/javaoneonline/2006/tools/TS-1011.pdf for details). 
What engineers could expect from switching to single debugger scenario?
For developers single debugger scenario is a comfortable environment with unified style of management of key-binding, macro definitions, scripts and so [...]]]></description>
			<content:encoded><![CDATA[<p>Historically general mechanism to debug managed code with encapsulation or involving of unmanaged code is in using of two different debuggers (see <a href="http://www-128.ibm.com/developerworks/java/library/j-jnidebug/index.html">http://www-128.ibm.com/developerworks/java/library/j-jnidebug/index.html</a>, <a href="http://developers.sun.com/learning/javaoneonline/2006/tools/TS-1011.pdf">http://developers.sun.com/learning/javaoneonline/2006/tools/TS-1011.pdf</a> for details). </p>
<p><strong>What engineers could expect from switching to single debugger scenario?</strong></p>
<p>For developers single debugger scenario is a comfortable environment with unified style of management of key-binding, macro definitions, scripts and so on.</p>
<p><strong>Is it only comfortable?</strong></p>
<p>Observing debugger's usage models on <a href="http://www.systeminternals.com/">http://www.systeminternals.com</a> I see possibility to use debugger not only as developer tool but as a good playground for tools monitoring native and java worlds. While investigation current debugger solutions I've noticed some good prototypes from different sources:</p>
<ol>
<li>HP (<a href="http://www.hp.com/products1/unix/java/pdfs/07_06Tools_NativeDebug.pdf">http://www.hp.com/products1/unix/java/pdfs/07_06Tools_NativeDebug.pdf</a>) gdb-centric debugger.</li>
<li>Sun (<a href="http://docs.sun.com/source/819-3683/Java_debug.html">http://docs.sun.com/source/819-3683/Java_debug.html</a>) dbx-centric debugger.</li>
<li>Eclipse (<a href="http://eclipse-incub.svn.sourceforge.net/viewvc/eclipse-incub/jni_seamless_debugging/">http://eclipse-incub.svn.sourceforge.net/viewvc/eclipse-incub/jni_seamless_debugging/</a>) gdb/CDT and JDT</li>
</ol>
<p>All of them could be good foundation for debugger centric toolkits.</p>
<p><strong><em>Dual nature debugger could be useful as developing and monitoring tool as well.</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/12/06/debuggers-role-and-its-usage-scenarios-some-expanding-to-javajni-world/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debugging concepts</title>
		<link>http://softwareblogs.intel.com/2007/12/05/debugging-concepts/</link>
		<comments>http://softwareblogs.intel.com/2007/12/05/debugging-concepts/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 12:54:47 +0000</pubDate>
		<dc:creator>Vasily Levchenko (Intel)</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/12/05/debugging-concepts/</guid>
		<description><![CDATA[Traditionally we have several debugging concepts to choose out-of- and in- process debugging. Let’s start from in-process, as soon as I own debugger implementing in-process debugger implementation. There are several examples of in-process debugging in industry: printf-debugging (very powerful and helpful;) http://udrepper.livejournal.com/5018.html), kernels' and hypervisors' debuggers. In fact kernels and hypervisor debugger, has no really [...]]]></description>
			<content:encoded><![CDATA[<p>Traditionally we have several debugging concepts to choose out-of- and in- process debugging. Let’s start from in-process, as soon as I own debugger implementing in-process debugger implementation. There are several examples of in-process debugging in industry: printf-debugging (very powerful and helpful;) <a href="http://udrepper.livejournal.com/5018.html" title="http://udrepper.livejournal.com/5018.html">http://udrepper.livejournal.com/5018.html</a>), kernels' and hypervisors' debuggers. In fact kernels and hypervisor debugger, has no really chance to make it out-process (except remote-debugging, but in this case remote debugger use debugging agent in the kernel or hypervisor), so in-kernel debugger become very tricky but anyway it has access to architecture debugging support, that unavailable for userland applications, here is good example of in-kernel debugger <a href="http://hg.l4ka.org/l4ka-pistachio/file/0f8089b9d16d/kernel/kdb" title="http://hg.l4ka.org/l4ka-pistachio/file/0f8089b9d16d/kernel/kdb">http://hg.l4ka.org/l4ka-pistachio/file/0f8089b9d16d/kernel/kdb</a> implemented in L4. And out-process concept we all use in our engineer life. OS kernel provides interface providing RW access to debugee process address space and the system libraries help debugger to resolve states of user land OS ABI concepts (threads, libraries and so on). A long-long time ago Solaris or Sun OS introduced thread debugging interface libc_db (<a href="http://docs.sun.com/app/docs/doc/816-5173/6mbb8adsh?l=en&amp;a=view">http://docs.sun.com/app/docs/doc/816-5173/6mbb8adsh?l=en&amp;a=view</a> and then it migrated to Linux world (<a href="http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl_db/?cvsroot=glibc">http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl_db/?cvsroot=glibc</a>) and BSD (<a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libpthread_dbg/">http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libpthread_dbg/</a>) world (thread_db).</p>
<p>So why (jdb) JVMTI/JVMPI debugger is not in the list in-process debugger list? Basically in-process and out-process debugger is quite philosophical question measured with level of isolation. In java case we have managed and unmanaged code which are isolated with JVM[T|P]I layer.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/12/05/debugging-concepts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Monster Mash</title>
		<link>http://softwareblogs.intel.com/2007/11/08/the-monster-mash/</link>
		<comments>http://softwareblogs.intel.com/2007/11/08/the-monster-mash/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 18:32:45 +0000</pubDate>
		<dc:creator>Robert Ennals (Intel)</dc:creator>
		
		<category><![CDATA[Cool Software]]></category>

		<category><![CDATA[What If Software]]></category>

		<category><![CDATA[gorilla suit]]></category>

		<category><![CDATA[mashups]]></category>

		<category><![CDATA[the new new internet]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/11/08/the-monster-mash/</guid>
		<description><![CDATA[In my last blog post, I mentioned that I would be giving my talk at "The New New Internet, Web 2.0 Accelerator" while wearing a gorilla costume. Now that this event has taken place, I feel I should give some explanation and photographic evidence.

Here I am in costume backstage. I'm dressed as a "Zombie Vampire [...]]]></description>
			<content:encoded><![CDATA[<p>In my last blog post, I mentioned that I would be giving my talk at "The New New Internet, Web 2.0 Accelerator" while wearing a gorilla costume. Now that this event has taken place, I feel I should give some explanation and photographic evidence.</p>
<p><img src="http://farm3.static.flickr.com/2189/1920534165_99bb587577_o.jpg" alt="IMG_0440[1]" height="480" width="320" /><br />
Here I am in costume backstage. I'm dressed as a "Zombie Vampire Gorilla" - which is of course a mashed up Halloween costume.</p>
<p><img src="http://farm3.static.flickr.com/2420/1920534283_b78b57b000_o.jpg" alt="IMG_0456[1]" height="360" width="480" /><br />
Making my entrance.</p>
<p><img src="http://farm3.static.flickr.com/2258/1920534409_1d94ae0eaa_o.jpg" alt="IMG_0461[1]" height="360" width="480" /><br />
Discussing monster mashups and explaining my costume.</p>
<p><img src="http://farm3.static.flickr.com/2377/1920534755_85bd0e7935_o.jpg" alt="IMG_0469[1]" height="360" width="480" /><br />
Costume shed, and being more serious.</p>
<p>The New New Internet was a really fun event. Lots of fun stuff going on and some really great speakers.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/11/08/the-monster-mash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Software support for Transactional Memory</title>
		<link>http://softwareblogs.intel.com/2007/11/07/software-support-for-transactional-memory/</link>
		<comments>http://softwareblogs.intel.com/2007/11/07/software-support-for-transactional-memory/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 04:00:03 +0000</pubDate>
		<dc:creator>David Stewart (Intel)</dc:creator>
		
		<category><![CDATA[Multicore]]></category>

		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/11/07/software-support-for-transactional-memory/</guid>
		<description><![CDATA[Last week I attended Intel's annual Software Enabling Summit in Anaheim. This is a worldwide gathering of Intel's software engineers charged with ensuring that the world's software takes best advantage of Intel processor and platform features.
(Sidebar: My wife thought it was really funny that we had a whole conference about "enabling", and suggested that I [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I attended Intel's annual Software Enabling Summit in Anaheim. This is a worldwide gathering of Intel's software engineers charged with ensuring that the world's software takes best advantage of Intel processor and platform features.</p>
<p>(Sidebar: My wife thought it was really funny that we had a whole conference about "enabling", and suggested that I was now working with families and friends of those with addictions. No, not that kind of enabling, Deb.)</p>
<p>I was at SES 2007 to give a talk about OpenSolaris and help educate our enabling folks with what's available there. In the bargain, I decided to attend some of the other talks and learn about other useful technologies. One such talk I attended was on Transactional Memory or TM. Here are a couple of notes:</p>
<ul>
<li>Usually when you thread your code, you need to protect access to shared data between threads. These critical sections are usually by calling on a lock or mutex.</li>
<li>The problem is that you often need to acquire a lock often when you don't need it – you are accessing memory which isn't shared between threads or you acquire locks for readers which are not required.</li>
<li>The idea behind TM is to change the threading paradigm, and instead wrap your critical sections in code which marks it as TM.</li>
<li>TM is based on the idea that most locks really are never contested, so a round trip to acquire and then release these uncontested locks are wasted. In other cases, you might only have readers accessing the data, and so you again, any locks acquired/released are wasted effort. Wouldn't it be nice to have the system automatically detect this, as if the memory itself was transactional in nature.</li>
<li>To support this new threading model, the C/C++ language needs to be extended to add TM sections.</li>
<li>Semantics proposed for TM sections in code.:
<ul>
<li>Area of the code is atomic relative to other threads which touch the shared data</li>
<li>Locks which are not needed are not acquired – instead, back out transactions if there is a conflict</li>
<li>Functions can be marked as tm_callable, which means that they will be backed out if there was a conflict</li>
<li>Tm_waveable allow you to show that you don't care about backing out a function call (like a debug printf)</li>
</ul>
</li>
<li>There is a prototype compiler implementing these semantics, and it's available in whatif.intel.com</li>
</ul>
<p>I applaud the engineers working on this idea for trying to improve the lot of programmers who struggle to get their code threaded, performant and correct. I do have a few observations about this approach:</p>
<ol>
<li>The biggest challenge with threading code is <em>correctness</em> – making sure that you have protected the right shared locations at the right times. It seems like this TM model doesn't materially affect this problem. If you forget to use locks around a critical section, won't you be likely to forget to put it in a TM section as well?</li>
<li>The other big challenge in threading is <em>scalable performance</em> – how do I decompose my problem to thread it in the first place?  Do I do functional decomposition or data decomposition?  Make the wrong choice, or pick the wrong level of granularity and your performance will not increase with added threads and it could slow down. Worse, if your code is moved to a system with more or less hardware threads available, the performance could change in undesirable ways. Unfortunately, again TM doesn't help you with this decision process. It might possibly mitigate some of the worst problems.</li>
<li>I'm often frustrated that our first implementation is with C/C++. I know that these are workhorse languages where performance matters, but it seems like Java or even Perl would be a good choice to impact more developers.</li>
<li>I can see some savings in avoiding unnecessary locks. In this case, I can see the opportunity in the performance area.</li>
</ol>
<p>Check out the code at whatif.intel.com – maybe I am too pessimistic and this is the holy grail of threading.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/11/07/software-support-for-transactional-memory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>See me at "The New New Internet"</title>
		<link>http://softwareblogs.intel.com/2007/10/25/see-me-at-the-new-new-internet/</link>
		<comments>http://softwareblogs.intel.com/2007/10/25/see-me-at-the-new-new-internet/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 02:02:23 +0000</pubDate>
		<dc:creator>Robert Ennals (Intel)</dc:creator>
		
		<category><![CDATA[What If Software]]></category>

		<guid isPermaLink="false">http://softwareblogs.intel.com/2007/10/25/see-me-at-the-new-new-internet/</guid>
		<description><![CDATA[In the DC area on the 31st? Then come see me talk about Intel Mash Maker at "The New New Internet", as part of their "Web 2.0 Accelerator".
http://thenewnewinternet.com/
Should be fun, particularly as I'm planning to give the talk in a gorilla suit (wondering why? You'll have to come see the talk).
]]></description>
			<content:encoded><![CDATA[<p>In the DC area on the 31st? Then come see me talk about Intel Mash Maker at "The New New Internet", as part of their "Web 2.0 Accelerator".</p>
<p>http://thenewnewinternet.com/</p>
<p>Should be fun, particularly as I'm planning to give the talk in a gorilla suit (wondering why? You'll have to come see the talk).</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs.intel.com/2007/10/25/see-me-at-the-new-new-internet/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
