<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Multicore &#187; Articles</title>
	<atom:link href="http://tech.opensystemsmedia.com/multicore/TECH/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.opensystemsmedia.com/multicore</link>
	<description>Ever-smaller silicon geometries are reaching their physical limits. This threatens to slow the pace of Moore’s Law to a stand-still. As a result, multicore technology is becoming widely available to address the performance bottleneck. The key to successful multicore product development is system and application level software that takes full advantage of the parallel processing environment without being too difficult or time consuming to write and validate. Multicore silicon allows the flexibility to partition cores for specific functions thereby requiring fewer silicon components or replicating the same processing function across multiple cores to substantially increase processing power. LAN/WAN/MAN networking, mobile 4G/LTE, medical, automotive, and industrial control markets already use multicore processing, and the list is growing. The multicore channel keeps your finger on the pulse of silicon, platform, and software developments as they happen in order to make effective and efficient use of this quickly advancing technology.</description>
	<lastBuildDate>Thu, 26 Apr 2012 17:22:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>APUs strike the ideal balance of form, function, and power consumption for graphics-intensive portable devices</title>
		<link>http://www.smallformfactors.com/articles/id/?5556</link>
		<comments>http://www.smallformfactors.com/articles/id/?5556#comments</comments>
		<pubDate>Mon, 12 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Kelly Gillian, AMD</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[3d medical images]]></category>
		<category><![CDATA[3d medical imaging]]></category>
		<category><![CDATA[agp 1gb graphics card]]></category>
		<category><![CDATA[agp graphic card]]></category>
		<category><![CDATA[agp graphic cards]]></category>
		<category><![CDATA[agp graphics cards]]></category>
		<category><![CDATA[amd]]></category>
		<category><![CDATA[APUs]]></category>
		<category><![CDATA[cheap pci graphic cards]]></category>
		<category><![CDATA[cpci form factor]]></category>
		<category><![CDATA[displayport dvi cable]]></category>
		<category><![CDATA[displayport dvi hdmi]]></category>
		<category><![CDATA[displayport hdmi]]></category>
		<category><![CDATA[displayport hdmi adapter]]></category>
		<category><![CDATA[displayport to dvi adaptor]]></category>
		<category><![CDATA[displayport to dvi converter]]></category>
		<category><![CDATA[displayport to hdmi]]></category>
		<category><![CDATA[displayport to hdmi cable]]></category>
		<category><![CDATA[distributed parallel computing]]></category>
		<category><![CDATA[dual graphics card]]></category>
		<category><![CDATA[dual graphics cards]]></category>
		<category><![CDATA[dual monitor graphics cards]]></category>
		<category><![CDATA[embedded board]]></category>
		<category><![CDATA[embedded boards]]></category>
		<category><![CDATA[embedded computer boards]]></category>
		<category><![CDATA[embedded computer system]]></category>
		<category><![CDATA[embedded computer systems]]></category>
		<category><![CDATA[embedded single board computers]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[fanless embedded computer]]></category>
		<category><![CDATA[fanless pc]]></category>
		<category><![CDATA[gaming graphic cards]]></category>
		<category><![CDATA[gaming graphics card]]></category>
		<category><![CDATA[gaming graphics cards]]></category>
		<category><![CDATA[gpu parallel computing]]></category>
		<category><![CDATA[hdmi displayport]]></category>
		<category><![CDATA[high resolution medical images]]></category>
		<category><![CDATA[Kontron]]></category>
		<category><![CDATA[low power pc]]></category>
		<category><![CDATA[medical devices companies]]></category>
		<category><![CDATA[medical devices manufacturers]]></category>
		<category><![CDATA[medical diagnostic devices]]></category>
		<category><![CDATA[medical imaging centers]]></category>
		<category><![CDATA[medical imaging diagnostic]]></category>
		<category><![CDATA[medical imaging radiology]]></category>
		<category><![CDATA[mini displayport hdmi]]></category>
		<category><![CDATA[mini displayport to dvi adapter]]></category>
		<category><![CDATA[mini displayport to dvi cable]]></category>
		<category><![CDATA[mini displayport to hdmi]]></category>
		<category><![CDATA[multiple display video card]]></category>
		<category><![CDATA[multiple display video cards]]></category>
		<category><![CDATA[multiple monitor video card]]></category>
		<category><![CDATA[multiple monitor video cards]]></category>
		<category><![CDATA[multiple screen displays]]></category>
		<category><![CDATA[pacs medical imaging]]></category>
		<category><![CDATA[pc fanless]]></category>
		<category><![CDATA[pci graphic card]]></category>
		<category><![CDATA[pci graphic cards]]></category>
		<category><![CDATA[pci graphics cards]]></category>
		<category><![CDATA[radiology medical imaging]]></category>
		<category><![CDATA[sbc form factor]]></category>
		<category><![CDATA[small form factor barebones pc]]></category>
		<category><![CDATA[x86 embedded board]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=036ab977e3ec2ed4817e20dda112196f</guid>
		<description><![CDATA[Accelerated Processing Units (APUs) yield big graphics in small form factors.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="1" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FPC1045556%2Ffigures%2F1" />Achieving high levels of graphics and video performance for portable, small form factor systems is difficult when utilizing conventional CPU and discrete GPU processor architectures. With the recent advent of Accelerated Processing Units (APUs), designers are equipped to break this graphics barrier without giving an inch &#8211; literally &#8211; in board space.</h3><span id="more-559"></span><span class='body'><p class="body-text">Ongoing innovation in the x86 semiconductor industry is the foundation for the near-ubiquitous use of x86 embedded computing technology in the ever-growing range of SFF applications. Even with continued improvements in CPU performance and power efficiency, however, designers of SFF portable systems remain challenged to achieve their most ambitious design goals for graphics performance and visual immersion. Growing demand for&nbsp;higher&nbsp;performance graphics capabilities has&nbsp;led OEMs to explore new x86&nbsp;processor architectures that promise to meet exacting multimedia performance requirements for applications spanning commercial, medical, and industrial domains, with a growing focus on portable and/or battery-powered devices.</p>  <p class="body-text"><span id="Ad-ABD-1" style="display: none; float: left;"></span>Embedded boards and modules equipped with new-generation Accelerated Processing Units (APUs) can facilitate advanced graphics capabilities within an extremely small footprint, without compromising power and cooling efficiency or cost. The merging of advanced x86 computing capabilities with the parallel processing power of General-Purpose Graphics Processing Units (GPGPUs) in a single device allows OEMs to design low-power, graphics-intensive SFF systems that until now have been exclusive to power-hungry multicore CPUs and add-on graphics cards.</p>  <p class="heading-1">The evolution to increasingly intense&nbsp;graphics</p>  <p class="body-text">Graphics-driven applications are accelerating the pace of innovation for portable, energy-efficient SFF systems. Applications spanning digital signage, information terminals, point-of-care medical imaging and diagnosis, and industrial applications are evolving to offer advanced graphics performance, but in many cases are constrained by conventional CPU and discrete GPU processor architectures. Here we&#8217;ll look at each of these applications individually and address some of their unique design constraints, and also assess the ways in which APUs can minimize these constraints.</p>  <p class="heading-2">Mobile digital signage and information terminals</p>  <p class="body-text">The travel services industry in particular has embraced digital signage as a means to provide timely, location-aware information. GPS-assisted in-vehicle digital signage and other mobile digital signage better equip travelers for personal use and empower travel services and transportation vendors with &#8220;high proximity&#8221; advertising space for local businesses. Multi-screen display capabilities are emerging as an important feature for these applications, and mobile digital signage is especially sensitive to power consumption requirements. Low power draw is crucial if a mobile digital sign is to be powered by, for example, a shuttle bus battery.</p>  <p class="heading-2">Point-of-care medical imaging and&nbsp;diagnosis</p>  <p class="body-text">Portable medical devices with sophisticated medical imaging capabilities for use at the point of care outside of the hospital can enable medical professionals to examine patients in the field, as well as access and process imaging-intensive patient data such as Picture Archiving and Communications Systems (PACS) datasets stored within hospital information systems. These devices ensure high-resolution imaging and ultra-precise diagnostic information that first responders and care providers count on to expedite treatment decisions.</p>  <p class="body-text">Apart from the inherent design constraints associated with high-performance graphics processing, device portability, and battery-life preservation, medical device designers grapple with stringent device certification processes that often consume valuable time and intense time-to-market pressures that few other industries face as acutely.</p>  <p class="heading-2">Portable industrial applications</p>  <p class="body-text">Imaging and data-intensive industrial applications such as image detection and recognition, automated inspection, and distributed data collection systems that require high-speed vector processing are increasingly being deployed in remote settings for monitoring purposes, and are therefore sensitive to portability requirements. In addition to requiring increased parallel processing capabilities to facilitate high-precision real-time data collection, these systems often need to be ruggedized for harsh environments. Highly compact, fluid- and particle-sealed system enclosures present obvious challenges to airflow and venting &#8211; challenges that are often insurmountable with traditional CPUs due to their thermal profiles.</p>  <p class="heading-1">APUs yield higher performance graphics with fewer components</p>  <p class="body-text">New-generation boards and modules designed with advanced x86 APUs are ideally suited to minimize and/or eliminate the aforementioned design challenges while maximizing overall graphics performance. The combination of a low-power CPU and a discrete-level GPU into a single embedded APU provides OEMs with optimal picture resolution (frame rates and resolutions of up to 2560 x 1600 pixels, for example) for their graphics-driven, mobile SFF systems. Combining a GPU core on the same die as the CPU enables host systems to offload computation-intensive pixel data processing from the CPU to the GPU. Freed from this task, the CPU can serve I/O requests with much lower latency, thereby dramatically improving real-time graphics processing performance. </p>  <p class="heading-1">Size and integration</p>  <p class="body-text">APUs also reduce the footprint of a traditional three-chip platform to just two chips &#8211; the APU and the companion controller hub. The combination of general purpose CPU and GPU onto a single die with a high-speed bus architecture and shared, low-latency memory model simplifies design complexity through a reduction in board layers and power supply needs, enabling SFF system designers to achieve aggressive form factor goals while driving down overall system costs.</p>  <p class="body-text">By providing native, high-performance graphics processing at the silicon level, APUs preclude the need for bulky add-on graphics cards that usually require a right-edge connector. In space-constrained designs, an edge connector takes up more space (card-edge boards are typically 3&quot; to 5&quot; taller) and exposes it to additional shock and vibration that can lead to signal integrity issues. Designing APU-caliber graphics capabilities directly onto a carrier board is a more rugged, long-term option. </p>  <p class="heading-1">Power and cooling</p>  <p class="body-text">The Performance-Per-Watt (PPW) gains enabled by APUs assure greater power efficiency and lower heat dissipation, which in turn can preclude the need for fan cooling within SFF systems, thus helping to preserve board space, improve overall system reliability, limit system noise, and lower BOM costs. Supporting Thermal Design Power (TDP) profiles from 5.5 W to 18 W, with typical power consumption below 6 W[1], AMD G-Series APUs equip designers with the ability to keep board-level total power dissipation to within approximately 35&nbsp;W, well within the 45 W threshold at which mobile systems begin to become hot and physically uncomfortable to the touch. These factors enable designers to optimize their SFF systems for extremely compact enclosures and/or applications with power constraints, and can help designers stay within the 25 W threshold at which passive cooling is an acceptable (and typically favorable) option.</p>  <p class="heading-1">Multi-display video immersion</p>  <p class="body-text">The ability to support multiple independent display outputs simultaneously is an emerging requirement for realizing ultra-immersive video displays for digital signage, and also SFF portable medical devices. New-generation APUs enable designers to cost-effectively develop multiple video displays without sacrificing board space for add-on graphics cards and controllers or compromising overall picture resolution. They also offer the ability to decode up to three HD video streams in parallel and support up to four independent digital displays via a wide range of standard interfaces, including DisplayPort, DVI, HDMI, LVDS, and VGA. </p>  <p class="heading-1">Vector processing for SFF industrial&nbsp;systems</p>  <p class="body-text">Applications requiring increased parallel computing capabilities, such as the portable medical and industrial devices mentioned above, are well suited for boards and modules equipped with APUs. These applications include 3D medical X-ray image reconstruction and smart camera applications such as high-precision image/pattern detection and identification. However, traditional CPU architectures and application programming tools are optimized for scalar data structures and serial algorithms, and as such, are not the best match for data-intensive vector processing applications. </p>  <p class="body-text">The integration of general-purpose, programmable scalar and vector processor cores for high-speed parallel processing establishes a new level of processing performance for SFF systems at an unprecedented PPW. In the case of AMD G-Series APUs, the general-purpose vector processor cores within the embedded GPU &#8211; 80 shader cores running at 500 MHz (AMD Fusion T56N) &#8211; drive the ultra-high-speed processing required to handle intensive numerical computations. </p>  <p class="heading-1">Time to market</p>  <p class="body-text">The inherent architectural advantages introduced with APUs go a long way toward minimizing design complexity and accelerating time to market. These advantages are owed primarily to reductions in board layers, discrete add-on processors/cards, and power supply and cooling needs, which naturally minimize the number of components on the board and therefore enable designers to shorten, and in some cases eliminate, design cycles. </p>  <p class="body-text">The underlying x86 APU architecture also enables portable SFF system designers to tap into the vast selection of existing x86-optimized software, applications, and development environments available on the market, introducing additional opportunities to enhance development efficiency and speed time to market. The open development ecosystem for the AMD G-Series platform, for example, includes support for Linux, Microsoft Windows, and Real-Time Operating Systems (RTOSs), multiple BIOS options, OpenGL&nbsp;4.0 and OpenCL support, and source-level debug tools. </p>  <p class="body-text">By implementing AMD G-Series APUs on the most common form factors for graphics-intensive applications, such as Computers-On-Module (COMs) and SFF SBCs and motherboards, Kontron is making the benefits of this new x86 processing architecture readily available for application development. OEMs and system integrators can take advantage of highly scalable, validated APU-based platforms that streamline design cycles and minimize design risks to ensure fast time to market for graphics-intensive and parallel-data SFF applications.</p>  <p class="heading-1">Making graphics performance goals&nbsp;achievable</p>  <p class="body-text">New APU processor architectures are making a fast and transformative impact on SFF design initiatives, unlocking high-performance graphics capabilities in small form factors that simply can&#8217;t be achieved with conventional CPUs and GPUs. Continued innovation in the APU domain promises to push graphics performance boundaries even further, and will ultimately yield a new generation of portable SFF systems that defy space, power, and cooling limitations in ways previously unimagined. </p>  <p class="author-bio">Kelly Gillilan is the Product Marketing Manager for the AMD Embedded Solution division, overseeing worldwide marketing strategy and activities. He has worked extensively in embedded applications for most of the past decade. Kelly holds a degree in Computer Engineering and is fluent in Mandarin Chinese.</p>  <p class="author-bio">Christine Van&nbsp;De&nbsp;Graaf is the Product Manager for Kontron America&#8217;s Embedded Modules and Small Form Factor SBCs product families. Christine has more than a&nbsp;decade of experience working in the embedded computing technology industry, and holds an MBA in marketing management from California State University, East Bay.</p>  <p class="contact-info">AMD kelly.gillilan@amd.com www.amd.com</p>  <p class="contact-info">Kontron christine.vandegraaf@us.kontron.com www.kontron.com</p>  <p class="reference-heading">References</p>  <p class="references-list">[1] For complete test and configuration information please refer to the AMD&nbsp;&#8220;Brazos&#8221; Platform Performance and Power Optimization Guide Publication #48109 Rev 2.01 available on the AMD Embedded Developers Support Web site.</p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/apus-strike-the-ideal-balance-of-form-function-and-power-consumption-for-graphics-intensive-portable-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Panel discussion: Designing portable medical devices that emulate today&#8217;s consumer devices &#8211; with added security</title>
		<link>http://www.smallformfactors.com/articles/id/?5559</link>
		<comments>http://www.smallformfactors.com/articles/id/?5559#comments</comments>
		<pubDate>Mon, 12 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Monique DeVoe, Editor, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[510k medical device]]></category>
		<category><![CDATA[Assistant Managing Editor]]></category>
		<category><![CDATA[class 2 medical devices]]></category>
		<category><![CDATA[class ii medical devices]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[embedded board]]></category>
		<category><![CDATA[embedded computer linux]]></category>
		<category><![CDATA[embedded computer system]]></category>
		<category><![CDATA[embedded computer systems]]></category>
		<category><![CDATA[embedded cpu]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded linux board]]></category>
		<category><![CDATA[embedded linux boards]]></category>
		<category><![CDATA[embedded linux computer]]></category>
		<category><![CDATA[embedded linux hardware]]></category>
		<category><![CDATA[embedded pc]]></category>
		<category><![CDATA[embedded sbc]]></category>
		<category><![CDATA[embedded single board computer]]></category>
		<category><![CDATA[embedded single board computers]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software developer]]></category>
		<category><![CDATA[embedded system applications]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[embedded systems applications]]></category>
		<category><![CDATA[embedded x86]]></category>
		<category><![CDATA[european medical device market]]></category>
		<category><![CDATA[fanless embedded pc]]></category>
		<category><![CDATA[fanless panel pc]]></category>
		<category><![CDATA[fda approval medical device]]></category>
		<category><![CDATA[fda approval medical devices]]></category>
		<category><![CDATA[fda certification medical devices]]></category>
		<category><![CDATA[fda medical device registration]]></category>
		<category><![CDATA[fda registration]]></category>
		<category><![CDATA[fda regulations]]></category>
		<category><![CDATA[industrial panel pc]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[linux embedded board]]></category>
		<category><![CDATA[linux embedded boards]]></category>
		<category><![CDATA[linux embedded computer]]></category>
		<category><![CDATA[manufacturing medical devices]]></category>
		<category><![CDATA[medical device 510 k]]></category>
		<category><![CDATA[medical device diagnostic]]></category>
		<category><![CDATA[medical device fda approval]]></category>
		<category><![CDATA[medical device manufacturing industry]]></category>
		<category><![CDATA[medical device reimbursement]]></category>
		<category><![CDATA[medical devices market size]]></category>
		<category><![CDATA[medical devices regulation]]></category>
		<category><![CDATA[medical diagnostic device]]></category>
		<category><![CDATA[medical technology devices]]></category>
		<category><![CDATA[mobile wireless devices]]></category>
		<category><![CDATA[Panel discussion]]></category>
		<category><![CDATA[pc 104 sbc]]></category>
		<category><![CDATA[pc embedded]]></category>
		<category><![CDATA[portable medical devices]]></category>
		<category><![CDATA[reimbursement medical devices]]></category>
		<category><![CDATA[sbc embedded]]></category>
		<category><![CDATA[single board computer]]></category>
		<category><![CDATA[single board computers]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[x86 embedded]]></category>
		<category><![CDATA[x86 embedded linux]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=94c6955d10ef0e1af8df1d1988bc2ca7</guid>
		<description><![CDATA[Balancing the scales of security and usability is the focus of industry experts concerned with building the next generation of portable medical devices.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="2" class="figure_intro" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=200&w=225&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FPC1045559%2Ffigures%2F2" />Editor&#8217;s note: Portable devices are a top focus in the small form factor embedded scene. Medical devices lead the portable design revolution, taking patient care out of traditional clinical settings and into the home and remote settings. When we asked a group of panelists about the present and future of mobile devices, medical was at the forefront of their minds. They discussed the challenges of combining the &#8220;iPhone factor&#8221; of user-friendly design with stringent security requirements and regulations, choosing platforms, and others that stand in the way of the next-generation of devices they&#8217;re trying to develop. Edited excerpts follow.</h3><span id="more-560"></span><span class='body'><p class="body-text"> </p>  <p class="figures">  		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FPC1045559%2Ffigures%2F1" title="Portable medical device panel.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FPC1045559%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Portable medical device panel.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		    </p>  <p class="interview-question"><span class="interview-name">SFF:</span> Portable medical devices have&nbsp;come a long way in the last few&nbsp;years. What impresses you about the current state of technology in these types of devices?</p>  <p class="body-text"><span class="interview-name">TABORN:</span> The cell phone market, among others, is driving cost, size, power, and ease of use improvements and possibilities into all application areas, which in medical modalities are quickly being implemented to improve patient outcomes. The handheld ultrasound and its battery life is a great example. The most impressive impact on medical devices is the better focus on user experience. This will directly improve patient care by decreasing the error rate of the applications and evaluation of the data.</p>  <p class="body-text"><span class="interview-name">McCRACKEN:</span> Out of nowhere, Android has emerged with the potential to become a dominant platform for portable embedded computing devices in the not-so-distant future. Chip-scale integration and improvements in battery technologies accompany the demand for standardized software application platforms. Finally, the performance of ARM SoCs has increased (up to Gigahertz dual core), while Intel has lowered its entry-level ultra-mobile processors to fit within size and power envelopes in order to compete for these coveted high-volume applications.</p>  <p class="body-text"><span class="interview-name">CHUNG:</span> The projective capacitive multi-touch screen has become one of the hottest topics within this segment, but requires application software development to showcase its values. Also, energy efficiency has always been a key focal point for portable devices, and the rise of RISC-based solutions has helped to further energy savings. </p>  <p class="body-text">Additionally, the different types of connectivity including Wi-Fi, Bluetooth, and 3.5G/4G wireless that are now readily built into portable medical devices permit easy access of electronic medical record databases or the future medical cloud in any location equipped with wireless signal reception. </p>  <p class="body-text"><span class="interview-name">MUNCH:</span> The acceptance of x86 and Windows into a market that has traditionally relied on custom hardware and software solutions is impressive. We see Windows as the primary user interface tied to FPGAs performing data crunching in many medical applications. There is also an increasing desire to use standard building-block products like COM Express CPU modules to allow the product design to be focused on its&nbsp;core competency, which is increasingly software.</p>  <p class="interview-question"><span class="interview-name">SFF:</span> What design challenges are engineers currently facing in medical device development?</p>  <p class="body-text"><span class="interview-name">McCRACKEN:</span> One key task facing engineers is platform selection. Everything from design environment and development tools to production royalties to product updating in the field hangs in the balance. Android is optimized for ARM at the moment, while other Linux platforms and Windows Embedded Compact run well on ARM and x86/Intel architectures alike. Additionally, time-to-market pressures are becoming as critical for FDA and other regulatory-based markets as they are for commercial and consumer markets where the winners take all. To that end, the richness and completeness of a product offering&#8217;s &#8220;out-of-the-box&#8221; functionality translates directly to competitive advantage. SBCs&nbsp;and COMs&nbsp;need to be ready as close as possible to the silicon launch (mass production).</p>  <p class="body-text"><span class="interview-name">MUNCH:</span> There has been a significant increase in the speed of signals in today&#8217;s designs, resulting in the need to use expensive and complicated simulation tools to verify signal integrity. Waiting until a design is fabricated to check and catch signal integrity issues can impact launch schedules and development costs. Even when using module building blocks the design still needs to deal with high-speed interfaces such as PCI Express, SATA, and now USB 3.0 SuperSpeed.</p>  <p class="body-text"><span class="interview-name">TABORN:</span> Of the many challenges engineers face, designers must first consider security since virtually all medical devices in the future will be connected to some type of network. Second, there are new demands for &#8220;ease of use&#8221; that are fostered by what many in the industry call the &#8220;iPhone factor.&#8221; </p>  <p class="body-text"><span class="interview-name">CHUNG:</span> Medical customers see features like low cost, long battery life, light weight, slim design, and new technologies that are currently seen in consumer products, and expect to see these elements implemented in portable medical products, but medical devices do not yet have these features.</p>  <p class="interview-question"><span class="interview-name">SFF:</span> Where do you expect medical devices to go in the future?</p>  <p class="body-text"><span class="interview-name">CHUNG:</span> Eventually portable medical devices will be used in the same sense that we use smartphones and tablets in our daily lives, but within a more secure network and with mechanisms to permit/deny access to sensitive patient data. Not only the patients but the physicians and healthcare administrators will benefit significantly from this development.</p>  <p class="body-text">From a hardware perspective, lighter and thinner is always the trend. On a system level, portable medical devices have different market segments, such as general hospital/clinical administration usage that may require building a whole infrastructure, or portable diagnostic devices for ultrasound, ECG, and blood pressure monitoring that require joint system design with customers. </p>  <p class="body-text"><span class="interview-name">McCRACKEN:</span> Someday, the portable subset of embedded devices will be nearly as ubiquitous as their consumer counterparts, relatively speaking. Whether in the form of sensors or medical patient monitors, these products will proliferate based upon consolidated, standardized ultra-mobile platforms much the way the original DOS + x86 embedded computers did. In some cases with dual- or multicore systems, the second processor core will be devoted to the deterministic and real-time aspects of the device, such as taking measurements.</p>  <p class="body-text"><span class="interview-name">TABORN:</span> These devices will be far more flexible and extensible in the future. One of the best things to happen to medical is the advent of the iPhone. This demonstrated to the world that a small device could be intuitive and very efficient. This will cause device manufactures to address the areas of ease of use and human workflow, reducing human error and encouraging operation and use cases in non-traditional settings&nbsp;&#8211; improving patient care throughout the&nbsp;world.</p>  <p class="interview-question"><span class="interview-name">SFF:</span> What does the industry need to get to the next generation of medical portable mobile devices?</p>  <p class="body-text"><span class="interview-name">MUNCH:</span> Continuing to drive down total power consumption would be a good start, and achieving this will just take time. This results in two benefits: an increase in battery life (or a smaller battery to reduce weight) and reduction in power that needs to be dissipated. </p>  <p class="body-text"><span class="interview-name">CHUNG:</span> The prospect of wireless battery charging would be one technology that would help these applications realize their true potential for power-efficiency and application usage. </p>  <p class="body-text">Additionally, comprehensive infrastructure, regulations, and mobile healthcare protocols will be key to these devices&#8217; future. This will allow medical computing manufacturers the ability to develop portable/mobile medical-specific devices and applications that can be implemented within the same network, making the future medical cloud ecosystem possible. </p>  <p class="body-text"><span class="interview-name">TABORN:</span> The ability to implement future security policies must be considered in today&#8217;s devices. This suggests having the &#8220;headroom&#8221; in the design shipped today to be able to implement more complex policies in the future. Unlike most devices, medical devices in clinical and hospital settings are unique in that they can be in service for 10-to-15 years. For consumer-geared medical mobile devices, we will have to ensure that the applications data acquired can be just as safe and reliable as data acquired in the clinical setting (given the various different circumstances). Multicore solutions are becoming readily available in both Intel and ARM architecture families. This topology choice will allow developers to address these unique application requirements for today with the necessary performance headroom to support the ever-changing security landscape.</p>  <p class="body-text"><span class="interview-name">McCRACKEN:</span> Better hardware standards are needed in order to &#8220;cross the chasm.&#8221; Some existing standards like Qseven have been reasonably architecture-independent. However, there are now so many single-vendor-driven x86 and (especially) ARM module and interface standards that have been prevented from reaching critical mass in this industry. A casual stroll down the halls of Embedded World in Germany reveals that a massive shake-out will be needed; otherwise system manufacturers will be left squandering time-to-market and development budgets in taking the full custom path. Standards organizations have been portrayed as slow-moving and political, leading some suppliers to go it alone. Any standards groups that can set aside self-interests and become more responsive to customers and end users will have a major leg up in leading the consolidation that is needed to facilitate the next wave of medical portable devices. </p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/panel-discussion-designing-portable-medical-devices-that-emulate-todays-consumer-devices-with-added-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symbolic execution techniques identify vulnerabilities in safety-critical code</title>
		<link>http://www.mil-embedded.com/articles/id/?5580</link>
		<comments>http://www.mil-embedded.com/articles/id/?5580#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Paul Anderson, GrammaTech</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[application penetration testing]]></category>
		<category><![CDATA[application penetration testing tools]]></category>
		<category><![CDATA[application security scanning]]></category>
		<category><![CDATA[application security testing tools]]></category>
		<category><![CDATA[application security vulnerabilities]]></category>
		<category><![CDATA[application vulnerability testing]]></category>
		<category><![CDATA[c static code analysis tools]]></category>
		<category><![CDATA[c static code analyzer]]></category>
		<category><![CDATA[code analyzer tool]]></category>
		<category><![CDATA[code static analysis]]></category>
		<category><![CDATA[distributed embedded systems]]></category>
		<category><![CDATA[GrammaTech]]></category>
		<category><![CDATA[improving .net application performance]]></category>
		<category><![CDATA[Industry Spotlight]]></category>
		<category><![CDATA[klocwork static analysis]]></category>
		<category><![CDATA[metrics for software quality]]></category>
		<category><![CDATA[military embedded system]]></category>
		<category><![CDATA[parallel distributed computing]]></category>
		<category><![CDATA[penetration test tool]]></category>
		<category><![CDATA[penetration test tools]]></category>
		<category><![CDATA[penetration testing methodologies]]></category>
		<category><![CDATA[penetration testing methodology]]></category>
		<category><![CDATA[penetration testing tool]]></category>
		<category><![CDATA[penetration testing web applications]]></category>
		<category><![CDATA[reliability testing in software testing]]></category>
		<category><![CDATA[security application testing]]></category>
		<category><![CDATA[security pen testing]]></category>
		<category><![CDATA[security testing for web application]]></category>
		<category><![CDATA[security testing for web applications]]></category>
		<category><![CDATA[security testing in web application]]></category>
		<category><![CDATA[security testing of web applications]]></category>
		<category><![CDATA[security testing tool]]></category>
		<category><![CDATA[security testing tools]]></category>
		<category><![CDATA[security testing web application]]></category>
		<category><![CDATA[security testing web applications]]></category>
		<category><![CDATA[Software Analysis]]></category>
		<category><![CDATA[software complexity metrics]]></category>
		<category><![CDATA[software reliability and testing]]></category>
		<category><![CDATA[software reliability testing]]></category>
		<category><![CDATA[source code analysis tool]]></category>
		<category><![CDATA[source code static analysis]]></category>
		<category><![CDATA[static code analyser]]></category>
		<category><![CDATA[static code analysis tools c]]></category>
		<category><![CDATA[static code analyzer]]></category>
		<category><![CDATA[static code analyzers]]></category>
		<category><![CDATA[static code checker]]></category>
		<category><![CDATA[testing web application security]]></category>
		<category><![CDATA[therac 25 accidents]]></category>
		<category><![CDATA[therac-25 radiation therapy machine]]></category>
		<category><![CDATA[vulnerability penetration testing]]></category>
		<category><![CDATA[vulnerability testing tools]]></category>
		<category><![CDATA[web app penetration testing]]></category>
		<category><![CDATA[web app security testing]]></category>
		<category><![CDATA[web application pen testing]]></category>
		<category><![CDATA[web application penetration test]]></category>
		<category><![CDATA[web application penetration testing]]></category>
		<category><![CDATA[web application security scanner]]></category>
		<category><![CDATA[web application vulnerabilities]]></category>
		<category><![CDATA[web application vulnerability]]></category>
		<category><![CDATA[web application vulnerability scanner]]></category>
		<category><![CDATA[web application vulnerability scanners]]></category>
		<category><![CDATA[web application vulnerability testing]]></category>
		<category><![CDATA[web security testing tools]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=12dd6153af04a69f0be98ce7cc584c7b</guid>
		<description><![CDATA[Testing, testing... Advanced static analysis tools are key in identifying and eliminating concurrency defects, and producing high-quality safety-critical software.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5580%2Ffigures%2F3" />Multicore processors are becoming increasingly popular in safety-critical applications because they offer significant price and performance improvements. However, writing multithreaded applications for multicore hardware is notoriously difficult and could result in catastrophic failures. The following describes symbolic execution techniques for identifying issues including data races &#8211; one of the most common concurrency defects &#8211; and how static analysis can help developers find and eliminate them.</h3><span id="more-550"></span><span class='body'><p class="body-text">Maximizing performance is especially important for military embedded systems because of the growing need to keep costs low while satisfying the requirements of connectivity in an increasingly digital battlefield. As manufacturers reach the limits of what can be&nbsp;wrung from increased miniaturization and integration, the best approach to increased performance is the use of multicore processors. </p>  <p class="body-text">The downside is that to take full advantage of many cores executing in parallel, the software must be written to be intrinsically multithreaded. Software written to be single-threaded for a single core processor will realize little or no performance benefit when executed on a multicore processor: It must be rewritten or adapted to use multithreading. The key challenge is to keep the cores busy as much as possible, while ensuring that they coordinate access to shared resources properly. Unfortunately writing such code is much harder than writing single-threaded code. When there are defects such as deadlocks or race conditions, they can manifest in ways that are difficult to diagnose. Traditional techniques for finding and eliminating concurrency bugs may be&nbsp;ineffective.</p>  <p class="body-text">One of the core reasons why concurrency bugs are so difficult is because there is an enormous number of ways in which the events in the threads can be interleaved when those threads execute. As the number of threads or instructions increases, the number of interleavings increases exponentially. If thread A executes M instructions and thread B executes N instructions, there are <span class="superscript">N+M</span>CN possible interleavings of the two threads. For example, given two trivial threads with 10 instructions each, there are 184,756 possible interleavings of those instructions. Even with very small programs it is clear that it is next to impossible to test all possible combinations. Secondly, even if it is possible to identify a single interleaving that leads to a failure, it can be very difficult to set up a repeatable test case that uses that particular interleaving because scheduling of threads is effectively nondeterministic. Consequently, debugging concurrent programs can be very expensive and time consuming. A race condition is a class of concurrency defect that is easy to accidentally introduce and difficult to eliminate with conventional testing. However, there are techniques programmers can use to find and remove them. </p>  <p class="heading-1">Potential catastrophic failures </p>  <p class="body-text">Compared to single-threaded code, entirely new classes of defect can occur in concurrent programs, including deadlock, starvation, and race conditions. Such defects mostly cause mysterious failures during development that are very difficult to diagnose and eliminate. One avionics manufacturer we have worked with spent two person-years applying traditional debugging techniques in an effort to find the root cause of an intermittent software failure that turned out to be a race condition. Sometimes the consequences can be dire &#8211; two of the most infamous software failures ever were caused by race conditions. The Therac-25 radiation therapy machine featured a race condition that was responsible for the deaths of several patients[2]. Similarly, the 2003 Northeast blackout was exacerbated by a race condition that resulted in misleading information being communicated to the technicians[3]. </p>  <p class="body-text">There are several different kinds of race conditions. One of the most common and insidious forms &#8211; data races &#8211; is the class of race conditions involving access to memory locations. </p>  <p class="body-text">A data race occurs when there are two or more threads of execution that access a shared memory location, at least one thread is changing the data at that location, and there is no explicit mechanism for coordinating access. If a data race occurs it can leave the program in an inconsistent state.</p>  <p class="body-text">Consider avionics code that controls the position of a flap. In normal circumstances the flap is in a position dictated by the flight control software, but the pilot can override that position by pressing a button on his control panel, in which case a manually set position is used. To keep things simple, let&#8217;s say that there are two threads in the program: one that controls the flap and one that monitors the position of the elements on the control panel. There is also a shared Boolean variable, named <span class="italics">is_manual,</span> that encodes whether the manual override is set or not. The flap position thread checks the value of <span class="italics">is_manual,</span> and if true, it sets the position accordingly. The control panel thread listens for button press events, and if the override button is pressed, it sets <span class="italics">is_manual</span> to true. Figure 1 shows the code that one might write to implement this specification. This code is likely to work most of the time; however, because the is_manual variable encodes a state that is shared by both threads, it is vulnerable to a data race because access to it is not protected by a lock. If the flap positioning code is being executed at the exact time that the pilot hits the override button, then the program may enter an inconsistent state and the wrong flap position will be used. Figure&nbsp;2 shows how this might happen.</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5580%2Ffigures%2F1" title="Code in two threads that access a shared variable">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5580%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Code in two threads that access a shared variable</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5580%2Ffigures%2F2" title="An interleaving of instructions that causes a data race">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5580%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 2:</b> An interleaving of instructions that causes a data race</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">This example neatly illustrates one of the properties of data races that makes them hard to diagnose: The symptom of corruption may only be observable long after the data race has occurred. In this case, the fact that the wrong flap position is being used may only be noticed when the pilot notices the aircraft is not responding as expected.</p>  <p class="body-text">A widely held belief is that some instances of data races are benign and can be tolerated. However, it is now clear beyond doubt that this is only rarely true. The C standard[4] states unambiguously that compilers are allowed to assume that there are no data races, so optimizers can and do make transformations that are valid for improving the performance of single-threaded code but which introduce bugs when there are apparently benign race conditions. These are subtle effects &#8211; even experienced programmers are regularly surprised by them. (See reference [1] for a full explanation and several compelling examples.) Because of this, to achieve high levels of assurance and avoid disastrous failures, it is very important to find and remove all data races.</p>  <p class="heading-1">Eliminating concurrency defects</p>  <p class="body-text">Given that concurrency defects, and data races in particular, are so risky, it is important to use multiple techniques to eliminate them. Traditional dynamic testing is not well suited for finding many concurrency defects because of non-determinism. A program that passes a test hundreds of times may later fail in the same environment with exactly the same inputs because the bug can be exquisitely sensitive to timing. Engineers looking for high assurance must turn to other techniques if they are to eliminate concurrency defects.</p>  <p class="body-text">Static analysis tools offer a means for finding such bugs. The key difference between testing and static analysis is that it tests a particular execution of a program for a given set of inputs, whereas static analysis finds properties that are good for all possible executions and all inputs. (In practice, static analysis tools make approximations to achieve acceptable performance and precision, so fall short of this ideal model. Nevertheless, they do cover many more cases than would ever be possible with traditional testing.)</p>  <p class="body-text">Roughly speaking, static analysis tools work by creating a model of the program and by doing a symbolic execution of that model, looking for error conditions along the way. For example, GrammaTech&#8217;s CodeSonar static analysis tool finds data races by creating a map of which locks are held by which threads and by reasoning about the possible interleavings that could result in unsynchronized access to shared variables. Deadlock and other concurrency defects (including lock mismanagement) are found using similar techniques.</p>  <p class="heading-1">Custom concurrency constructs: A&nbsp;case study</p>  <p class="body-text">Standard defect detection techniques are most useful when programs use standard ways of managing concurrency. Most tools recognize and can reason about the special properties of standard libraries such as the POSIX threads library or proprietary interfaces such as VxWorks. However, many systems use custom techniques for managing concurrency.</p>  <p class="body-text">For example, another manufacturer we worked with built a safety-critical device on a platform that used a custom pre-emptive multithreaded software interface. In this design, a key constraint was that all data instances that could be accessed from multiple priority levels of threads had to be protected with proper guard constructs. Prior to using static analysis, validating that this constraint was respected required a person-month of manual analysis. To reduce the cost, they sought a solution by turning to static analysis. An important property of modern advanced static analysis tools is that they are extensible: They provide an API with abstractions that make it convenient to implement custom static-analysis algorithms. Using CodeSonar&#8217;s API, they were able to program a solution that piggybacked on the algorithms used at the core of the existing analyses to find locations in the code where the design constraint was being violated. The resulting tool, implemented as a plug-in, is able to find violations of the key constraint automatically, all at a fraction of the cost and in much less time than was previously possible.</p>  <p class="heading-1">Multicore trade-off </p>  <p class="body-text">There are compelling reasons to move to multicore processor designs, but the risk is that doing so introduces the possibility of concurrency defects in the software. These are easy to introduce &#8211; even apparently innocent code can harbor nasty multithreading bugs &#8211; and notoriously difficult to diagnose and eliminate when they occur. Traditional testing techniques alone are inadequate to ensure high-quality software, mainly because of the high degree of nondeterminism. The use of advanced static analysis tools that use symbolic execution is one approach that can help because such tools can reason about all possible ways in which the code can execute. These tools can find defects such as data races and deadlocks in code that uses standard multithreading libraries, and can even be adapted to designs that use nonstandard concurrency constructs. </p>  <p class="reference-heading">References</p>  <p class="references-list">[1] Boehm, H.-J., How to miscompile programs with &#8220;benign&#8221; data races. In HotPar&#8217;11 Proceedings of the 3rd USENIX conference on Hot topics in parallelism.</p>  <p class="references-list">[2] Leveson, N.G., An investigation of the Therac-25 accidents. IEEE Computer, 1993. 26: pp.&nbsp;18-41.</p>  <p class="references-list">[3] Poulsen, K., Tracking the blackout bug, www.securityfocus.com/news/8412.</p>  <p class="references-list">[4] C Standards Committee (WG14). Committee Draft: www.open-std.org/jtc1/sc22/wg14/www/docs/n1539.pdf</p>  <p class="author-bio">Paul Anderson is VP of Engineering at GrammaTech. He&nbsp;received&nbsp;his B.Sc. from Kings College, University of London and&nbsp;his Ph.D. in Computer Science from City University London. Paul manages GrammaTech&#8217;s engineering team and is the architect of the company&#8217;s static analysis tools. Paul has worked in the software industry for 20 years, with most of his experience focused on developing static analysis, automated testing, and program transformation tools. Contact him at paul@grammatech.com.</p>  <p class="contact-info">GrammaTech, Inc.  607-273-7340 www.grammatech.com</p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/symbolic-execution-techniques-identify-vulnerabilities-in-safety-critical-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfalls of multicore software: Why data races are never benign</title>
		<link>http://www.embedded-computing.com/articles/id/?5568</link>
		<comments>http://www.embedded-computing.com/articles/id/?5568#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Paul Anderson, GrammaTech</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[c static code analyzer]]></category>
		<category><![CDATA[code analyzer tool]]></category>
		<category><![CDATA[gnu c compilers]]></category>
		<category><![CDATA[GrammaTech]]></category>
		<category><![CDATA[klocwork tool]]></category>
		<category><![CDATA[Pitfalls of multicore software]]></category>
		<category><![CDATA[static analysis]]></category>
		<category><![CDATA[static code analyzer c]]></category>
		<category><![CDATA[static code checker]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=48edf2cc366f65f8a7278bb09a86a271</guid>
		<description><![CDATA[Static analysis tools build models to help single out race conditions that would otherwise run away with software integrity.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="1" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5568%2Ffigures%2F1" />Despite the widespread misconception that some data races are entirely harmless, modern optimizing compilers generate code that can cause incorrect execution when data races exist. Using static and dynamic analysis, programmers can find and eliminate these defects that are often inadvertently introduced into their code.</h3><span id="more-552"></span><span class='body'><p class=Bodytext><span id="Ad-ABD-1" style="display: none; float: left;"></span>Programming multicore processors to take advantage of their power means writing multithreaded code. C and C++ were not designed for concurrency, so developers must use a library such as pthreads for those languages. Multithreaded code is more difficult to get right than single-threaded due to the risk posed by entirely new classes of programming defects. </p>  <p class=Bodytext><span id="Ad-ABD-1" style="display: none; float: left;"></span>In the rogue&#8217;s gallery of concurrency bugs, the race condition is a notorious repeat offender. A race condition occurs when a program checks a resource property and performs an action on the assumption that the property has not changed, even though an external actor has slipped in and changed that property.</p>  <p class=bodytext>A data race is a particular type of race condition that involves concurrent access to memory locations in a multithreaded program. This defect occurs when there are two or more execution threads that access a shared memory location, at least one thread is changing the data at that location, and there is no explicit mechanism for coordinating access. If a data race occurs, it can leave the program in an inconsistent state.</p>  <h1>The insidious nature of data races</h1>  <p class=bodytext>It is widely assumed that some data races are harmless and can be safely ignored. Unfortunately, this is only true in very rare circumstances. It is best to explain why by introducing an example.</p>  <p class=bodytext>The <span class=italics>singleton pattern</span> is a commonplace idiom where the program maintains a reference to a single underlying object and a Boolean variable encodes it if it has been initialized. This pattern is also known as <span class=italics>lazy initialization</span>. The following code is an example of the pattern:</p>  <p class=codeparagraph style='text-indent:12.0pt'>if (!initialized) {</p>  <p class=codeparagraph style='margin-left:24.0pt;text-indent:12.0pt'>object = create();</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>initialized = true;</p>  <p class=codeparagraph style='text-indent:12.0pt'>}</p>  <p class=codeparagraph style='margin-bottom:6.0pt;text-indent:12.25pt'>... object ...</p>  <p class=bodytext>This code is perfectly adequate for a single-threaded program, but it is not thread-safe because it has a data race on the variable named <span class=codecharacter>initialized</span>. If called by two different threads, there is a risk that both threads will observe <span class=codecharacter>initialized</span> as false at essentially the same time, and both will call <span class=codecharacter>create()</span>, thus violating the singleton property.</p>  <p class=bodytext>To make this thread safe, the natural approach is to protect the entire <span class=codecharacter>if</span> statement with a lock. However, acquiring and releasing locks can be costly, so programmers try to avoid the expense by using the <span class=italics>double-checked locking</span> idiom &#8211; a check outside the scope of the lock and another inside. The inner check is there to confirm that the first check still holds after the lock has been acquired:</p>  <p class=codeparagraph style='text-indent:12.0pt'>if (!initialized) {</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>lock();</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>if (!initialized) {</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count: 2'>&nbsp;&nbsp;&nbsp; </span>object = create();</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count: 2'>&nbsp;&nbsp;&nbsp; </span>initialized = true;</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>}</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>unlock();</p>  <p class=codeparagraph style='text-indent:12.0pt'>}</p>  <p class=codeparagraph style='margin-bottom:6.0pt'><span style="mso-spacerun: yes">&nbsp; </span>... object ...</p>  <p class=bodytext>Superficially, this looks like it will suffice, and indeed, it will as long as the statements are guaranteed to execute in that order. However, an optimizing compiler might generate code that essentially switches the order of <span class=codecharacter>object = create()</span> and <span class=codecharacter>initialized = true</span>. After all, there is no explicit dependence between those two statements. In that case, if a second thread enters this code any time after the assignment to <span class=codecharacter>initialized</span>, that thread would then use the value of <span class=codecharacter>object</span> before it has been initialized.</p>  <p class=bodytext>Optimizing compilers are inscrutable beasts. Those that optimize for speed will take many esoteric considerations into account, few of which are obvious to a programmer. It is common for them to generate instructions that are apparently out of order because doing so might result in fewer cache misses, or because fewer instructions are needed.</p>  <p class=bodytext>It is wrong to assume that because the reordering introduced a race condition in the previous example that the compiler is at fault. The compiler is doing exactly what it is allowed to do. The language specification is perfectly clear and unambiguous about this: The compiler is allowed to assume that there are no data races in the program.</p>  <p class=bodytext>In actuality, the specification is somewhat broader: Compilers are allowed to do anything in the presence of undefined behavior. This is sometimes facetiously referred to as <span class=italics>catch fire</span> semantics; the specification gives the compiler permission to set a computer on fire if the program has undefined behavior. As well as data races, many traditional bugs such as buffer overruns, dereferences of invalid addresses, and so on constitute undefined behavior. Because compilers are free to do anything, rather than burn the building down they typically do the sensible thing, which is to assume that the undefined behavior will never happen and optimize accordingly.</p>  <p class=bodytext>The consequences of this can sometimes be surprising, even to those who are experts in concurrency and compilers. It can be difficult to convince programmers that code that looks completely correct can be compiled into code that has serious errors.</p>  <p class=bodytext>Another example is worth describing. Suppose there are two threads where one reads a shared variable and the other writes to it. Let&#8217;s assume that it does not matter to the reader if it sees the value before or after it has been changed by the writer (this is not an uncommon pattern). If those accesses are not protected by a lock, then there is clearly a data race. Notwithstanding the catch fire rule, however, most programmers would conclude that this is completely benign.</p>  <p class=bodytext>As it turns out, there are at least two plausible ways in which this code could be compiled where the reader would see a value that is wrong. The first way is easy to explain: Suppose the value were a 64-bit quantity on an architecture that can only read 32-bit words. Then both the reader and the writer need two instructions, and an unlucky interleaving might mean that the reader sees the top 32 bits of the old value and the bottom 32 bits of the new, which when combined can be a value that is neither the old nor the new.</p>  <p class=bodytext>The second way in which wrong code could be generated is more subtle. Suppose the reader did the following, where the data race is on the variable named <span class=italics>global</span>:</p>  <p class=codeparagraph style='text-indent:12.0pt'>int local = global;<span style="mso-spacerun: yes">&nbsp; </span>// Take a copy of<br> <span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// the global</p>  <p class=codeparagraph style='text-indent:12.0pt'>if (local == something) {</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp; </span>...</p>  <p class=codeparagraph style='text-indent:12.0pt'>}</p>  <p class=codeparagraph style='text-indent:12.0pt'>... // Some non-trivial code that does<br> <span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// not change global or local</p>  <p class=codeparagraph style='text-indent:12.0pt'>if (local == something) {</p>  <p class=codeparagraph><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp; </span>...</p>  <p class=codeparagraph style='text-indent:12.0pt'>}</p>  <p class=bodytext>Here the reader is making a local copy of the racy variable and referring to that value twice. It is reasonable to expect that the value will be the same in both places, but again, the optimizing compiler can generate code where that expectation is unmet. If <span class=codecharacter>local</span> is assigned to a register then it will have one value for the purposes of the first comparison, but if the code between the two conditionals is sufficiently nontrivial then that register may get <span class=italics>spilled</span> &#8211; in other words, reused for a different purpose. In that case, at the second conditional, the value of <span class=codecharacter>local</span> will be reloaded from the global variable into the register, by which time the writer might have changed it to a different value.</p>  <p class=bodytext>Programmers should be very skeptical of claims that some data races are acceptable and should strive to find and remove all of them from their code.</p>  <h1>Techniques for finding risky defects</h1>  <p class=bodytext>When it comes to finding concurrency defects, traditional dynamic testing techniques might be inadequate. A program that passes a test a hundred times is not guaranteed to pass the next time, even with the same inputs and the same environment. Whether these bugs manifest or not is exquisitely sensitive to the timing, and the order in which operations in threads are interleaved is essentially nondeterministic.</p>  <p class=bodytext>New dynamic testing techniques for finding data races are emerging. These techniques work by monitoring the applications as they execute and observing the locks held by each thread, as well as the memory locations being accessed by those threads. If an anomaly is found, then a diagnostic is issued. Other tools help diagnose data races suspected of causing failures. Some companies now offer tools to facilitate diagnosis of data races that allow the replay of events leading up to an anomaly.</p>  <p class=bodytext>Static analysis tools can also be useful for finding data races and other concurrency errors. Whereas dynamic testing tools find defects that occur for particular executions of a program with a fixed set of inputs, static analysis tools check all possible executions and all possible inputs. For performance reasons, tools might place limits on how much exploration is done and thus might not be completely exhaustive; even so, they can cover much more than can ever be feasible with dynamic testing. The advantage of static analysis is that test cases are not required because the program is never actually executed.</p>  <p class=bodytext>Instead, these tools work by creating a model of the program and then exploring the model in various ways to find anomalies. GrammaTech&#8217;s CodeSonar finds data races by creating a model that represents the set of locks held by each thread and by performing a symbolic execution of the program that explores execution paths. It records the sets of variables protected by locks and uses this information to find interleavings that can result in shared variables being used without proper synchronization. Similar techniques can be used to find other concurrency defects such as deadlock and lock mismanagement.</p>  <p class=bodytext>Once found, data races are usually easy to fix, albeit doing so correctly can incur a performance penalty. In some cases, there might be a temptation to use the C volatile keyword to correct the data race, but this is not recommended because volatile was not designed to solve concurrency problems, and in any case is a poorly understood construct that is frequently miscompiled. The latest versions of C and C++ have embraced concurrency and support atomic operations. Compiler support for these operations is slowly emerging, and until it becomes readily available, the best approach is to use locks.</p>  <p class=bodytext>To achieve high-quality software for multicore processors, a zero-tolerance policy for data races is recommended. Find them using a combination of both static and dynamic techniques, and take care not to rely too heavily on esoteric compiler techniques to fix them. These defects are so risky and unpredictable that eliminating them systematically is the only safe way to be sure that they do not cause harm.</p>  <p class=authorbio>Paul Anderson is VP of Engineering at GrammaTech.</p>  <p class=contactinfo>GrammaTech<br> 607-273-7340<br> <span style='font-weight:normal'><a href="mailto:paul@grammatech.com"><b style='mso-bidi-font-weight:normal'>paul@grammatech.com</b></a></span> <br> <span style='font-weight:normal'><a href="http://www.grammatech.com"><b style='mso-bidi-font-weight:normal'>www.grammatech.com</b></a></span> </p></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/pitfalls-of-multicore-software-why-data-races-are-never-benign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The value of usability: Getting developers to &#8216;push the button&#8217; on static analysis &#8211; Q&amp;A with Gwyn Fisher, CTO, Klocwork</title>
		<link>http://www.embedded-computing.com/articles/id/?5567</link>
		<comments>http://www.embedded-computing.com/articles/id/?5567#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Jennifer Hesse, Editor, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[advanced microsoft office training]]></category>
		<category><![CDATA[advanced microsoft project training]]></category>
		<category><![CDATA[application development process]]></category>
		<category><![CDATA[application development tools]]></category>
		<category><![CDATA[application software developer]]></category>
		<category><![CDATA[applications software development]]></category>
		<category><![CDATA[c software development]]></category>
		<category><![CDATA[computer training courses]]></category>
		<category><![CDATA[computer training online courses]]></category>
		<category><![CDATA[custom software developer]]></category>
		<category><![CDATA[custom software developers]]></category>
		<category><![CDATA[database application development]]></category>
		<category><![CDATA[database software development]]></category>
		<category><![CDATA[development tools software]]></category>
		<category><![CDATA[embedded software applications]]></category>
		<category><![CDATA[embedded software developers]]></category>
		<category><![CDATA[embedded software projects]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems applications]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[Klocwork]]></category>
		<category><![CDATA[klocwork static analysis]]></category>
		<category><![CDATA[metrics software development]]></category>
		<category><![CDATA[microsoft access 2007 training courses]]></category>
		<category><![CDATA[microsoft publisher training courses]]></category>
		<category><![CDATA[mobile software developer]]></category>
		<category><![CDATA[ms office online courses]]></category>
		<category><![CDATA[ms project training classes]]></category>
		<category><![CDATA[online training courses]]></category>
		<category><![CDATA[product software development]]></category>
		<category><![CDATA[programming and software development]]></category>
		<category><![CDATA[software application developer]]></category>
		<category><![CDATA[software application development process]]></category>
		<category><![CDATA[software applications development]]></category>
		<category><![CDATA[software database development]]></category>
		<category><![CDATA[software development application]]></category>
		<category><![CDATA[software development applications]]></category>
		<category><![CDATA[software development c]]></category>
		<category><![CDATA[software development consultant]]></category>
		<category><![CDATA[software development consulting]]></category>
		<category><![CDATA[software development custom]]></category>
		<category><![CDATA[software development environments]]></category>
		<category><![CDATA[software development from home]]></category>
		<category><![CDATA[software development home]]></category>
		<category><![CDATA[software development microsoft]]></category>
		<category><![CDATA[software development net]]></category>
		<category><![CDATA[software development platforms]]></category>
		<category><![CDATA[software development product]]></category>
		<category><![CDATA[software development products]]></category>
		<category><![CDATA[software development programming]]></category>
		<category><![CDATA[software development technology]]></category>
		<category><![CDATA[software development tools for]]></category>
		<category><![CDATA[software development windows]]></category>
		<category><![CDATA[software system development]]></category>
		<category><![CDATA[software tool development]]></category>
		<category><![CDATA[source code static analysis]]></category>
		<category><![CDATA[static analysis]]></category>
		<category><![CDATA[static code analyzer]]></category>
		<category><![CDATA[The value of usability]]></category>
		<category><![CDATA[tools for software development]]></category>
		<category><![CDATA[web application developers]]></category>
		<category><![CDATA[web application security testing]]></category>
		<category><![CDATA[web based application development]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=613e6ca77fb16bd10117d309c0b0e20c</guid>
		<description><![CDATA[In and exclusive Q&#38;A session with Embedded Computing Design, Gwyn Fisher of Klocwork comments on static code analysis and its growth as a staple of embedded software development.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5567%2Ffigures%2F3" />The ubiquitous nature of embedded software has made source code analysis a critical component of the development process. Gwyn discusses the impact this technology has on software security and reliability, and emphasizes the importance of making static analysis a natural part of a developer&#8217;s coding practice.</h3><span id="more-553"></span><span class='body'><p class="body-text"></p>  <p class="interview-question"><span class="interview-name">ECD:</span> As embedded developers turn to multicore processors to optimize performance, how can analysis tools help control inevitable cost and schedule problems?</p>  <p class="body-text"><span class="interview-name">FISHER:</span> Any new development is an exercise in balancing expectation against risk. In the case of multicore, the naive expectation is always linear acceleration tempered perhaps by some jocular &#8220;wouldn&#8217;t that be nice&#8221; acceptance that the final result won&#8217;t be quite that good, but no real understanding of the reality that without significant effort (read: time, money, angst) the result might be slower than the old, interrupt-driven single-core code. So tools have a role to play in terms of helping developers understand the impact of what they&#8217;re doing, what pitfalls they&#8217;re unwittingly leaving themselves open to, and how to mitigate the associated risks.</p>  <p class="body-text">Dynamic analysis in this space has received the lion&#8217;s share of attention for obvious reasons. If I can see a nice set of graphs over time that shows the performance of my code in action, I can presumably narrow in on problem areas quickly and apply my own knowledge to figuring out what&#8217;s going on. The challenge with dynamic analysis is that it depends on a) defining a test set that shows execution problems, and b) the reviewer&#8217;s intimate knowledge and understanding of what to do about those problems.</p>  <p class="body-text">Static analysis, by contrast, assumes little knowledge on behalf of the reviewer and requires no effort to be expended in defining test cases. Every conceivable code path through the application is exercised with as much rigor as every other path. This approach is therefore far more likely to show complex and costly issues such as data races, deadlocks, and resource contention than any constructed test bench. That speaks directly to the bottom line of cost control in what is inevitably a large, over-budget project. Leaving issues such as these in a code base until late in the validation process will cost exponentially more to address than doing so during initial development.</p>  <p class="body-text">In addition, due to the way that static analysis works by modeling the expected program execution, the finding is accompanied by a detailed walk-through of how the situation is predicted to occur, allowing even a relatively junior resource to interpret the issue at hand, determine whether or not it&#8217;s likely to happen, and apply an appropriate design fix. In one example we like to describe in seminars on the subject, a design flaw in a popular open-source database kernel resulted in months of effort expended to identify a deadlock and eventually rewrite key modules to avoid the data race at its heart. This same problem was identified during the first analysis using our tools, which provided a walk-through description enabling developers to easily see that the data race was causing the problem and that the deadlock was merely the symptom.</p>  <p class="body-text">Contrast a few hours to run the tool to analyze the code and an hour at most to interpret and act upon the result (what turns out to be a one-line fix) with months of community effort to determine an appropriate set of tests, followed by design effort attempting to fix the deadlock, and finally requiring the designer to rewrite the whole thing from scratch.</p>  <p class="interview-question"><span class="interview-name">ECD:</span> How is static analysis introduced in the software development cycle, and how can it be used with existing Integrated Development Environment (IDE) tools?</p>  <p class="body-text"><span class="interview-name">FISHER:</span> There&#8217;s absolutely no doubt that any developer-facing tool that doesn&#8217;t integrate seamlessly with any existing tooling is going to face significant friction in deployment. We&#8217;ve been selling this message effectively for years, with development managers almost asking the &#8220;why wouldn&#8217;t you do it this way?&#8221; question for us.</p>  <p class="body-text">Whether developers have migrated to IDEs or their idea of an IDE is a bunch of gVim macros or emacs lisp modules, to them it&#8217;s where they live and work. And woe betide any vendor who tries to get them to change. Even if you&#8217;re not suggesting that they change tools, and instead asking them to visit somewhere else to see what they might have done wrong in some retrospective manner, your tool is going to suffer waves of disinterest and ultimately become shelfware.</p>  <p class="body-text">Thus, static analysis has to be part of the developer&#8217;s native habitat, and more importantly, it has to work in a way that feels natural and follows the way other tools in that habitat work. For a gVim developer, issuing a &#8216;:&#8217; command is second nature, so tools in that environment should follow suit. Put that same interaction mechanism in front of a Visual Studio user, and that will make for a fun-filled afternoon of derisive commentary.</p>  <p class="body-text">At Klocwork we&#8217;ve gone through various iterations of technology design, getting closer to the developers themselves. It&#8217;s one thing to be resident as a tool within an IDE; it&#8217;s another to get the developer to &#8220;push the button&#8221; to use it. Making a button available is only changing geography, and it does nothing to help with the tool&#8217;s fundamental usability.</p>  <p class="body-text">With this in mind, we&#8217;ve recently introduced a new technology that allows static analysis to take place in much the same way as spell checking in a Word document or e-mail. That is, as you&#8217;re writing your code and the tool detects a problem with what you&#8217;re doing, it can point out the problem in a perceptually instant manner, highlight it with a squiggly underline, and deliver all the value of static analysis with none of the &#8220;what do I have to do to use it?&#8221; resistance that is typically encountered during any new tool&#8217;s introduction (see&nbsp;Figure 1).</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5567%2Ffigures%2F1" title="Following in the footsteps of word processors, Klocwork Insight highlights coding issues with a squiggly line the instant they&amp;#8217;re introduced.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5567%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Following in the footsteps of word processors, Klocwork Insight highlights coding issues with a squiggly line the instant they&#8217;re introduced.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">Getting a tool into an IDE is tough; getting it to be useful in the part of the IDE the developer truly lives in (the editor component, whatever that looks like in the environment at hand) is really&nbsp;tough. But until you&#8217;re there, you&#8217;re a&nbsp;distraction.</p>  <p class="interview-question"><span class="interview-name">ECD:</span> Can source code analysis be used to protect embedded devices against potential security threats?</p>  <p class="body-text"><span class="interview-name">FISHER:</span> Absolutely, source code analysis has a significant role to play in threat identification and validating whatever threat model is being used to determine vulnerability in the device. The connectivity requirement is common in the embedded world today. That connection might be to another chip, or another device, or the whole Internet. In any case, there&#8217;s somebody else either sending you information or receiving information you&#8217;re sending. That&#8217;s the starting point for having to worry about your entire application design.</p>  <p class="body-text">Static analysis doesn&#8217;t typically know, or try to know, anything about your surrounding environment. Tools can sometimes be tuned to perform their analysis within certain data boundaries, for example, such as knowing that a particular input will only range between -20 and +30 because it&#8217;s a temperature sensor intended for use in Western Europe. But that kind of thing is discouraged because you&#8217;re allowing the user to define limits to what the modeling technology naturally does &#8211; that is, assume nothing and point out everything that looks wrong.</p>  <p class="body-text">In the case of threat detection, we&#8217;re most worried about how the data you&#8217;re interacting with from the outside world is used internally. Is it used to create a buffer into which you&#8217;ll read data (code or value injection), or is it used for memory allocation (Denial of Service or DoS), or perhaps interpreted as a reference into an internal data structure (hijacking or redirection)? This kind of data and path validation &#8211; that is, the path that tainted data follows from the outside world to its point of use within the code &#8211; is natural for source code analysis, as it accomplishes this modeling in order to perform everything else it does.</p>  <p class="body-text">As a wonderful gentleman at a defense contractor once said to me, &#8220;Son, it&#8217;s a bomb; it&#8217;s supposed to blow up. We just want to be sure it doesn&#8217;t get hijacked on its way.&#8221;</p>  <p class="interview-question"><span class="interview-name">ECD:</span> What educational events or online classes does Klocwork offer to help embedded designers get started with its code analysis tools?</p>  <p class="body-text"><span class="interview-name">FISHER:</span> Like any commercial organization attempting to encourage users to gain value from its tools, Klocwork provides a full suite of educational and professional services, running the gamut from introductory materials aimed at first-time users, to more advanced courses targeting secure coding and threat modeling, to full-on deployment services and mentoring.</p>  <p class="body-text">We also recently introduced the Klocwork Developer Network (<span class="hyperlink"><a href="http://developer.klocwork.com">http://developer.klocwork.com</a></span>), a website serving our users and acting as a repository for online courses, video tutorials, in-depth courseware, and the usual variety of community forums and ticketing.</p>  <p class="body-text">Each customer has something unique they wish to gain from a tool such as source code analysis, so a large part of our educational focus is on internal champions, people who take knowledge of how the tools work and how other organizations have applied them and leverage those lessons in deploying our tools for their own use. A large part of that is learning from the community, so I&#8217;ve been thrilled to see the fast uptake that the Klocwork Developer Network has seen amongst users, both as a less formal mechanism for interacting with our staff, but most importantly as a way to learn from other customers.</p>  <p class="figures"> 		<figure>
 		<table width="260" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=870,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5567%2Ffigures%2F2" title="ECD in 2D: Klocwork Insight&amp;#8217;s plug-in for Visual Studio continuously runs data flow analysis to accurately identify defects and security vulnerabilities. Use your smartphone, scan this code, watch a video: http://opsy.st/zdEhC1. ART">
					<img width="250" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=250&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5567%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption>ECD in 2D: Klocwork Insight&#8217;s plug-in for Visual Studio continuously runs data flow analysis to accurately identify defects and security vulnerabilities. Use your smartphone, scan this code, watch a video: http://opsy.st/zdEhC1. </figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="author-bio">Gwyn Fisher is CTO of Klocwork.</p>  <p class="contact-info">Klocwork <span class="hyperlink"><a href="mailto:info@klocwork.com">info@klocwork.com</a></span>  <span class="hyperlink"><a href="http://www.klocwork.com/blog">www.klocwork.com/blog</a></span> <span class="hyperlink"><a href="http://www.fb.com/klocwork">www.facebook.com/klocwork</a></span>  <span class="bold">www.twitter.com/</span><span class="hyperlink"><a href="https://twitter.com/#!/klocwork">@klocwork</a></span> <span class="hyperlink"><a href="http://www.klocwork.com">www.klocwork.com</a></span> </p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/the-value-of-usability-getting-developers-to-push-the-button-on-static-analysis-qa-with-gwyn-fisher-cto-klocwork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ten critical embedded system trends to watch in 2012</title>
		<link>http://www.vmecritical.com/articles/id/?5587</link>
		<comments>http://www.vmecritical.com/articles/id/?5587#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:00:00 +0000</pubDate>
		<dc:creator>Jerry Gipper, Editorial Director, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Special Feature]]></category>
		<category><![CDATA[2012 calendar mayan]]></category>
		<category><![CDATA[2012 doomsday]]></category>
		<category><![CDATA[2012 mayan predictions]]></category>
		<category><![CDATA[2012 myan calendar]]></category>
		<category><![CDATA[2012 prophecy]]></category>
		<category><![CDATA[2012 year end]]></category>
		<category><![CDATA[apocalypse 2012]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[calendar mayan 2012]]></category>
		<category><![CDATA[Critical systems]]></category>
		<category><![CDATA[december 2012 mayan]]></category>
		<category><![CDATA[december 2012 predictions]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[doomsday 2012]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded sbc]]></category>
		<category><![CDATA[embedded single board computers]]></category>
		<category><![CDATA[embedded system design services]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system operating system]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[end mayan calendar]]></category>
		<category><![CDATA[fanless embedded system]]></category>
		<category><![CDATA[mayan 2012 prediction]]></category>
		<category><![CDATA[mayan calandar 2012]]></category>
		<category><![CDATA[mayan calendar apocalypse]]></category>
		<category><![CDATA[mayan calendar astrology]]></category>
		<category><![CDATA[mayan calendar doomsday]]></category>
		<category><![CDATA[mayan calendar prophecy]]></category>
		<category><![CDATA[mayan calendars 2012]]></category>
		<category><![CDATA[mayan prediction 2012]]></category>
		<category><![CDATA[mayan predictions 2012]]></category>
		<category><![CDATA[mayan tzolkin calendar]]></category>
		<category><![CDATA[mayans 2012 calendar]]></category>
		<category><![CDATA[mayans 2012 predictions]]></category>
		<category><![CDATA[mayans calendar 2012]]></category>
		<category><![CDATA[mayans calendar predictions]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[OpenSystems Media]]></category>
		<category><![CDATA[pc 104 board]]></category>
		<category><![CDATA[pc 104 boards]]></category>
		<category><![CDATA[pc 104 cpu]]></category>
		<category><![CDATA[pc 104 sbc]]></category>
		<category><![CDATA[pc 104 single board computer]]></category>
		<category><![CDATA[pentium single board computer]]></category>
		<category><![CDATA[qdr infiniband switch]]></category>
		<category><![CDATA[sbc embedded]]></category>
		<category><![CDATA[sbc single board computer]]></category>
		<category><![CDATA[single board]]></category>
		<category><![CDATA[single board computer embedded]]></category>
		<category><![CDATA[single board computer pci]]></category>
		<category><![CDATA[single board computer sbc]]></category>
		<category><![CDATA[single board pc]]></category>
		<category><![CDATA[the mayan 2012]]></category>
		<category><![CDATA[the mayans 2012]]></category>
		<category><![CDATA[the year 2012 predictions]]></category>
		<category><![CDATA[year 2012 mayan calendar]]></category>
		<category><![CDATA[year 2012 predictions]]></category>
		<category><![CDATA[year 2012 prophecy]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=08d487c406d7c4ebc9f6d40aa0ff4c1e</guid>
		<description><![CDATA[Editorial Director Jerry Gipper rolls out the 2012 "watch list" for VITA technology.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5587%2Ffigures%2F2" />Editorial Director Jerry Gipper presents his list of the top 10 VITA critical embedded systems trends for 2012.</h3><span id="more-557"></span><span class='body'><p class="body-text">Some believe that the Mayan calendar forecasts the end of the world in 2012, but this year promises to have much adventure for VITA technologies. Here are <br/>10 trends to watch unfold in 2012:</p>  <p class="body-text"><span id="Ad-ABD-1" style="display: none; float: left;"></span><strong>1.</strong> VPX revenues are projected by industry analysts to match VME in 2012. The numbers are rapidly approaching the crossover. New product announcements featuring VPX are in the majority. Not all systems need the performance of VPX so VME design wins continue, but design wins featuring 3U and 6U VPX products are becoming more common, raising expectations that this is the year. </p>  <p class="body-text"><strong>2.</strong> Military programs will take a hit in 2012. Upgrades will be the safe harbor, but they don&#8217;t offer much opportunity for companies looking to enter the market, as these opportunities usually go to the incumbent supplier. At the same time, defense programs look to reduce manpower costs by using more automation and robotics, especially in unmanned vehicles of all types. 2012 promises to be a tough year but could offer great opportunities for companies positioned well with products and business strategies to address this automation.</p>  <p class="body-text"><strong>3.</strong> Small form factor fever rages on in 2012. Making products smaller while not giving in on capability and performance promises to open up new markets. VITA has four small form factor working groups in play. Which will win is yet to be determined, but we may get a clearer picture by the end of the year. Count 3U VPX in this mix as well.</p>  <p class="body-text"><strong>4.</strong> FPGAs are poised to take over the majority of I/O responsibility on single board computers. They offer a cost/flexibility ratio never before possible, and it only promises to get better. FMC technology makes the use of FPGAs very attractive as board supplies look for ways to create niches for their expertise.</p>  <p class="body-text"><strong>5.</strong> Intel just bought the InfiniBand product lines and certain related assets from QLogic. InfiniBand dominates the storage connectivity markets, but does this acquisition mean a more prominent role for InfiniBand in critical embedded systems? Will we start to see the dot specifications for VPX and other VITA technologies fill in the InifinBand gaps? 10 Gigabit Ethernet is not going to give any ground any time soon.</p>  <p class="body-text"><strong>6.</strong> Optical interconnects have been discussed for decades, but technology breakthroughs combined with eventual approach to copper bandwidth limitations make even more critical the search for optical interconnects that are cost effective and practical. 2012 promises to show some of the first VPX products at least allowing optics to be passed through the backplane using VITA 66 blind mate optical interconnect.</p>  <p class="body-text"><strong>7.</strong> With all the focus on small form factors, will we see proposals for smaller mezzanines for blade boards appear in a working group? The technical community has been discussing options, but none of them seem to ever gain any traction. 2012 could be the year we see some serious cards get played.</p>  <p class="body-text"><strong>8.</strong> PowerPC processors held the dominant spot on VME single board computers for many years. But Intel architecture processors have since taken over the top spot. Can the mistakes made with Power Architecture be corrected in time to regain some of that market share? QorIQ with AltiVec makes a return in 2012. Keep an eye on the progress.</p>  <p class="body-text"><strong>9.</strong> ARM processors are everywhere. With more than 200 licensees, it is impossible to find a processor supplier who does not offer an ARM option. Multicore offerings start to put ARM near the high end of performance. Many I/O boards use some type of ARM processor. Pair these with the low power capability and the multitude of processor options and it becomes only a matter of time before ARM shows up as the primary processor in single board computers. </p>  <p class="body-text"><strong>10.</strong> Reliability is a key part of the definition of &#8220;<span class="italics">critical embedded systems.&#8221; </span>The work done by the Reliability Community has received high marks within the DoD. MIL-HDBK-217 needs updating, and VITA 57 can help. Will the suppliers start to use the guidance of VITA 57 to define the reliability levels of their products? Many in the user community would like to see that happen in 2012.  </p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/03/ten-critical-embedded-system-trends-to-watch-in-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing network traffic flow for multicore x86 processors at 40/100G</title>
		<link>http://www.embedded-computing.com/articles/id/?5525</link>
		<comments>http://www.embedded-computing.com/articles/id/?5525#comments</comments>
		<pubDate>Tue, 07 Feb 2012 15:00:00 +0000</pubDate>
		<dc:creator>Rolf Neugebauer, Netronome Systems, Inc.</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[architecture fpga]]></category>
		<category><![CDATA[arm processor cores]]></category>
		<category><![CDATA[cpu microprocessor]]></category>
		<category><![CDATA[design embedded hardware]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[design of embedded system]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[dsp and fpga]]></category>
		<category><![CDATA[dsp architectures]]></category>
		<category><![CDATA[dsp embedded systems]]></category>
		<category><![CDATA[dsp for fpga]]></category>
		<category><![CDATA[dsp hardware design]]></category>
		<category><![CDATA[dsp in fpga]]></category>
		<category><![CDATA[dsp on fpga]]></category>
		<category><![CDATA[dsp processor design]]></category>
		<category><![CDATA[dsp processors and architectures]]></category>
		<category><![CDATA[dsp with fpga]]></category>
		<category><![CDATA[embedded design projects]]></category>
		<category><![CDATA[embedded dsp system]]></category>
		<category><![CDATA[embedded dsp systems]]></category>
		<category><![CDATA[embedded microcontroller systems]]></category>
		<category><![CDATA[embedded processor design]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system hardware design]]></category>
		<category><![CDATA[embedded system on chip]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems architecture]]></category>
		<category><![CDATA[embedded systems fpga]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fpga and dsp]]></category>
		<category><![CDATA[fpga dsp]]></category>
		<category><![CDATA[fpga for dsp]]></category>
		<category><![CDATA[fpga processor]]></category>
		<category><![CDATA[fpga processors]]></category>
		<category><![CDATA[fpga with dsp]]></category>
		<category><![CDATA[fpgas for dsp]]></category>
		<category><![CDATA[host virtual machine]]></category>
		<category><![CDATA[low power fpga]]></category>
		<category><![CDATA[Microcontrollers, Systems-on-Chips]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[microprocessor in embedded system]]></category>
		<category><![CDATA[netronome]]></category>
		<category><![CDATA[pcie gen2 sata6g]]></category>
		<category><![CDATA[power management in embedded systems]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=b142b7072adf26f4d652e4d64af69e76</guid>
		<description><![CDATA[In the final installment of this two-part series, Nabil G. Damouny of Netronome explores external coprocessors and the support they can offer general-purpose multicore CPUs as line speeds continue to increase.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5525%2Ffigures%2F2" />Part 2 in a 2-part series: Embedded systems migrating to 40G today and 100G in the next few years demand an intelligent in-line preprocessor capable of handling traffic at this high line rate, while communicating with the x86 CPU subsystem over a high-performance, virtualized PCI Express interface. Part 1 in this series examined the challenges of processing network traffic at 100G and some of the commercially available solutions attempting to solve such challenges. Part 2 highlights the need for a coprocessor that is tightly coupled to a multicore x86 CPU and can manage functions such as intelligent L2/L3 switching, flow classification, in-line security processing, virtualization, and load balancing for x86 CPU cores and virtual machines.</h3><span id="more-517"></span><span class='body'><p class="body-text">To keep pace with the explosion of traffic in the enterprise and carrier network, embedded designers have tried a variety of methods to meet the demand for 100G secure communication, including embedding hardware accelerators into multicore processors or using devices such as network processors, Ethernet switches, or Ethernet controllers. These approaches each come with their own drawbacks that limit performance and increase complexity. Furthermore, attempts to use a single-chip heterogeneous multicore processor to bypass performance issues have led to proprietary architectures that are not operating system friendly.</p>  <p class="body-text">A high-performance multicore heterogeneous architecture builds on a single-chip multicore heterogeneous processor, but divides the solution into two processors: a general-purpose multicore x86 CPU focused on application and control plane processing and a separate in-line multicore coprocessor focused on L2-L4 processing and accelerating L4-L7 applications. The key to this architecture is having a tightly coupled interface between the two processors that is in-line, secure, virtualized, and high-performance (see Figure&nbsp;1). A good analogy here is the use of a graphics processor unit alongside a multicore x86 processor in workstations and other graphics-intensive servers.</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=940,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5525%2Ffigures%2F1" title="In a multicore heterogeneous architecture, an external coprocessor integrates all of the hardware acceleration functions to optimize power and performance.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5525%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> In a multicore heterogeneous architecture, an external coprocessor integrates all of the hardware acceleration functions to optimize power and performance.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="heading-1">Efficient processing and memory&nbsp;utilization</p>  <p class="body-text">The coprocessor needs to access packets, forwarding the packet and its associated metadata (packet state) in a timely manner with minimal latencies. This dictates having hierarchical memory architecture of on- and off-chip memories, with packet data effectively managed through the hierarchy. For example, first-level lookup tables can be in on-chip memories, while large volumes of data can be stored in external memory tables.</p>  <p class="body-text">In addition, the use of multiple threads per processing core can bypass the memory wall problem. A core or thread continues to execute until an external memory access is needed, at which point another processing thread takes over. The resulting asynchronous memory architecture decouples external memory accesses from processing, maximizing overall system performance. This allows for bulk memory transactions, where many memory accesses are pooled together into one memory transaction, further increasing the efficiency of the external memory interface. </p>  <p class="heading-1">In-line or look-aside processing with security and virtualization</p>  <p class="body-text">The coprocessor is in-line with ingress and egress traffic and should be able to, on-the-fly, encrypt and decrypt the packets, classify packets into flows, and look up the flow state table to determine the action needed on the flow. The coprocessor also implements I/O virtualization, allowing the x86 cores and their Virtual Machines (VMs) to share the I/O subsystem. In addition, the coprocessor should be able to dynamically load balance the traffic to the x86 cores and VMs based on flows.</p>  <p class="heading-2">Fast interconnect with x86</p>  <p class="body-text">Supporting a heterogeneous processing architecture requires a high-performance interconnect to the x86 processor with I/O virtualization capability. For example, an 8-lane PCI Express Gen 2 interface supports up to 40 Gbaud of traffic to an x86 CPU socket. (Note: Overhead on read and write cycles brings this number down to the low 20s.)</p>  <p class="heading-2">Cut through/intra-flow cut through</p>  <p class="body-text">Ideally, not all flows need to be transmitted to the x86 processor, as the coprocessor is intelligent enough to classify packets into flows. Based on the flow state table, an action can be taken to cut through, drop, or forward to x86. In some cases, the first few packets of a flow are forwarded to the x86 subsystem for inspection. The x86 processor can then instruct the underlying coprocessor to cut through the remainder of the packets in the same flow.</p>  <p class="heading-2">Inter-VM switching</p>  <p class="body-text">The advent of VMs and the need for I/O virtualization have created a new set of requirements that mandates a more intelligent approach for managing I/O. This has prompted the need for an intelligent way to interconnect VMs on different cores to handle the so-called east-west traffic. Such VMs can belong to different tiers of servers in the data center. Having the VM-aware switch on the coprocessor can achieve the VM interconnect.</p>  <p class="heading-2">Passive NIC mode</p>  <p class="body-text">The coprocessor should be able to support a mode where all network I/O traffic is passed to the x86 processor. This mode is required for monitoring and statistics or for applications requiring 100&nbsp;percent of x86 CPU processing.</p>  <p class="heading-1">Implementing the OpenFlow protocol</p>  <p class="body-text">Software-Defined Networking (SDN) allows users to bring the benefits of virtualization &#8211; including shared resources, user customization, and fast adaptation &#8211; to the switched network by defining traffic flows and deciding how these flows are treated in the network. In other words, it allows the system user to remotely control the network hardware with software in a dynamic and programmable fashion.</p>  <p class="body-text">SDN puts the intelligence of the network into a hierarchy of controllers. In this hierarchy, switching paths are centrally calculated based on IT-defined parameters and then downloaded to the distributed switching architecture. A hardware-agnostic architecture that uses standard open interfaces to the hardware can change the way we build networking systems today.</p>  <p class="body-text">The new OpenFlow protocol supports SDN. An OpenFlow controller typically runs on a multicore x86 processor and implements the control plane protocols. It downloads the state information onto multiple flow state tables in the coprocessor, implementing the data-switching plane through a standard OpenFlow API. The coprocessor, being a stateful flow processor, can be optimized to support the OpenFlow architecture.</p>  <p class="heading-1">Best of breeds for the future</p>  <p class="body-text">As line speeds continue to grow, it remains to be seen how application workloads will be divided among x86 general-purpose multicore CPUs and external supporting coprocessors. The flexibility of riding a product roadmap for multicore x86 processors separate from that of coprocessors gives designers the choice to use the best of breeds in trying to meet ever-increasing future challenges. </p>  <p class="author-bio"><span class="italics">Editor&#8217;s note: Read Part 1 in this series online at <a href="http://embedded-computing.com/managing-processors-40100g-part-of-2">http://embedded-computing.com/managing-processors-40100g-part-of-2</a>. </span></p>  <p class="author-bio">Nabil G.&nbsp;Damouny is senior director of strategic marketing at Netronome.</p>  <p class="contact-info"><span class="bold">Netronome 408-496-0022 <a href="mailto:info@netronome.com">info@netronome.com</a> <a href="http://twitter.com/#!/Netronome">@netronome</a> <a href="http://www.netronome.com">www.netronome.com</a></span></p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/02/managing-network-traffic-flow-for-multicore-x86-processors-at-40100g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real-time performance: Build or buy?</title>
		<link>http://embedded-computing.com/real-time-performance-build-buy</link>
		<comments>http://embedded-computing.com/real-time-performance-build-buy#comments</comments>
		<pubDate>Tue, 07 Feb 2012 15:00:00 +0000</pubDate>
		<dc:creator>Warren Webb, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[8051 development board]]></category>
		<category><![CDATA[arm development board]]></category>
		<category><![CDATA[arm development boards]]></category>
		<category><![CDATA[arm microcontroller]]></category>
		<category><![CDATA[arm11 development board]]></category>
		<category><![CDATA[arm9 board]]></category>
		<category><![CDATA[arm9 development board]]></category>
		<category><![CDATA[atmel development board]]></category>
		<category><![CDATA[avr development board]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[embedded application development]]></category>
		<category><![CDATA[embedded design systems]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded development board]]></category>
		<category><![CDATA[embedded development tools]]></category>
		<category><![CDATA[embedded device]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[embedded linux development board]]></category>
		<category><![CDATA[embedded linux devices]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software developer]]></category>
		<category><![CDATA[embedded software development tools]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system application]]></category>
		<category><![CDATA[embedded system applications]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system linux]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[embedded systems architecture]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems projects]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[linux network operating system]]></category>
		<category><![CDATA[linux open source operating system]]></category>
		<category><![CDATA[microcontroller board]]></category>
		<category><![CDATA[microcontroller development board]]></category>
		<category><![CDATA[microcontrollers]]></category>
		<category><![CDATA[microcontrollers embedded systems]]></category>
		<category><![CDATA[open source operating system linux]]></category>
		<category><![CDATA[open source software operating system]]></category>
		<category><![CDATA[OpenSystems Media]]></category>
		<category><![CDATA[operating system embedded]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[operating systems linux]]></category>
		<category><![CDATA[operating systems open source]]></category>
		<category><![CDATA[Real-time OSs]]></category>
		<category><![CDATA[Real-time performance]]></category>
		<category><![CDATA[realtime operating system]]></category>
		<category><![CDATA[realtime operating systems]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[system development tools]]></category>
		<category><![CDATA[vxworks rtos]]></category>
		<category><![CDATA[wind river vxworks]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=4eeea068122c248fac8f704316c81c09</guid>
		<description><![CDATA[Ever-growing demands and challenges could render in-house OS development a thing of the past.]]></description>
			<content:encoded><![CDATA[<div
class="story"><h3 class="abstract"><img
alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5527%2Ffigures%2F3" />As more and more embedded devices evolve from single-function controllers to complex platforms supporting high-speed graphics, user interfaces, and network communications in addition to the primary application, real-time responsiveness is becoming a critical performance requirement. Although developing in-house software offers some advantages, the benefits of reduced complexity and shorter development schedules often justify the purchase of a commercial Real-Time Operating System.</h3><p><span
id="more-468015"></span><span
class='body'><p
class="body-text">The average person interacts with hundreds of embedded processors every day in phones, automobiles, home appliances, toys, cash registers, entertainment electronics, <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#security%20systems">security systems</a>, environmental controls, and personal electronics. The common link among all of these products is their ability to react in <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#real%20time">real time</a> to the user, external events, and the communications channel.</p><p
class="body-text">The software for these embedded devices can be divided into application software and <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#operating%20system">Operating System</a> (OS) software. Application software makes the product unique and contains the data collection, <a
rel="tag" href="http://channels.opensystemsmedia.com/Radar">signal processing</a>, and hardware control routines required to make the product perform to its specification. The OS allows the programmer to break up large application programs into smaller, individually developed processes or tasks.</p><p
class="body-text">At the heart of an OS is the kernel, which schedules programs for execution and manages shared resources. A Real-Time OS (<a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#rtos">RTOS</a>) processes hardware requests or interrupts from timers or external events within a guaranteed maximum time. Programmers interact with the OS&nbsp;through an API and set up the priorities and data dependencies. During execution, the RTOS manages the application software with a flurry of external real-time activity.</p><p
class="heading-1">In-house code</p><p
class="body-text">Even with the advantages of an RTOS, homegrown OSs still occupy a non-trivial percentage of embedded real-time products. Developers have multiple incentives for bypassing a commercial RTOS entirely and writing their own real-time routines. The biggest reason developers cite for not choosing a commercial OS is lack of need. With only one task running, designers think they can easily keep track of the required hardware interaction.</p><p
class="body-text">Special situations sometimes justify in-house software. For example, the design objectives of a portable <a
rel="tag" href="http://channels.opensystemsmedia.com/health%20care">health care</a> device can include low cost, low power, and a one-year battery standby life without extra memory and processing power to support a commercial RTOS. Furthermore, if a new project is an upgrade of a previous project, developers likely will want to use as much legacy code as possible.</p><p
class="body-text">Components that aren&#8217;t invented at the same company might also be one reason why many developers write their own OSs. Installing software from a third party into their showpiece product is like admitting they are somehow not up to the task. In addition, developers might think they&#8217;ll lose the ability to make software adjustments to compensate for hardware changes or to correct bugs. The designer can easily adjust the order of execution or drop to assembly language to solve critical timing problems with in-house developed software. However, with a commercial RTOS, the scheduler handles many of the timing issues, so developers lose the perception of being in total control. And finally, programmers list sticker shock as another reason to write their own operating software. The initial license for a full commercial RTOS and associated tools can be in the $15,000 to $20,000&nbsp;range for a single development seat, plus recurring royalties for every unit shipped.</p><p
class="heading-1">Software shortcuts</p><p
class="body-text">As <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20systems">embedded systems</a> grow in complexity and project schedules shrink, software has displaced hardware as the highest-priced item in most embedded development projects. If design teams can buy an RTOS and eliminate the coding, <a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debug</a>, and documentation of the most complicated portion of the software structure, then the purchase decision should receive careful consideration. Although a commercial RTOS can be expensive, a smaller development team and shorter project time frame might create more than enough savings to justify the purchase.</p><p
class="body-text">An RTOS allows programmers to write independent, reusable modules to reduce software complexity and shorten the development schedule. Programmers can write each software routine independently without getting bogged down with intertask timing problems. Most RTOS vendors provide a full interactive development environment including a source code editor, code manager, linker, downloader, runtime tools, and one or more debuggers. Software vendors also supply software performance analysis tools to help profile and visualize real-time activity in application routines. Programmers can monitor which tasks are running, observe the stream of data flow, and detect when and how often a task is interrupted by a higher-priority item. RTOS vendors agree that high-quality development tools can dramatically shorten debug time.</p><p
class="body-text">Along with the cost savings, RTOS vendors cite multiple technical reasons to justify their products. For example, if an application involves heavy data processing, many RTOSs can be scaled easily to spread tasks across several processors for a significant performance boost. The RTOS provides communication and <a
rel="tag" href="http://channels.opensystemsmedia.com/10%20Gigabit%20Ethernet">synchronization</a> services to make multiprocessing <a
rel="tag" href="http://tech.opensystemsmedia.com/cloud/#transparent">transparent</a>. In addition, an off-the-shelf RTOS working alongside <a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/">multicore</a><span
class="social" style="margin:0 0 0 3px">[<a
href="http://opsy.st/multicore-facebook"><img
style="margin:0 2px -2px 2px;vertical-align:baseline" src="http://i.opensystemsmedia.com/i/a-facebook-12x12.gif" /></a>]</span> processors simplifies legacy code integration within new designs or products updates.</p><p
class="body-text">A commercial RTOS is modular, so users can select only those portions or features of the OS that they need. Specifying a subset of the full-blown commercial RTOS can reduce acquisition costs and the required memory footprint. With the current connectivity trend, even the simplest embedded products might need to connect to and send data over the Internet. A graphical user interface could also become standard in small embedded systems, even if just for maintenance. These features are included or optionally available in most commercial RTOSs, but can be very expensive or impossible to&nbsp;add to a proprietary OS. Vendors also promote product on-demand technical support as a major benefit of a commercial RTOS.</p><p
class="heading-1">Off-the-shelf platforms</p><p
class="body-text">Commercial RTOSs are constantly upgraded to add new features and keep up with changing technology. For example, the popular <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks%20os">VxWorks OS</a> from Wind River was recently revised to deliver 64-bit computing support along with improved multicore features. <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks">VxWorks</a> includes a shell, <a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debugging</a> functions, memory management, performance monitoring, and support for multiprocessing. Real-time features include a kernel for preemptive <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#multitasking">multitasking</a>, interrupt response, interprocess communication, and a file system (see block diagram in Figure 1). Software development is enabled by the Wind&nbsp;River Workbench development tools suite and Intel Integrated Performance Primitives for VxWorks.</p><p
class="figures"> <figure></p><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=977,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5527%2Ffigures%2F1" title="The VxWorks RTOS from Wind River fits many embedded applications and features 32-bit or 64-bit processing, multicore support, and numerous connectivity options."><br
/> <img
width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5527%2Ffigures%2F1" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <figcaption><b>Figure 1:</b> The VxWorks RTOS from Wind River fits many embedded applications and features 32-bit or 64-bit processing, multicore support, and numerous connectivity options.</figcaption><div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div></td></tr></table><p> </figure></p><p
class="body-text">The RTOS supports various multicore configurations in Symmetrical Multi-Processing (SMP) and Asymmetrical Multi-Processing (AMP) modes or as a guest OS on top of Wind River <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#hypervisor">Hypervisor</a>. VxWorks also has a configurable and tunable small memory footprint, allowing the user to control how much of the OS to employ for each project.</p><p
class="body-text">In addition to offering a multitude of commercial RTOS products, the embedded systems community maintains an open-source OS based on a real-time kernel that is free for use in commercial applications. The FreeRTOS&nbsp;Project is under continuous active development and is distributed under the GNU General Public License with an optional exception that allows users to keep their proprietary software confidential. Free source code and the lack of recurring royalties are popular features for small, low-budget embedded projects. FreeRTOS has been ported to multiple <a
rel="tag" href="http://channels.opensystemsmedia.com/microcontroller">microcontroller</a> platforms and has minimal ROM, RAM, and processing overhead, resulting in a typical kernel binary image in the 4 KB to 9 KB range. Although FreeRTOS source code for the kernel is contained in only three C&nbsp;code files, the zip file download includes numerous demonstration applications to help new users get started.</p><p
class="body-text">The biggest complaint among potential <a
rel="tag" href="http://tech.opensystemsmedia.com/cloud/#open-source%20software">open-source software</a> users is the lack of a central resource to provide support similar to that offered by a commercial software vendor; however, the FreeRTOS website has an active free support forum where developers can find answers to their technical questions. In support of the open-source platform, Microchip Technology offers the FreeRTOS Microchip PIC32 Education Kit (see Figure 2). This $95 kit includes a development board that enables users to develop USB embedded host, device, and On-The-Go applications on the PIC32 microcontroller family.</p><p
class="figures"> <figure></p><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=738,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5527%2Ffigures%2F2" title="The Microchip PIC32 Education Kit includes the hardware, software, and tutorials needed to get started using the open-source FreeRTOS platform."><br
/> <img
width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5527%2Ffigures%2F2" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <figcaption><b>Figure 2:</b> The Microchip PIC32 Education Kit includes the hardware, software, and tutorials needed to get started using the open-source FreeRTOS platform.</figcaption><div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p> </figure></p><p
class="heading-1">Real-time future</p><p
class="body-text">Although programmers might get excited when considering the challenge of developing an in-house OS, the &#8220;roll&nbsp;your own&#8221; days might be fading away. Designers can look forward to real-time software as the norm in future embedded products.</p><p
class="body-text">Customer demand for faster response times, complex functionality, and instant data access continues to increase the challenge of <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20design">embedded design</a>. Advancing technology also dictates that embedded products be capable of periodic software updates as requirements change, along with the possible transfer to the next-generation hardware platform.</p><p
class="body-text">Developers should take the time to analyze their system requirements, development schedule, software support, expandability, communications, scalability, and future growth before embarking on an in-house software development project. An off-the-shelf commercial RTOS or even an open-source operating system could be in your future.</p></p></div><p></span></div></p><div
class="keywords"><h2>Topics covered in this article</h2><ul><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#security%20systems">security systems</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#real%20time">real time</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Radar">signal processing</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#operating%20system">operating system</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#rtos">rtos</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/health%20care">health care</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20systems">embedded systems</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debug</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/10%20Gigabit%20Ethernet">synchronization</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/cloud/#transparent">transparent</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/">multicore</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#multitasking">multitasking</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks%20os">vxworks os</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debugging</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks">vxworks</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#hypervisor">hypervisor</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/microcontroller">microcontroller</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/cloud/#open-source%20software">open-source software</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20design">embedded design</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://embedded-computing.com/real-time-performance-build-buy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded Application Frameworks: Simplifying the development of M2M devices</title>
		<link>http://www.embedded-computing.com/articles/id/?5521</link>
		<comments>http://www.embedded-computing.com/articles/id/?5521#comments</comments>
		<pubDate>Thu, 19 Jan 2012 15:00:00 +0000</pubDate>
		<dc:creator>Pierre Teyssier, Sierra Wireless</dc:creator>
				<category><![CDATA[Application Feature]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[3g modem]]></category>
		<category><![CDATA[4g wireless technology]]></category>
		<category><![CDATA[android application developer]]></category>
		<category><![CDATA[android applications development]]></category>
		<category><![CDATA[android mobile application development]]></category>
		<category><![CDATA[application development for mobile]]></category>
		<category><![CDATA[application development frameworks]]></category>
		<category><![CDATA[application development software]]></category>
		<category><![CDATA[applications developers]]></category>
		<category><![CDATA[building your own computer]]></category>
		<category><![CDATA[business applications development]]></category>
		<category><![CDATA[client server application development]]></category>
		<category><![CDATA[database application development]]></category>
		<category><![CDATA[Embedded Application Frameworks]]></category>
		<category><![CDATA[embedded computer design]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[embedded linux board]]></category>
		<category><![CDATA[embedded linux computer]]></category>
		<category><![CDATA[embedded linux hardware]]></category>
		<category><![CDATA[embedded operating systems]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software architecture]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software developers]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[gsm modem]]></category>
		<category><![CDATA[gsm modem module]]></category>
		<category><![CDATA[gsm module]]></category>
		<category><![CDATA[it application development]]></category>
		<category><![CDATA[j2ee application development]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[m2m]]></category>
		<category><![CDATA[mobile app developer]]></category>
		<category><![CDATA[mobile app developers]]></category>
		<category><![CDATA[mobile app development]]></category>
		<category><![CDATA[mobile application developer]]></category>
		<category><![CDATA[mobile application development company]]></category>
		<category><![CDATA[mobile application development platform]]></category>
		<category><![CDATA[mobile application development process]]></category>
		<category><![CDATA[mobile application development software]]></category>
		<category><![CDATA[mobile application development tool]]></category>
		<category><![CDATA[mobile application software development]]></category>
		<category><![CDATA[mobile applications developer]]></category>
		<category><![CDATA[mobile applications developers]]></category>
		<category><![CDATA[mobile apps development]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[mobile phone application developers]]></category>
		<category><![CDATA[mobile software application development]]></category>
		<category><![CDATA[mobile software developer]]></category>
		<category><![CDATA[Sierra Wireless]]></category>
		<category><![CDATA[software applications development]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[web application development frameworks]]></category>
		<category><![CDATA[web application development tool]]></category>
		<category><![CDATA[web based application development]]></category>
		<category><![CDATA[windows application development]]></category>
		<category><![CDATA[windows mobile application development]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=140c18fea637c047ef7c0a0272c0e9d2</guid>
		<description><![CDATA[A helping hand from Embedded Application Frameworks eases design pressures for M2M developers.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5521%2Ffigures%2F3" />With advances in wireless technologies, defining a strategy for building wireless M2M-enabled devices is not the dauntingly complex task it was once thought to be. Instead of devoting precious R&D resources to the integration of fragmented, ad hoc technologies, today&#8217;s developers can take advantage of increasingly sophisticated Embedded Application Frameworks (Linux, Android, and others), some of which are highly optimized for M2M application development.</h3><span id="more-512"></span><span class='body'><p class=Bodytext>Machine-to-Machine (M2M) communication, or the ability to connect and manage remote devices over the air, offers enormous potential. With the ability to centrally control remote industrial equipment, track vehicle fleets, manage electric vehicle charging stations, expand the capabilities of consumer devices, and much more, M2M has profound implications for virtually every industry.<o:p></o:p></p>  <p class=bodytext>Given the novelty of M2M technology, however, developing connected devices has traditionally been an expensive and time-consuming process, largely due to the fact that system designers had to build the entire M2M architecture from scratch. Today, designers have a powerful new option in their M2M toolkit: Embedded Application Frameworks (EAFs). By deploying connected services on mature, prepackaged Real-Time Operating Systems (RTOSs) and libraries embedded directly into the communications module, M2M designers can substantially reduce the time and costs involved in developing new M2M hardware and focus their efforts on creating innovative connected applications.<o:p></o:p></p>  <h1>Challenges of developing M2M systems<o:p></o:p></h1>  <p class=bodytext>At its core, M2M technology involves augmenting a device or piece of equipment with intelligent services and connecting that device to a back-end infrastructure that can monitor or control it. To accomplish this, an M2M device employs two basic elements: a mechanism to communicate with the back-end infrastructure (a wireless modem or module) and software to run the services.<o:p></o:p></p>  <p class=bodytext>Mature wireless communication modules have been available for many years, and designers of connected devices have often used off-the-shelf components to provide connectivity. Most of them relied on a traditional multichip architecture. In practice, this required assembling the hardware and software &#8211; usually based on a full-blown OS along with its associated software libraries, running on a stand-alone microprocessor supported by external memory &#8211; before designers could even begin addressing the services running on top of the device.<o:p></o:p></p>  <p class=bodytext>Early developers of connected devices had few choices available because there simply wasn&#8217;t a mature market of prepackaged software available for supporting M2M connectivity. But this reliance on bespoke device architectures introduced a number of inefficiencies that today&#8217;s developers can no longer afford.<o:p></o:p></p>  <p class=bodytext>Developing systems in this manner takes a long time. Assembling and integrating the entire architecture from scratch typically requires a minimum of one year in development before the system can be brought to market. While this might have been an acceptable timeframe in the early days of M2M, system providers today cannot afford to wait that long. They need to stake their position in the marketplace as quickly as possible.<o:p></o:p></p>  <p class=bodytext>Building the entire architecture from scratch is also inherently expensive. Apart from the operational costs associated with integrating and testing all components of the architecture in-house, relying on this model also typically involves using a full-blown RTOS and having to equip the device with full-scale processing power to run it. Some complex M2M applications require this much horsepower, but for the vast majority (which often simply monitor a device and send out data to a back-end server), a full-blown RTOS is overkill. Why invest in a full-scale OS and microprocessor, when what the device is actually doing requires just a fraction of that computational capability?<o:p></o:p></p>  <p class=bodytext>The biggest drawback of this approach, however, is that it requires connected device developers &#8211; often at a start-up company &#8211; to devote significant time and resources to things that have nothing to do with their core areas of expertise. For example, if a developer is building an M2M system for health care, the value of that system lies in the intelligence created for a specific health care application. A developer of industrial systems possesses expertise in developing services that effectively monitor and control that equipment using the most appropriate protocols. Whatever the industry or expertise, a connected device developer&#8217;s core value proposition is most likely not assembling multichip computing architectures.<o:p></o:p></p>  <h1>Embedding intelligence in the communication module<o:p></o:p></h1>  <p class=bodytext>EAFs address these issues by providing a means to embed M2M services directly into the communication module, alongside blocks of prepackaged software, connectivity capabilities, and processing resources (see Figure 1). In this way, an EAF makes it easier, faster, and less expensive to deploy an M2M system. It allows developers to use mature, proven, widely deployed technology instead of having to reinvent it. EAFs improve:<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Time to market: </span>By using prepackaged components and embedding software code directly in the communication module, M2M system providers can substantially reduce development timelines. Instead of taking a year to develop all aspects of the system, many M2M applications can be developed and brought the market in less than six months.<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Development costs:</span> Deploying software in an EAF on the communication module eliminates the need to buy and assemble a separate RTOS, microprocessor, and external memory for a device. Because an EAF provides a lightweight OS specifically optimized to run common M2M services, it can share processing resources and memory with the communication module. This also reduces operational expenses by eliminating the need to staff engineers with expertise in OSs and communications, and instead focus engineering resources on the application and its unique services.<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Efficiency:</span> Relying on a multichip architecture with a separate communication module and microprocessor limits the RTOS to a relatively simple command interface with the modem. When the application is embedded on an EAF in the communications module, however, it can directly access all the different layers of the communications stack. That means the developer has more control over how the application monitors and accesses the communications stack at different levels using different APIs. It also delivers capabilities beyond those available to a stand-alone RTOS.<o:p></o:p></p>  <p class=figures> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=582,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5521%2Ffigures%2F1" title="An Embedded Application Framework embeds M2M services directly into the communications module, along with blocks of prepackaged software, connectivity capabilities, and processing resources.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5521%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> An Embedded Application Framework embeds M2M services directly into the communications module, along with blocks of prepackaged software, connectivity capabilities, and processing resources.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.5x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   <o:p></o:p></p>  <p class=bodytext>Most importantly, EAFs address the &#8220;core-versus-context&#8221; question, allowing connected device manufacturers to focus on the unique value they bring to the system.<o:p></o:p></p>  <h1>Key elements of an EAF<o:p></o:p></h1>  <p class=bodytext>So what should connected device manufacturers look for when considering the EAF model? Any EAF should include the following core components:<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Lightweight OS optimized for M2M:</span> While a few M2M applications require a more powerful RTOS, most do not. The keys for the EAF OS are a small footprint and ruggedization for M2M deployments. The OS should be natively designed to provide APIs that control voice call, data call, SMS, and TCP/IP connectivity. It should be optimized to take full advantage of its direct access to the communications stack. To provide full support for a connected application, the OS should also provide a core feature set that includes:<o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Real time, including guaranteed response time to external or internal interruptions, regardless of its state. <o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Flexibility to prioritize tasks.<o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Multitask capabilities to define and synchronize as many tasks as services require.<o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Flexibility in processing speeds and power options to optimize battery life.<o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Memory, firmware, and software protection features.<o:p></o:p></p>  <p class=bullets style='margin-left:.25in;text-indent:-5.75pt;mso-list:l1 level1 lfo11'><![if !supportLists]><span style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family: Arial'><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span></span><![endif]>Ability to use APIs to access the cellular modem&#8217;s audio and data path.<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Software libraries:</span> To simplify the development process and speed time to market, the EAF should include a variety of software libraries and APIs that provide a variety of functions the device or services might need. This includes services such as location/GPS connectivity, comprehensive Internet connectivity protocols, and wireless and Internet security services. The EAF should also support third-party libraries that take advantage of software developed for the specific needs of the target market. Ideally, the EAF should be backed not just by the communication module vendor, but also by a community of partners and developers working to expand its capabilities.<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Development tools:</span> The EAF should also include a package of development tools that make it easy to code, debug, and monitor M2M applications, and these tools should be open source and free to use. Ultimately, the EAF should provide everything needed to develop and embed the M2M application into the module.<o:p></o:p></p>  <p class=bullets><![if !supportLists]><span style='font-family:Symbol; mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>&#183;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span class=bold>Cloud connectivity:</span> Finally, the EAF should provide tools to streamline cloud-based management of connected devices, including a fully realized system to handle device monitoring and software/firmware upgrades over the air. The system should allow developers to monitor the health of the devices and identify potential problems. It should also include proven tools to remotely upgrade the OS stack, as well as the M2M application itself using a patch mechanism.<o:p></o:p></p>  <h1>Taking advantage of prepackaged M2M components<o:p></o:p></h1>  <p class=bodytext>The EAF discussion raises an age-old question for businesses: Should I make it or buy it? For most companies and most M2M systems, buying makes a good deal of sense. After all, if you were starting a car company, would you make your own tires and windshield wipers? Your own stereos and navigation systems? Clearly, there are some elements of the product developers will want to build themselves, as that&#8217;s where they can add the unique value that differentiates their system. But for most of the M2M architecture, the market now offers mature prepackaged components that are both proven and cost-effective. <o:p></o:p></p>  <p class=bodytext>Some companies have concerns about ceding control over the system when using prepackaged M2M components. However, the reality is that lack of control should not be an issue with any modern EAF. As long as the EAF supports open standards, developers should be able to write code in a common programming language such as C/C++, which means they retain the ability to port that code to any other platform used in the future.<o:p></o:p></p>  <p class=bodytext>Of course, there will always be exceptions to this rule of thumb. For some companies and projects, it makes sense to build everything in-house, as the product&#8217;s value lies in reinventing the entire system. There are also M2M systems that are simply not suitable to run on an EAF&nbsp;&#8211; more complex, heavier applications that require the horsepower of a more powerful processor and a full OS.<o:p></o:p></p>  <p class=bodytext>Even this distinction might not be relevant for long. Today&#8217;s EAFs rely on previous-generation processors that have been on the market for several years. As EAFs continue to evolve and take advantage of higher-powered processors and multicore architectures, even companies developing very complex M2M applications will likely be able to embed them into the communications module EAF and benefit from the same advantages.<o:p></o:p></p>  <p class=bodytext>As EAFs and the M2M market continue to evolve, there will be fewer and fewer reasons for connected device manufacturers to invest in building basic M2M capabilities, much less entire device architectures. Ultimately, this will make system design much easier for M2M developers. More importantly, as designers focus more on delivering unique value instead of on M2M hardware, we can expect to see M2M innovations that at present can only be imagined.<o:p></o:p></p>  <p class=authorbio>Pierre Teyssier is senior VP of engineering for the M2M Embedded Solutions Business Unit at Sierra Wireless. <o:p></o:p></p>  <p class=contactinfo>Sierra Wireless<br> <span style='font-weight:normal'><a href="mailto:PTeyssier@sierrawireless.com"><b style='mso-bidi-font-weight:normal'>PTeyssier@sierrawireless.com</b></a></span><br> Twitter: <a href="http://twitter.com/#!/sierrawireless">@SierraWireless</a> <br> <span style='font-weight:normal'><a href="http://www.sierrawireless.com"><b style='mso-bidi-font-weight:normal'>www.sierrawireless.com</b></a></span> <o:p></o:p></p></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/01/embedded-application-frameworks-simplifying-the-development-of-m2m-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing network traffic flow for multicore x86 processors at 40/100G, Part 1 of 2</title>
		<link>http://www.embedded-computing.com/articles/id/?5519</link>
		<comments>http://www.embedded-computing.com/articles/id/?5519#comments</comments>
		<pubDate>Thu, 12 Jan 2012 15:00:00 +0000</pubDate>
		<dc:creator>Rolf Neugebauer, Netronome Systems, Inc.</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[10g ethernet nic]]></category>
		<category><![CDATA[10g ethernet switches]]></category>
		<category><![CDATA[10gb ethernet switches]]></category>
		<category><![CDATA[10gbe copper]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[computer memory chips]]></category>
		<category><![CDATA[cx4 10gb]]></category>
		<category><![CDATA[cx4 copper]]></category>
		<category><![CDATA[cx4 ethernet]]></category>
		<category><![CDATA[ddr memory chips]]></category>
		<category><![CDATA[design embedded hardware]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[dimm memory chips]]></category>
		<category><![CDATA[dsp embedded systems]]></category>
		<category><![CDATA[dsp hardware design]]></category>
		<category><![CDATA[embedded dsp system]]></category>
		<category><![CDATA[embedded dsp systems]]></category>
		<category><![CDATA[embedded microcontroller systems]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded systems fpga]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[fpga implementation]]></category>
		<category><![CDATA[header udp]]></category>
		<category><![CDATA[ip mpls vpn]]></category>
		<category><![CDATA[ip traffic engineering]]></category>
		<category><![CDATA[ipv4 header size]]></category>
		<category><![CDATA[label mpls]]></category>
		<category><![CDATA[latency and bandwidth]]></category>
		<category><![CDATA[layer 2 mpls]]></category>
		<category><![CDATA[layer 2 packet]]></category>
		<category><![CDATA[layer 3 mpls]]></category>
		<category><![CDATA[massively parallel processors]]></category>
		<category><![CDATA[measuring network performance]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[mobile adhoc networks]]></category>
		<category><![CDATA[mpls ip network]]></category>
		<category><![CDATA[mpls layer 2]]></category>
		<category><![CDATA[mpls layer 3]]></category>
		<category><![CDATA[mpls network security]]></category>
		<category><![CDATA[mpls switching]]></category>
		<category><![CDATA[mpls vpls]]></category>
		<category><![CDATA[mpls vpn label]]></category>
		<category><![CDATA[mpls vpn network]]></category>
		<category><![CDATA[mtu frame size]]></category>
		<category><![CDATA[netronome]]></category>
		<category><![CDATA[network latency simulation]]></category>
		<category><![CDATA[network latency simulator]]></category>
		<category><![CDATA[network processors]]></category>
		<category><![CDATA[packet datagram]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[simulating network latency]]></category>
		<category><![CDATA[statefull packet inspection]]></category>
		<category><![CDATA[vliw compiler]]></category>
		<category><![CDATA[vpls mpls]]></category>
		<category><![CDATA[vpn ip mpls]]></category>
		<category><![CDATA[vpn networks]]></category>
		<category><![CDATA[wan latency simulator]]></category>
		<category><![CDATA[what are routers used for]]></category>
		<category><![CDATA[what is a mpls network]]></category>
		<category><![CDATA[what is an mpls network]]></category>
		<category><![CDATA[what is mpls network]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=dab4dab84dcf6ad46ac817c86dd35999</guid>
		<description><![CDATA[Part one of this two part series takes an introspective look at the processors that will be used to facilitate the migration to 40G, 100G, and beyond.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5519%2Ffigures%2F3" />Embedded systems migrating to 40G today and 100G in the next few years demand an intelligent in-line preprocessor capable of handling traffic at this high line rate, while communicating with the x86 CPU subsystem over a high-performance, virtualized PCI Express interface. Part 1 in this series examines the challenges of processing network traffic at 100G and some of the commercially available solutions attempting to solve such challenges. Part 2 will highlight the need for a coprocessor that is tightly coupled to a multicore x86 CPU and can manage functions such as intelligent L2/L3 switching, flow classification, in-line security processing, virtualization, and load balancing for x86 CPU cores and virtual machines.</h3><span id="more-508"></span><span class='body'><p class=Bodytext>Traffic in the enterprise and carrier network has exploded in recent years, driven by consumer broadband, corporate traffic, and newer IP-based services such as mobile connectivity, remote cloud services, IP video, and IPTV.</p>  <p class=bodytext>In addition, the advent of virtualization and the need for higher-performance (up to 100G) secure communication have put tremendous pressure on communication system designs, including the I/O subsystem. These demands, coupled with the success multicore x86 CPUs have had in embedded applications and the data center, have created the need for a coprocessor that can handle packet processing at tens of millions of stateful flows with a glueless, high-performance, virtualized interface to the x86 CPU subsystem.</p>  <h1>The pressure of packet processing</h1>  <p class=bodytext>Today, service providers offering cloud-based services and enterprise data centers are enabling access to valuable resources anytime, anywhere over wireline and wireless networks. The resulting increase in traffic is putting aggregation switches/routers and intermediate network nodes under constant pressure to meet ever-higher bandwidth demands. These processing elements do not simply switch or route traffic; they must also perform functions such as building a firewall with Deep Packet Inspection (DPI) capability and offering virtualization support for multi-tenant cloud environments.</p>  <p class=bodytext>The underlying Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and Real-time Transport Protocol (RTP) traffic comprises many packets belonging to a network connection. An intermediate node such as a switch, router, or gateway at the network edge must process millions of network connections simultaneously. </p>  <p class=bodytext>Trying to process each packet in the connection individually inhibits the network element from being able to keep up with ever-increasing line rates. This is further complicated by the need to perform DPI for at least a portion of the traffic. Moreover, an intermediate node located deep in the network must process hundreds of millions of packets.</p>  <p class=bodytext>Each packet has no correlation with any other packet; that is, they are not related in space or time. Such asynchronous traffic is better served by grouping packets into flows. A flow is a collection of packets belonging to the same network session, usually between a source-destination pair. Incoming packets must be classified into flows. The processor then deals with all packets belonging to the same flow in the same way based on rules in a flow state table.</p>  <h1>Stateful flow processing</h1>  <p class=bodytext>All network elements require states for millions of flows, especially when it comes to implementing security processing such as firewalls, intrusion prevention or detection systems, and application-level load balancers. The resulting platform architecture must support flow state management by monitoring packets within a flow, updating a TCP connection, creating and timing out UDP connections, and tracking Virtual Private Network (VPN) connections. State handling is also required to support TCP proxy and TCP splicing.</p>  <p class=bodytext>System software should thus maintain flow state tables supporting millions of flows. Hardware must support software by performing a complex hash and lookup in a flow hash table. Software is responsible for analyzing the flow hash result and managing new flows, updating the hash table and maintaining the flows&#8217; state.</p>  <h1>System performance requirements at 100G</h1>  <p class=bodytext>To meet the stringent system requirements at 100G, both processing and memory architectures must meet the time budget offered by one packet time at the worst case of 64-byte packets, which is as low as 5 ns.</p>  <h2>Processing instruction and memory budgets</h2>  <p class=bodytext>Given that most networks continue to use Ethernet frames or packets as the underlying transport, it is important to understand the composition of these frames and how they affect network performance.</p>  <h2>The Ethernet frame </h2>  <p class=bodytext>A typical Ethernet frame starts with an 8-byte preamble, followed by 12 bytes of addressing information for destination and source addresses, a 2-byte type/length field indicating the type of date used, and the length of the payload. The payload data can be as low as 46 bytes and as high as 1,500 bytes. A 32-bit (4-byte) cyclic redundancy check is computed and appended at the end of the frame (Figure 1).</p>  <p class=figures> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5519%2Ffigures%2F1" title="In an Ethernet frame format, a minimum packet size of 64 bytes is actually 84 bytes after adding the overhead shown.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5519%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> In an Ethernet frame format, a minimum packet size of 64 bytes is actually 84 bytes after adding the overhead shown.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <h2>Performance calculations at 100 GbE</h2>  <p class=bodytext>System throughput calculation is usually expressed in a packets-per-second (pps) figure. The maximum number is calculated when all Ethernet frames are 64 bytes in length, or the minimum size frame. For 10 GbE, this number is 14,881 million pps, or commonly known as 15 Mpps. For 100 GbE, this number becomes roughly 150 Mpps.</p>  <p class=bodytext>Smaller packets present a challenge in meeting the short time budget, while large packets present a challenge in meeting the highest line rate. The per-packet time budget required to process a 64-byte packet is as little as 6 ns. With a processor running at 1 GHz, the instruction cycle time is 1 ns. Hence, a 64-byte packet translates into a 6-cycle budget at 150 Mpps. One way to get around this constraint is to use parallel processing with multiple cores and threads. For example, a 100 cores/threads processor will increase this time budget to 600 cycles &#8211; a far more manageable window.</p>  <h2>Memory considerations at 100G</h2>  <p class=bodytext>The use of specialized memories is not recommended in networking devices. At present, DDR3 memories are the preferred external memories. DDR memories operate well in longer bursts; however, transaction rates for clocks higher than 1,666 MHz reach maximum rate for 64-bit wide interfaces. Exchanging a 64-bit channel for two 32-bit memory channels can deliver higher transaction rates at clock frequencies of 2,133 MHz and higher.</p>  <h1>Current approaches to fulfill 100G requirements</h1>  <h2>Multicore processors</h2>  <p class=bodytext>In the early 2000s, many new and established chip vendors started offering multicore CPU products based on standard general-purpose processors, creating Symmetric Multi-Processing (SMP) Linux structures. In leveraging the relatively simple programming model for SMP Operating Systems (OSs), networking vendors were able to introduce products to market in less time. However, this approach was limited to sub-10G levels of performance.</p>  <p class=bodytext>Performance in these processors is limited primarily because traditional general-purpose CPUs have relied on caches to work around memory latency issues. Cache misses force the CPU cores to starve for memory accesses, where main memory latency is way too slow compared to cache memory. This so-called &#8220;memory wall effect&#8221; implies that the SMP multicore model for processors does not scale to the hundreds of processor cores required to flexibly address 100 Gbps solutions. Attempts to minimize cache misses through branch prediction and speculative execution techniques fall short of solving the relatively low-cache hit-rate problem.</p>  <p class=bodytext>In an attempt to circumvent the performance bottleneck, vendors began embedding hardware accelerators into multicore processors to handle common performance-intensive functions such as security and DPI (see Figure 2). The resulting single-chip heterogeneous multicore processor has given way to proprietary architectures that are not OS friendly, and has defeated the original intent in having a simple, easy-to-program multicore processor.</p>  <p class=figures> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=587,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5519%2Ffigures%2F2" title="Multicore general-purpose processors need the assistance of hardware acceleration function to process millions of flows at 100G.">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5519%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 2:</b> Multicore general-purpose processors need the assistance of hardware acceleration function to process millions of flows at 100G.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.8x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <h2>Network processors </h2>  <p class=bodytext>Network processors are a category of processors focused on optimizing L2-L4 packet performance. In general, they contain smaller cores that scale reasonably well and can deliver 100 Gbps of performance. Memory performance is addressed through pipeline architectures, and in some cases, Very Long Instruction Word (VLIW) architectures.</p>  <p class=bodytext>Flexibility and intelligent processing are hampered in network processors due to complex programming and fixed internal structures focused at packet forwarding. Furthermore, performance in pipelined network processors suffers when traffic consists of several tunnels and/or when deeper tunnels are required.</p>  <h2>Ethernet switches</h2>  <p class=bodytext>This category of chips typically includes small pipelines with internal lookup engines and does not support external memory. Usage was common in enterprise Ethernet wiring closet switches. As the usage models grew in complexity with top-of-rack switches, the flexibility requirements also became more pronounced. Larger lookup tables and greater performance levels are now required from Ethernet switches, as well as several deep tunnels needed to support the many layers of virtualization in the data center.</p>  <p class=bodytext>Although some Ethernet switching chips have access to external ternary content-addressable memory for fast table lookups, a typical Ethernet switch can&#8217;t access external DDR memory, making it difficult to cater to networking applications that require support for millions of flows.</p>  <h2>Ethernet controllers</h2>  <p class=bodytext>This category of products is used in server and client environments to connect multiple Ethernet interfaces to the host x86 CPU through a PCI Express interface. These devices can&#8217;t be programmed to perform complex networking tasks such as switching or in-line security. They have no access to external memory and hence can&#8217;t support millions of flows.</p>  <p class=bodytext>Now that the challenges of processing network traffic at 100G have been identified, it is important to discuss what is needed to address these challenges. Part 2 of this series, which will be featured in the February issue of <span class=italics>Embedded Computing Design</span>, will highlight the need for a coprocessor that can meet the challenges that arise with 100G network traffic. Additionally, the second article will discuss how the new coprocessor manages functions such as intelligent L2/L3 switching, flow classification, in-line security processing, virtualization, and load balancing for x86 CPU cores and virtual machines. </p>  <p class=authorbio>Nabil G. Damouny is senior director of strategic marketing at Netronome.</p>  <p class=contactinfo>Netronome<br> 408-496-0022<br> <span style='font-weight:normal'><a href="mailto:Emailinfo@netronome.com"><b style='mso-bidi-font-weight:normal'>info@netronome.com</b></a></span><br> Twitter: <a href="http://twitter.com/#!/Netronome">@netronome</a><br> <a href="http://www.netronome.com">www.netronome.com</a> </p></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/01/managing-network-traffic-flow-for-multicore-x86-processors-at-40100g-part-1-of-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evolution of a small form factor</title>
		<link>http://www.vmecritical.com/articles/id/?5509</link>
		<comments>http://www.vmecritical.com/articles/id/?5509#comments</comments>
		<pubDate>Fri, 06 Jan 2012 15:00:00 +0000</pubDate>
		<dc:creator>Jerry Gipper, Editorial Director, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Technology Feature]]></category>
		<category><![CDATA[1.8 ssd hard drive]]></category>
		<category><![CDATA[128gb mlc ssd]]></category>
		<category><![CDATA[128gb ssd]]></category>
		<category><![CDATA[128gb ssd 2.5]]></category>
		<category><![CDATA[128gb ssd hard drive]]></category>
		<category><![CDATA[16gb ssd sata]]></category>
		<category><![CDATA[2.5 sata ssd]]></category>
		<category><![CDATA[2.5 ssd ide]]></category>
		<category><![CDATA[2.5 ssd sata]]></category>
		<category><![CDATA[256gb sata ssd]]></category>
		<category><![CDATA[256gb ssd]]></category>
		<category><![CDATA[256gb ssd 2.5]]></category>
		<category><![CDATA[256gb ssd hard drive]]></category>
		<category><![CDATA[32gb ssd sata]]></category>
		<category><![CDATA[38999 connector]]></category>
		<category><![CDATA[38999 connectors]]></category>
		<category><![CDATA[512gb ssd]]></category>
		<category><![CDATA[64gb ide ssd]]></category>
		<category><![CDATA[64gb ssd]]></category>
		<category><![CDATA[cheap prototype pcb]]></category>
		<category><![CDATA[circuit board connector]]></category>
		<category><![CDATA[circuit board connectors]]></category>
		<category><![CDATA[ide 2.5 ssd]]></category>
		<category><![CDATA[ide ssd 64gb]]></category>
		<category><![CDATA[ide ssd disk]]></category>
		<category><![CDATA[ide ssd hard drive]]></category>
		<category><![CDATA[mil-c-38999 connectors]]></category>
		<category><![CDATA[OpenSystems Media]]></category>
		<category><![CDATA[pcb circuit board]]></category>
		<category><![CDATA[pcb circuit boards]]></category>
		<category><![CDATA[pcb design]]></category>
		<category><![CDATA[pcb fabrication]]></category>
		<category><![CDATA[pcb prototype]]></category>
		<category><![CDATA[pcb prototype boards]]></category>
		<category><![CDATA[pcie gen2 sata6g]]></category>
		<category><![CDATA[printed board circuit]]></category>
		<category><![CDATA[printed circuit board prototyping]]></category>
		<category><![CDATA[printed circuit layout]]></category>
		<category><![CDATA[prototype circuit board]]></category>
		<category><![CDATA[prototype pcb board]]></category>
		<category><![CDATA[sata 2.5 ssd]]></category>
		<category><![CDATA[sata ssd 2.5]]></category>
		<category><![CDATA[ssd 128gb]]></category>
		<category><![CDATA[ssd 2.5 hard drive]]></category>
		<category><![CDATA[ssd 2.5 inch]]></category>
		<category><![CDATA[ssd 256gb]]></category>
		<category><![CDATA[ssd 512gb]]></category>
		<category><![CDATA[ssd 64gb]]></category>
		<category><![CDATA[ssd 64gb price]]></category>
		<category><![CDATA[ssd disk drive]]></category>
		<category><![CDATA[ssd disk drives]]></category>
		<category><![CDATA[ssd disk ide]]></category>
		<category><![CDATA[ssd flash disk]]></category>
		<category><![CDATA[ssd ide 2.5]]></category>
		<category><![CDATA[ssd ide 32gb]]></category>
		<category><![CDATA[ssd ide 64gb]]></category>
		<category><![CDATA[ssd ide hard drive]]></category>
		<category><![CDATA[ssd sata 2.5]]></category>
		<category><![CDATA[ssd sata disk]]></category>
		<category><![CDATA[ssd sata hard drive]]></category>
		<category><![CDATA[ssd slc 64gb]]></category>
		<category><![CDATA[Unfolding small form factors and defense tech]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=4d5609c820ead310e3e936ad38633c8d</guid>
		<description><![CDATA[Highly integrated with low SWaP, VITA 73 fits perfectly on the small side of the rugged small form factor space.]]></description>
			<content:encoded><![CDATA[<div id='story' class='body'><div class='body-text'>Computing systems used in rugged applications have traditionally been designed from scratch using<br />semiconductor-level components. As COTS system-level technology has increased in availability and popularity, the designers of these rugged systems have looked for more integrated levels of technology. These designers would like to leverage the cost effectiveness and time-to-market advantages of COTS boards and systems. Until recently, they have had few choices. That is rapidly changing as the list of possibilities grows. One of those compelling and emerging options in the small form factor arena is VITA 73 (Rugged Small Form Factor).</div>
			
			</div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/01/evolution-of-a-small-form-factor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MicroTCA.4: The next inflection point in open standards platforms</title>
		<link>http://www.compactpci-systems.com/articles/id/?5512</link>
		<comments>http://www.compactpci-systems.com/articles/id/?5512#comments</comments>
		<pubDate>Wed, 04 Jan 2012 15:00:00 +0000</pubDate>
		<dc:creator>Tony Romero, PT</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Technology Feature]]></category>
		<category><![CDATA[3u cpci]]></category>
		<category><![CDATA[4g broadband]]></category>
		<category><![CDATA[4g lte map]]></category>
		<category><![CDATA[4g lte network]]></category>
		<category><![CDATA[4g lte service]]></category>
		<category><![CDATA[4g lte speed]]></category>
		<category><![CDATA[4g mobile broadband]]></category>
		<category><![CDATA[4g wireless broadband]]></category>
		<category><![CDATA[4g wireless providers]]></category>
		<category><![CDATA[6u cpci]]></category>
		<category><![CDATA[amc atca]]></category>
		<category><![CDATA[atca amc]]></category>
		<category><![CDATA[atca amc carrier]]></category>
		<category><![CDATA[atca backplane]]></category>
		<category><![CDATA[atca blade]]></category>
		<category><![CDATA[atca chassis]]></category>
		<category><![CDATA[atca form factor]]></category>
		<category><![CDATA[atca shelf manager]]></category>
		<category><![CDATA[broadband wimax]]></category>
		<category><![CDATA[bsnl 3g tariff]]></category>
		<category><![CDATA[compact pci chassis]]></category>
		<category><![CDATA[compactpci power supply]]></category>
		<category><![CDATA[cpci 3u]]></category>
		<category><![CDATA[cpci 6u]]></category>
		<category><![CDATA[cpci backplane]]></category>
		<category><![CDATA[cpci form factor]]></category>
		<category><![CDATA[cpci front panel]]></category>
		<category><![CDATA[cpci hot swap]]></category>
		<category><![CDATA[cx4 10gb]]></category>
		<category><![CDATA[cx4 ethernet]]></category>
		<category><![CDATA[data acquisition boards]]></category>
		<category><![CDATA[dsp with fpga]]></category>
		<category><![CDATA[embedded sbc]]></category>
		<category><![CDATA[Emerging standards: MicroTCA.4]]></category>
		<category><![CDATA[ericsson lte]]></category>
		<category><![CDATA[fixed wireless broadband]]></category>
		<category><![CDATA[fpga image processing]]></category>
		<category><![CDATA[general purpose gpu]]></category>
		<category><![CDATA[hspa 4g]]></category>
		<category><![CDATA[hspa lte]]></category>
		<category><![CDATA[is lte 4g]]></category>
		<category><![CDATA[long term evolution 4g]]></category>
		<category><![CDATA[long term evolution lte]]></category>
		<category><![CDATA[lte hspa]]></category>
		<category><![CDATA[lte mobile broadband]]></category>
		<category><![CDATA[lte vs 4g]]></category>
		<category><![CDATA[microtca carrier hub]]></category>
		<category><![CDATA[microtca chassis]]></category>
		<category><![CDATA[MicroTCA.4]]></category>
		<category><![CDATA[pc 104 sbc]]></category>
		<category><![CDATA[pc embedded fanless]]></category>
		<category><![CDATA[picmg backplane]]></category>
		<category><![CDATA[pt]]></category>
		<category><![CDATA[qualcomm lte]]></category>
		<category><![CDATA[sbc embedded]]></category>
		<category><![CDATA[telecommunication service providers]]></category>
		<category><![CDATA[telecoms service providers]]></category>
		<category><![CDATA[what is 4g lte]]></category>
		<category><![CDATA[wimax broadband service]]></category>
		<category><![CDATA[wimax mobile broadband]]></category>
		<category><![CDATA[wimax providers]]></category>
		<category><![CDATA[wimax wireless broadband]]></category>
		<category><![CDATA[wireless wimax]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=083d6ebde2fecdc201c27e031a5994dc</guid>
		<description><![CDATA[The perfect fit: MTCA.4 emerges as a bridge in the core/edge dilemma, and so much more.]]></description>
			<content:encoded><![CDATA[<div id='story' class='body'><div class='body-text'>Andy Grove spoke of Strategic Inflection Points more than 10 years ago as significant changes that affect how businesses make decisions. Some may not be paying much attention to the new MicroTCA.4 specification, but the groundbreaking standard, in conjunction with new technical advances, makes this event one that should have everyone taking note. This truly is disruptive technology.</div>
			
			</div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2012/01/microtca-4-the-next-inflection-point-in-open-standards-platforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where, oh where, had AltiVec gone &#8211; and where is it now? &#8211; Interview with Glenn Beck, Network Products Division, Freescale Aerospace and Defense/Single Board Computing Market Segment Manager</title>
		<link>http://www.mil-embedded.com/articles/id/?5495</link>
		<comments>http://www.mil-embedded.com/articles/id/?5495#comments</comments>
		<pubDate>Fri, 16 Dec 2011 15:00:00 +0000</pubDate>
		<dc:creator>Sharon Hess</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[64 bit microprocessor]]></category>
		<category><![CDATA[adapter pci pcie]]></category>
		<category><![CDATA[adapter pcie auf pci]]></category>
		<category><![CDATA[amd triple core processor]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[asic design jobs]]></category>
		<category><![CDATA[bootable cd disk]]></category>
		<category><![CDATA[cpu microprocessor]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[design of embedded system]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[dsp and fpga]]></category>
		<category><![CDATA[dsp architectures]]></category>
		<category><![CDATA[dsp embedded systems]]></category>
		<category><![CDATA[dsp engineer jobs]]></category>
		<category><![CDATA[dsp image processing]]></category>
		<category><![CDATA[dsp in fpga]]></category>
		<category><![CDATA[dsp on fpga]]></category>
		<category><![CDATA[dsp processor application]]></category>
		<category><![CDATA[dsp processors and architectures]]></category>
		<category><![CDATA[dsp with fpga]]></category>
		<category><![CDATA[embedded design engineer]]></category>
		<category><![CDATA[embedded dsp system]]></category>
		<category><![CDATA[embedded dsp systems]]></category>
		<category><![CDATA[embedded engineer jobs]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded microcontroller systems]]></category>
		<category><![CDATA[embedded software applications]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded system design jobs]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system fpga]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems fpga]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fpga design engineer]]></category>
		<category><![CDATA[fpga dsp]]></category>
		<category><![CDATA[fpga embedded systems]]></category>
		<category><![CDATA[fpga for dsp]]></category>
		<category><![CDATA[fpga hardware]]></category>
		<category><![CDATA[fpga processors]]></category>
		<category><![CDATA[free bootable cd]]></category>
		<category><![CDATA[image processing dsp]]></category>
		<category><![CDATA[make boot disc]]></category>
		<category><![CDATA[make bootable xp]]></category>
		<category><![CDATA[make xp bootable]]></category>
		<category><![CDATA[making bootable cd]]></category>
		<category><![CDATA[microprocessor 32 bit]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[microprocessor in embedded system]]></category>
		<category><![CDATA[mips microprocessor]]></category>
		<category><![CDATA[OpenSystems Media]]></category>
		<category><![CDATA[pci pcie adapter]]></category>
		<category><![CDATA[pcie gen2 sata6g]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[risc microprocessor]]></category>
		<category><![CDATA[risc microprocessors]]></category>
		<category><![CDATA[xp make bootable]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=1badd56819f378842d90456aaab000eb</guid>
		<description><![CDATA[In an interview with Military Embedded Systems, Glenn Beck of Freescale discusses the renaissance of AltiVec in the mil ecosystem with the introduction of the AMP Series processors.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5495%2Ffigures%2F3" />Editor&#8217;s note: An oft-posed question in the military embedded space the past couple of years has been: Will Freescale ever bring AltiVec back? That question was recently answered when the company announced its AMP Series featuring &#8230; reinstated AltiVec. Managing Editor Sharon Hess interviewed Glenn Beck, Market Segment Manager for the Network Products Division, Freescale Aerospace and defense/Single Board Computing Market, in the following Q&A. Key want-to-knows surrounded AltiVec &#8211; why the disappearing act, and is it around to stay? &#8211; in addition to how Freescale plans to help mitigate the industry&#8217;s power-versus-performance paradox. And there&#8217;s a little about systems security, too. Edited excerpts follow.</h3><span id="more-500"></span><span class='body'><p class="body-text"></p>  <p class="interview-question">What is the focus of the division you work for at Freescale?</p>  <p class="body-text"><span class="interviewee">BECK:</span> I&#8217;m with the Network Products Division. We have responsibility for Power Architecture technology, where we build processors primarily for the networking and telecom marketplace as well as the general industrial marketplace. Because our products offer specific blends of performance and energy efficiency, Freescale&#8217;s processors are well established within the aerospace and defense markets as well. Whether it is in flight controllers, graphic displays, or radar imaging, we&#8217;re involved in it all.</p>  <p class="interview-question">I understand that Freescale recently introduced its new QorIQ AMP Series. Aren&#8217;t they the processors with AltiVec technology reinstated?</p>  <p class="body-text"><span class="interviewee">BECK: </span>Yes. We created a family of processors called QorIQ communications platforms, beginning with the P Series family, based on 45 nanometer process technologies. We have products that range from less than 5 W to a maximum of 30&nbsp;W. Just recently, we announced the new QorIQ AMP Series products, based on 28 nanometer technology. This new family of QorIQ AMP processors is a continuation of multicore processing platforms introduced as QorIQ communications platforms. Clearly, the use of many-core microprocessors is how the industry can deliver more performance within embedded power envelopes. Freescale&#8217;s trust architecture is also designed into the AMP processors, providing the ability to securely boot up the device, provide domain separation, and detect external threats to one&#8217;s system. In addition, the AMP series has reintroduced AltiVec technology, which is available on our new e600 core. AltiVec is used in aerospace and defense applications as a signal processor within a control/communications processor. It is well adapted in radar and graphics display imaging &#8211; basically, in any signal processing application.</p>  <p class="interview-question">Okay, let&#8217;s talk AltiVec technology for a moment, which has been a hot topic in a lot of the discussions I have been sitting in on. AltiVec went away for a while, and now it&#8217;s back in this AMP Series processor. What was the&nbsp;impetus?</p>  <p class="body-text"><span class="interviewee">BECK: </span>Right, so everybody remembers that AltiVec technology was first introduced in the MPC7400 series processors. That core later became known as the e600 core when it became part of a System on Chip (SoC) platform. The first introduction of the QorIQ family used the e500 core, which didn&#8217;t include AltiVec technology. There is no doubt that the aerospace and defense market has had strong adoption of AltiVec technology for many years, and frankly it was missed by this market. But over the past three to four years, we have seen an increased demand and requirement for SIMD-like performance in other markets outside aerospace and defense. Like a lot of companies, we are market- and customer-driven and we began to see a need for AltiVec in the telecom, networking, video surveillance, and medical imaging spaces, to name just a few. As those appeared, we knew it was appropriate to bring this technology back to the QorIQ family of processors. That reintroduction has occurred in the recently announced QorIQ AMP T4240 product.</p>  <p class="interview-question">Looking forward, do you think all&nbsp;of&nbsp;your processors will have AltiVec on&nbsp;them?</p>  <p class="body-text"><span class="interviewee">BECK:</span> As far as I can see for the foreseeable future, there is no reason for us to not include the technology in our QorIQ products. In fact, I think we expect constant improvements in the future. </p>  <p class="interview-question">Are there any specific road maps for&nbsp;improving AltiVec? </p>  <p class="body-text"><span class="interviewee">BECK: </span>None that I can speak to at this time; however, many choices will be available to customers. If you remember, we first introduced AltiVec in the MPC7400. Then in about a year and a half, there was an MPC7410. And in another year and a half, there was an MPC7445, and on and on until we came to MPC7448. So about every year and a half we would have a new device with AltiVec technology incorporated, delivering ever-increasing performance. With the QorIQ AMP series, one can expect to see a number of devices across the T1 to T5 series over the next 12 to 24 months. This will provide customers more choices across a broad range of power, performance, and cost and greater alternatives for all kinds of applications. </p>  <p class="interview-question">Earlier you mentioned the AMP&nbsp;Series facing challenges of more performance in power envelopes and security issues. Let&#8217;s&nbsp;address those.</p>  <p class="body-text"><span class="interviewee">BECK:</span> Whether it is the soldier on the ground or in the plane in the sky, the amount of voice, data, and video processing required is rising astronomically. In addition, more systems are becoming unmanned, whether they are aerial or ground vehicles. These UAV systems are requiring ever-increasing sensing capability for growing data analysis. The result is a need for more autonomous real-time decision capability at the point of data collection. This translates directly to the need of more processing capability within very demanding power (heat) envelopes. </p>  <p class="body-text">Classically, the way we have provided better performance is by decreasing the size of transistors, which means you&#8217;re able to switch transistors quicker and therefore deliver more frequency. We complement this with increasing performance through system functionality. We have moved from PCI at 66 MHz to PCI Express interconnect at 1 and 2.5&nbsp;GHz and PCI Gen2 at 5 GHz and are moving from DDR1 to DDR3 memory controllers. All of those help system performance. I do not know about you, but it seems this transition has occurred in such a short period of time. At Freescale we design SoC microprocessors that balance performance across cores, memory, and I/O subsystems in a single device at particular embedded power envelopes (Figure 1). This platform strategy provides customers alternatives to get the maximum performance for their applications. </p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=601,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5495%2Ffigures%2F1" title="Road map depiction for Power Architecture devices">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5495%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Road map depiction for Power Architecture devices</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">The other way you increase system performance is by increasing the frequency and the number of cores. Of course, the challenge associated with this is increased power and heat. We designed the QorIQ platforms devices within designated power envelopes. For example, the P1 family is a 5 W envelope, P2 is 10 W, P3 is a 15 W envelope, and P4 and P5 devices are 30 W envelopes. All these P series processors are 45 nanometer products. </p>  <p class="interview-question">Those are the original QorIQ&nbsp;processors, but can you give a technical example of this improved&nbsp;power envelope for the&nbsp;AMP Series?</p>  <p class="body-text"><span class="interviewee">BECK: </span>As a design philosophy we balance SoC devices that utilize cores, hardware accelerators, memory, and I/O subsystems. The T4240 uses the new e6500 Power Architecture core. This 64-bit core is dual threaded, with L1 and L2 cache and also contains the 128-bit AltiVec unit. These cores connect inside an SoC platform via a coherency fabric that allows us to create point-to-point connections between I/O, accelerators, and memory subsystems resulting in high-performance processors within embedded power envelopes. We take advantage of hardware accelerators to offload work on cores, which allows us to accomplish work with fewer transistors, translating to lower power. Examples of those hardware accelerators are security engines and pattern-matching engines. As we move from the P4080 device to the QorIQ AMP T4240, we are delivering more performance per watt than previously realized. Benchmarks are demonstrating a 4x performance &#8211; pretty exciting stuff.</p>  <p class="interview-question">Where do the higher speeds come&nbsp;from?</p>  <p class="body-text"><span class="interviewee">BECK:</span> The industry always speaks about improved speed, but it&#8217;s really about improved performance. But first, let&#8217;s address the speed. As has been done for more than 20 years, we get improved frequency with improved process geometries. We had improvement in frequency as we went from 1.5 GHz up to 2 GHz as we moved from 45 to 28 nanometer technologies while maintaining the same&nbsp;pipeline architecture. Additional performance improvement resulted from increasing the number of cores from 8 to 24 virtual cores. And we provide significant floating point performance with use of the AltiVec unit where the T4240 is capable of generating 192 GFLOPS. </p>  <p class="interview-question">Let&#8217;s move on to the security you&nbsp;mentioned earlier &#8211; where does&nbsp;that fit into the AMP Series of&nbsp;QorIQ?</p>  <p class="body-text"><span class="interviewee">BECK:</span> I use an acronym that is applicable to the A&amp;D market. The addition of a capital &#8220;A&#8221; to &#8220;SWaP,&#8221; which makes it &#8220;SWAaP.&#8221; It&#8217;s about adding &#8220;Assured computing&#8221; to the long-held requirements related to Size, Weight, and Power. And it has become another critical component to every system. Every A&amp;D RFQ or RFI has a secure or assured component. The delivery of that component cannot jeopardize the performance requirement of the mission. All future systems must be capable of withstanding security attacks. Those attacks come in the form of: </p>  <p class="body-text">1) Theft of functionality: When someone is able to take over that system and cause it to act in ways that it wasn&#8217;t intended to behave.</p>  <p class="body-text">2) Theft of uniqueness: OEMs spend millions of dollars and years of development of systems. To see those investments efforts be reverse engineered can be disastrous. </p>  <p class="body-text">3) Theft of Data: Loss of one&#8217;s IP or data that is stored on the device to unauthorized parties. </p>  <p class="interview-question">How are these challenges mitigated in the AMP Series?</p>  <p class="body-text"><span class="interviewee">BECK:</span> We created our trust architecture capability in the P series product and have extended it in the AMP series. The primary features are secure boot, domain separation, tamper detection, and secure debug. In terms of a secure boot, you want to know that your bootable image is trusted and has not been tampered with. So, we provide the user the ability to put a secure key fused into the device. The boot process begins within the walls of your factory. With a private key, you create a 256-bit hash signature of your known trusted image. During the secure boot process, you create a signature with the key you have stored on the processor and validate that signature to the image while booting the processor. If validated, the processor is brought up in a trusted state. </p>  <p class="body-text">Once in a trusted state, you can then begin the process of creating domain separation of cores, memory, and I/O devices. In other words, you want to distinctly define a particular relationship between cores, memory, and I/O devices in a defined partition. Domains are now able to operate independently without fear of corruption. We have intentionally designed the capability into the processor to ensure that domains are separated in the way the user wants them. This allows customers to provide separation between public, confidential, and secret regions. </p>  <p class="body-text">Trust architecture also has the ability to react to physical threats to the system. The types of attacks are defined by the OEM. Some may be as simple as opening up a cabinet door. When this happens, a signal is sent to the processor and it immediately begins to zeroize the memory regions of the device. The device is now unusable and can only be made whole again through the secure boot process. </p>  <p class="interview-question">What about network attacks?</p>  <p class="body-text"><span class="interviewee">BECK:</span> The way we prevent network attacks is decided by the user&#8217;s security policies during the secure boot process though the partitioning of the cores, memory, and I/O. Each partition is identified with a unique logical address. Network attacks come in the form of when someone will attempt to insert harmful instruction code in a particular memory region to gain control of a device&#8217;s functionality. Network packets must begin authorization through a secure tunnel to the partition. Unauthorized requests are prevented from accessing a partition. A security monitor notes these attacks and notifies the OEM. </p>  <p class="body-text">In addition, one must be able to have access to the system once it is deployed in the field. One is able to securely debug a processor, provide software upgrades, and change security policies while the system is in the field. This is done through a debug port that is entered via a question/answer handshake that the OEM has created and stored in the processor. </p>  <p class="body-text">In the past, these types of security features [secure boot, threat detection, secure debug, and domain separation] have been external to the processor by FPGAs, TPMs [Trusted Platform Modules], or even custom devices. We have put these features inside the QorIQ processors. It has the benefit of increasing security by fewer devices and exposed buses. In&nbsp;addition, it decreases the overall system cost. </p>  <p class="interview-question">Is the trust architecture user-friendly, or is it complex to navigate?</p>  <p class="body-text"><span class="interviewee">BECK: </span>We believe we have made the implementation of the trust features user friendly. But implementation of the trust architecture is a big commitment for the user. If you ever lose your private key, it makes those systems unusable. It is a user-defined option. If you choose not to put it in trust mode, then you can use it as any processor is used today.</p>  <p class="interview-question">One last question: What is needed&nbsp;now in your arena, but not available now? </p>  <p class="body-text"><span class="interviewee">BECK:</span> It is interesting to me that there was a real fear about how quickly multicore processing would get adopted. While there is considerable need for improved software tools, the adoption has been extraordinary. The ever-increasing demand for performance within stringent power envelopes has resulted in a broad spectrum of applications. It is clearly the path we are all taking. We have just begun to deal with the challenge of certifying multicore systems in commercial aviation. While challenging, it will happen. </p>  <p class="body-text">In addition, the fundamental challenges of system design remain: latency, bandwidth, and power. I know here at Freescale, we are constantly working to solve these real-world problems. Frankly, it&#8217;s lots<span class="hyperlink"> of fun. </span></p>  <p class="author-bio">Glenn Beck is Market Segment Manager&nbsp;for the Network Products Division, Freescale Aerospace and Defense/Single Board Computing Market. He is a 32-year semiconductor veteran with Motorola/Freescale. His experience has been in design and product engineering, and he presently leads Freescale&#8217;s marketing efforts in A&amp;D and single board computing with Power Architecture microprocessors. He holds a BS in Electrical Engineering from Texas A&amp;M University and an MBA from Texas State University. He leads the Multicore for Avionics (MCFA) working group of avionics suppliers in an effort to certify platforms with multicore processors. He can be contacted at <a href="mailto:glenn.beck@freescale.com">glenn.beck@freescale.com</a>.</p>  <p class="contact-info"><span class="hyperlink">Freescale Semiconductor 512-996-5043 <a href="http://www.freescale.com">www.freescale.com</a></span></p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/12/where-oh-where-had-altivec-gone-and-where-is-it-now-interview-with-glenn-beck-network-products-division-freescale-aerospace-and-defensesingle-board-computing-market-segment-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded goes virtual</title>
		<link>http://embedded-computing.com/embedded-goes-virtual</link>
		<comments>http://embedded-computing.com/embedded-goes-virtual#comments</comments>
		<pubDate>Fri, 09 Dec 2011 15:00:00 +0000</pubDate>
		<dc:creator>Warren Webb, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[about embedded systems]]></category>
		<category><![CDATA[application of embedded system]]></category>
		<category><![CDATA[computer operating systems comparison]]></category>
		<category><![CDATA[computer runs slow]]></category>
		<category><![CDATA[computer speed increase]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[embedded application development]]></category>
		<category><![CDATA[embedded computer system]]></category>
		<category><![CDATA[embedded computer systems]]></category>
		<category><![CDATA[embedded design systems]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software applications]]></category>
		<category><![CDATA[embedded software architecture]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system design services]]></category>
		<category><![CDATA[embedded system designs]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system linux]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[embedded systems application]]></category>
		<category><![CDATA[embedded systems architecture]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded x86 board]]></category>
		<category><![CDATA[how to speed up computer]]></category>
		<category><![CDATA[improve computer speed]]></category>
		<category><![CDATA[increase computer speed]]></category>
		<category><![CDATA[lenix operating system]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[linux embedded system]]></category>
		<category><![CDATA[linux virtual machines]]></category>
		<category><![CDATA[my pc is running slow]]></category>
		<category><![CDATA[OpenSystems Media]]></category>
		<category><![CDATA[operating system embedded]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[optimize computer performance]]></category>
		<category><![CDATA[optimizing computer performance]]></category>
		<category><![CDATA[optimizing pc performance]]></category>
		<category><![CDATA[pc 104 motherboard]]></category>
		<category><![CDATA[pc running slow]]></category>
		<category><![CDATA[pc104 vga]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[slow computer fix]]></category>
		<category><![CDATA[slow computer performance]]></category>
		<category><![CDATA[slow computer speed]]></category>
		<category><![CDATA[slow pc fix]]></category>
		<category><![CDATA[slow pc performance]]></category>
		<category><![CDATA[speed my computer]]></category>
		<category><![CDATA[speed up computer]]></category>
		<category><![CDATA[speed up my computer]]></category>
		<category><![CDATA[speed up my computer for free]]></category>
		<category><![CDATA[virtual machine host]]></category>
		<category><![CDATA[virtualbox guest additions]]></category>
		<category><![CDATA[virtualization software]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=629d61b896e902b60fb5fa8be2604cdd</guid>
		<description><![CDATA[Virtualization software facilitates the simplified design, easy upgradability, and increased optimization of embedded systems.]]></description>
			<content:encoded><![CDATA[<div
class="story"><h3 class="abstract"><img
alt="4" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F4" />In embedded applications, virtualization software can be used to combine a real-time deterministic operating system with a high-level interactive operating system like Windows or Linux. Using virtualization platforms and tools such as those mentioned in the following discussion simplifies system upgrades and optimizes performance by independently allocating system resources to each operating environment.</h3><p><span
id="more-467287"></span><span
class='body'><p
class="body-text">As embedded technology and market expectations evolve, design engineers are constantly pressured to pack expanded functionality into smaller, reduced-power devices. In addition to the added complexity of the application software for these new projects, customers demand an interactive interface, ubiquitous connectivity, absolute <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#security">security</a>, and extreme reliability.</p><p
class="body-text">Embedded designers also face the challenge of combining slower legacy interface circuitry with the latest high-speed control devices and multiple displays. The resulting system often includes the original hardware with its <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#operating%20system">Operating System</a> (OS) and application software, plus a completely separate controller with software to handle the newer requirements. This approach increases component count and power requirements and does nothing to increase legacy application performance.</p><p
class="body-text">To deal with this increased complexity, designers are utilizing <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#virtual">virtual</a> processors hosting multiple OSs to ensure unimpeded, deterministic response to real-time events while simultaneously providing users and operators with a high-level, <a
rel="tag" href="http://channels.opensystemsmedia.com/Gfx_Video">graphics</a>-based interface. <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/">Virtualization</a><span
class="social" style="margin:0 0 0 3px">[<a
href="http://opsy.st/virtualization-facebook"><img
style="margin:0 2px -2px 2px;vertical-align:baseline" src="http://i.opensystemsmedia.com/i/a-facebook-12x12.gif" /></a>]</span> is achieved by adding a <a
rel="tag" href="http://channels.opensystemsmedia.com/Manycore">Virtual Machine Monitor</a> (<a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#vmm">VMM</a>) software layer or <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#hypervisor">hypervisor</a> that isolates individual partitions and executes guest operating software. The hypervisor creates one or more simulated computer environments or virtual machines that can simultaneously host independent OSs and applications on a single processor.</p><p
class="body-text">To speed up virtual component interaction, silicon manufacturers are incorporating hardware-assisted virtualization in processor architectures tailored for extended <a
rel="tag" href="http://channels.opensystemsmedia.com/Obsolescence">life-cycle</a> embedded applications. For example, the second-generation Intel Core and Intel Atom E6xx processors support Intel Virtualization Technology (Intel VT). This technology improves software-based virtualization performance and security by using hardware assist to trap and execute certain VMM instructions. Intel VT allows the VMM to allocate&nbsp;memory and I/O devices to specific partitions, thus decreasing the processor load and reducing virtual machine switching times.</p><p
class="heading-1">Virtual isolation</p><p
class="body-text">Virtual platforms that combine real-time or <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#safety-critical">safety-critical</a> embedded functions with a large graphics-based OS must contain security provisions that allow unaffected partitions to continue operation in the event of a software failure or <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#cyber%20attack">cyber attack</a>. For example, <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#lynuxworks">LynuxWorks</a> updated the LynxSecure <a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#separation%20kernel">separation kernel</a> and hypervisor for various virtual machine configurations, as shown in Figure 1. This virtualization software is designed to operate in <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#secure">secure</a> <a
rel="tag" href="http://channels.opensystemsmedia.com/Military">defense</a> environments where data and applications with different security levels must co-reside on a single device without corruption. LynxSecure uses a hypervisor to create a virtualization layer that maps physical system resources to each guest OS, which is assigned dedicated resources such as memory, CPU time, and I/O peripherals. Another key feature is the ability to run fully virtualized 64-bit guest OSs such as Windows 7, <a
rel="tag" href="http://tech.opensystemsmedia.com/linux/">Linux</a><span
class="social" style="margin:0 0 0 3px">[<a
href="http://opsy.st/linux-facebook"><img
style="margin:0 2px -2px 2px;vertical-align:baseline" src="http://i.opensystemsmedia.com/i/a-facebook-12x12.gif" /></a>]</span>, and Solaris <a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/#across%20multiple%20cores">across multiple cores</a>.</p><p
class="figures"> <figure></p><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F1" title="The LynxSecure embedded hypervisor allows multiple dissimilar OSs to share a single physical hardware platform."><br
/> <img
width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F1" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <figcaption><b>Figure 1:</b> The LynxSecure embedded hypervisor allows multiple dissimilar OSs to share a single physical hardware platform.</figcaption><div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p> </figure></p><p
class="body-text">TenAsys Corporation offers eVM for Windows, another embedded virtualization platform that hosts an <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20os">embedded OS</a> or Real-Time OS (<a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#rtos">RTOS</a>) alongside Windows on the same processor platform. To ensure that critical hardware interfaces are not virtualized, eVM partitions the platform, thus guaranteeing maximum performance and deterministic response to real-time events. Installed as a standard Windows application, eVM includes all of the integration tools needed to set up, start, and stop multiple RTOS guest configurations. The Windows-based control panel also allows users to assign interrupts, allocate I/O devices, and set up disk boot images. After the system is set up, eVM provides the guest RTOS with the lowest possible interrupt latency, direct access to I/O, and non-paged RAM.</p><p
class="heading-1"><a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/">Multicore</a><span
class="social" style="margin:0 0 0 3px">[<a
href="http://opsy.st/multicore-facebook"><img
style="margin:0 2px -2px 2px;vertical-align:baseline" src="http://i.opensystemsmedia.com/i/a-facebook-12x12.gif" /></a>]</span> virtualization</p><p
class="body-text">Although virtualization allows designers to combine OSs and applications to reduce system power requirements and form factors, it does little to increase the performance of individual software components. One of the latest trends among designers is to incorporate multicore processors along with virtualization to boost performance through parallel processing.</p><p
class="body-text">With virtualization, the hypervisor isolates and allocates system resources between operating environments so that real-time, general-purpose, and legacy software can be readily integrated in a multicore system. In addition to memory and hardware device allocation, virtualization allows developers to assign multiple cores to compute-intensive applications as needed to maximize overall system performance.</p><p
class="body-text">Extending virtualization to multicore applications, the Wind River Hypervisor allows designers to configure and <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#partition">partition</a> hardware devices, memory, and cores into virtual boards, each with its own OS, while maintaining the necessary separation (see Figure 2). These virtual boards can be run on a single processor core or distributed across multiple cores based on system needs. The Wind River Hypervisor has been applied in safety-critical applications where the system&#8217;s safety-certified and noncertified components traditionally had to be physically separated. However, embedded virtualization allows system designers to isolate the safety-certified components while still operating on a single hardware platform utilizing a certified hypervisor. Virtualization also improves the potential uptime of embedded applications by enabling individual partitions to be rebooted or even reprogrammed while other services on the same device are not affected.</p><p
class="figures"> <figure></p><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F2" title="The Wind River Hypervisor provides a virtualization layer that partitions a single or multicore chip into multiple partitions with varying levels of protection and capabilities."><br
/> <img
width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F2" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <figcaption><b>Figure 2:</b> The Wind River Hypervisor provides a virtualization layer that partitions a single or multicore chip into multiple partitions with varying levels of protection and capabilities.</figcaption><div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p> </figure></p><p
class="body-text">Real-Time Systems also provides virtualization support for multicore processors. Leveraging Intel VT for security, the RTS Real-Time Hypervisor allows completely independent execution of more than one OS on a single <a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/#multicore%20platform">multicore platform</a>. Designers can assign individual processor cores, memory, and devices to each OS. Through a configuration file, the boot sequence can be specified, and when desired, an operating system can be rebooted independently of the others. To facilitate communication between OSs, the hypervisor also provides configurable user-shared memory, as well as a <a
rel="tag" href="http://channels.opensystemsmedia.com/Network%20testing">TCP</a>/IP-based virtual network driver. The system can run multiple instances of RTOSs mixed with high-level operating software such as Windows XP/<a
rel="tag" href="http://channels.opensystemsmedia.com/Windows%20CE">CE</a>/7/Embedded, QNX, Linux, On Time RTOS-32, <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks">VxWorks</a>, Microware OS-9, and <a
rel="tag" href="http://tech.opensystemsmedia.com/android/">Android</a><span
class="social" style="margin:0 0 0 3px">[<a
href="http://opsy.st/android-facebook"><img
style="margin:0 2px -2px 2px;vertical-align:baseline" src="http://i.opensystemsmedia.com/i/a-facebook-12x12.gif" /></a>]</span>.</p><p
class="heading-1">Development and <a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debug</a></p><p
class="body-text">No matter if virtual applications run on a single processor or across multiple cores, software development and <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#debug%20tools">debug tools</a> must be configured to support more than one OS and memory partition. For example, Green Hills Software updated its INTEGRITY RTOS and MULTI Integrated Development Environment (IDE) to support the latest virtualization microarchitecture. INTEGRITY RTOS is built around a partitioning architecture to provide <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20systems">embedded systems</a> with enhanced reliability, security, and real-time performance. Secure partitions guarantee each task the resources it needs to protect the OS and user tasks from errant and <a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#malicious%20code">malicious code</a>. INTEGRITY architecture provides Asymmetrical Multi-Processing (AMP) and Symmetrical Multi-Processing (SMP) support optimized for embedded and real-time multicore processors.</p><p
class="body-text">MULTI IDE software tools include several C compiler options, a debugger, editor, configuration manager, code browser, and debugger in a single package. MULTI also features DoubleCheck, an integrated static analyzer that isolates bugs caused by complex interactions between code segments that might not be in the same source file. In addition, Green Hills Probe provides a multicore debug control for board bring-up, device driver development, and system-level <a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debugging</a>.</p><p
class="body-text">The next step is to incorporate multicore support by updating and streamlining the software development tool set while minimizing modifications to current code creation practices. Various software vendors provide advanced development tools and board support packages for products based on second-generation Intel Core devices. For example, the Prism <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#software%20analysis">software analysis</a> tool from CriticalBlue (Figure 3) allows developers to analyze existing software applications, evaluate benefits of the new architecture, and select the appropriate processor.</p><p
class="figures"> <figure></p><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure3', 'width=875,height=762,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure3" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F3" title="The Prism analysis package allows developers to emulate the numbers of cores, threads, and dependencies in the system to streamline the transition from sequential to parallel programming."><br
/> <img
width="470" border="0" alt="Figure3" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5457%2Ffigures%2F3" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <figcaption><b>Figure 3:</b> The Prism analysis package allows developers to emulate the numbers of cores, threads, and dependencies in the system to streamline the transition from sequential to parallel <a
rel="tag" href="http://channels.opensystemsmedia.com/MATLAB">programming</a>.</figcaption><div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div></td></tr></table><p> </figure></p><p
class="body-text">Prism analyzes the behavior of existing code running on simulators or hardware development boards to assess opportunities that introduce or add further parallel code structures. For example, developers can select the appropriate member of the second-generation Intel Core processor family and analyze the impact of Intel Hyper-Threading Technology, data cache misses, and instruction throughput. Prism gives developers an estimate of the performance gain achievable by partitioning the program into multiple threads.</p><p
class="heading-1">Design simplified, performance&nbsp;optimized</p><p
class="body-text">Virtualization is a proven way to simplify <a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20designs">embedded designs</a> with fewer components while integrating the framework needed to easily combine disparate operating software or future updates. Virtualization also simplifies system upgrades by isolating the hardware and software layers so that designers can easily add or modify peripherals, memory, and cores without restructuring the software architecture. A virtual machine hypervisor enables designers to optimize performance by tweaking resource mapping even after deployment.</p></p></div><p></span></div></p><div
class="keywords"><h2>Topics covered in this article</h2><ul><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#security">security</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#operating%20system">operating system</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Manycore">virtual machine monitor</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/">Virtualization</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#hypervisor">hypervisor</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Gfx_Video">graphics</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#virtual">virtual</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#vmm">vmm</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Obsolescence">life-cycle</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/#across%20multiple%20cores">across multiple cores</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/virtualization/#separation%20kernel">separation kernel</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#safety-critical">safety-critical</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#cyber%20attack">cyber attack</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#lynuxworks">lynuxworks</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Military">defense</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#secure">secure</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/linux/">Linux</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20os">embedded os</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#rtos">rtos</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/">multicore</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#partition">partition</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/multicore/#multicore%20platform">multicore platform</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/android/">Android</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#vxworks">vxworks</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Network%20testing">tcp</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Windows%20CE">ce</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debug</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20systems">embedded systems</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/safety-and-security/#malicious%20code">malicious code</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#debug%20tools">debug tools</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/Diagnostics">debugging</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#software%20analysis">software analysis</a></li><li><a
rel="tag" href="http://channels.opensystemsmedia.com/MATLAB">programming</a></li><li><a
rel="tag" href="http://tech.opensystemsmedia.com/embedded-software/#embedded%20designs">embedded designs</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://embedded-computing.com/embedded-goes-virtual/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://attachments.opensystemsmedia.com/ECD5457/figures/4" length="0" type="" />
		</item>
		<item>
		<title>Getting to the core of rugged transportation systems: Overcoming challenges of both general and application-specific design</title>
		<link>http://www.smallformfactors.com/articles/id/?5473</link>
		<comments>http://www.smallformfactors.com/articles/id/?5473#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:00:00 +0000</pubDate>
		<dc:creator>Jeff Munch, ADLINK Technologies</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[1tb hard drive]]></category>
		<category><![CDATA[2.5 ssd ide]]></category>
		<category><![CDATA[2.5 ssd sata]]></category>
		<category><![CDATA[ADLINK Technologies]]></category>
		<category><![CDATA[board pcb design]]></category>
		<category><![CDATA[conformal coating printed circuit boards]]></category>
		<category><![CDATA[data acquisition board]]></category>
		<category><![CDATA[data acquisition boards]]></category>
		<category><![CDATA[data acquisition card]]></category>
		<category><![CDATA[embedded board]]></category>
		<category><![CDATA[embedded computer]]></category>
		<category><![CDATA[embedded computers]]></category>
		<category><![CDATA[embedded design systems]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded single board]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded system applications]]></category>
		<category><![CDATA[embedded system design services]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system designs]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system hardware design]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fanless pc]]></category>
		<category><![CDATA[Getting to the core of rugged transportation systems]]></category>
		<category><![CDATA[hard disk ssd]]></category>
		<category><![CDATA[ide 2.5 ssd]]></category>
		<category><![CDATA[ide hard drive]]></category>
		<category><![CDATA[ide ssd 64gb]]></category>
		<category><![CDATA[industrial single board computer]]></category>
		<category><![CDATA[Industrial/transportation]]></category>
		<category><![CDATA[low power pc]]></category>
		<category><![CDATA[mini form factor pc]]></category>
		<category><![CDATA[pc 104 form factor]]></category>
		<category><![CDATA[pc 104 single board computer]]></category>
		<category><![CDATA[pcb board design]]></category>
		<category><![CDATA[pcb circuit board]]></category>
		<category><![CDATA[pcb circuit board design]]></category>
		<category><![CDATA[pcb circuit boards]]></category>
		<category><![CDATA[pcb design]]></category>
		<category><![CDATA[pcb fabrication]]></category>
		<category><![CDATA[pcb layout design]]></category>
		<category><![CDATA[pci data acquisition]]></category>
		<category><![CDATA[pentium single board computer]]></category>
		<category><![CDATA[printed board circuit]]></category>
		<category><![CDATA[prototype circuit board]]></category>
		<category><![CDATA[rugged single board computer]]></category>
		<category><![CDATA[sata 2.5 ssd]]></category>
		<category><![CDATA[sata hard drive]]></category>
		<category><![CDATA[sata ssd 2.5]]></category>
		<category><![CDATA[sbc form factor]]></category>
		<category><![CDATA[single board]]></category>
		<category><![CDATA[single board computer embedded]]></category>
		<category><![CDATA[single board computer pci]]></category>
		<category><![CDATA[single board industrial computer]]></category>
		<category><![CDATA[single board pc]]></category>
		<category><![CDATA[ssd 2.5 inch]]></category>
		<category><![CDATA[ssd disk drives]]></category>
		<category><![CDATA[ssd sata 2.5]]></category>
		<category><![CDATA[usb data acquisition]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=2c02042869c655b25b47e3430227029b</guid>
		<description><![CDATA[Identifying the correct format for each design and combining it with the correct manufacturing approach will reduce long-term customization woes.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="1" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FPC1045473%2Ffigures%2F1" />Designing for rugged, small form factor applications presents challenges, but there are form factors and manufacturing techniques that accommodate most requirements for either general or application-specific design. Mobility and environmental extremes are critical considerations for transportation applications; however, by selecting the right core and rugged framework, focusing on and prioritizing any added customization becomes a much simpler mission.</h3><span id="more-492"></span><span class='body'><p class="body-text">Transportation means movement. Movement means variability. Variability means design challenges. When building a small form factor embedded computer for transportation applications, there are inherent design challenges regardless of application-specific requirements. In fact, it can be argued that small form factor design trends are paradoxical. As form factor size decreases, functionality requirements increase. And at the same time that processing power requirements heighten, lower power consumption and lower thermal output are expected. Now add to that the requirement for ruggedness to accommodate for the shock, vibration, humidity, and temperature extremes and variance inherent in mobile and outdoor applications; developers are often left wondering where they can safely compromise while still meeting overall application design specifications. Knowing the application&#8217;s needs and what already exists on the market that fits those requirements makes transportation design less daunting.</p>  <p class="heading-1">Choosing formats</p>  <p class="body-text"><span id="Ad-ABD-1" style="display: none; float: left;"></span>PC/104 and Embedded Board eXpandable (EBX) are good format options for designs that can handle slightly larger Single Board Computer (SBC) form factors. Intended for data acquisition in rugged environments, the PC/104 embedded computing format has no backplane, instead allowing modules to stack together like building blocks &#8211; more rugged than typical bus connections in PCs. And with just 46 square inches of surface area (8&quot; x 5.75&quot;), EBX balances size and functionality with a bolt-down SBC format, supporting rugged embedded designs with higher-performance Central Processing Units (CPUs) &#8211; such as those using multicore technology for networking, Digital Signal Processing (DSP), and graphics-heavy applications &#8211; and generous onboard Input/Output (I/O) functions to support everything from large data exchange to video. </p>  <p class="body-text">However, the most extendable and customizable application design method accommodates a broad range of custom and off-the-shelf needs by using modularity. Computer-On-Modules (COMs) are complete embedded computers built on a single circuit board for use in small or specialized applications requiring low power consumption or small physical size. Though they are compact (ETX/XTX at 114 mm x 95 mm and COM Express at 125 mm x 95 mm) and highly integrated, COMs can accommodate complex CPUs.</p>  <p class="body-text">With the COM approach, all generic PC functions are readily available in an off-the-shelf core module. A custom-designed carrier board complements the COM with additional functionality that is required for specific applications. The carrier board provides all the interface connectors for peripherals, such as storage, Ethernet, keyboard/mouse, and display. This modularity allows the designer to upgrade the COM on the carrier board without changing any other board design features, and also allows more customization of peripherals as dictated by a specific application. </p>  <p class="body-text">COMs allow system developers to focus on their core competencies and the unique functions of their systems. The COM Express form factor offers flexibility in the development and advancement of ultra-rugged embedded applications for a plethora of industries, including transportation. By using the modular processing block, the designer creates a price and value advantage; he/she isn&#8217;t locked into a single vendor for board creation and can customize based on pricing and performance requirements. Because it is easily swapped from a carrier board and comes in one of the smallest form factors, COM Express is ideal for long-life embedded applications with a critical development cycle, as well as more progressive applications that require frequent processor upgrades without affecting other application design elements.</p>  <p class="heading-1">Designing for harsh environments in transportation</p>  <p class="body-text">Transportation solutions are most often housed outdoors or in moving vehicles, where exposure to a variety of climates dictates the need to operate in extended temperatures and to power up in any extreme. The easiest initial step is to select a rugged board or system that is designed for harsh environments from the ground up. To support the extremes of shock, vibration, humidity, and temperature, care is given to component selection, circuit design, Printed Circuit Board (PCB) layout and materials, thermal solutions, enclosure design, and manufacturing process. Robust test methods, including Highly Accelerated Life Testing (HALT), ensure optimal product design phases in order to meet a product&#8217;s stringent requirements, such as -40 &#176;C to +85 &#176;C operating temperature range, MIL-STD, shock and vibration, and long-term reliability.</p>  <p class="body-text">Onboard train systems also deal with high concentrations of sulfur and humidity when going through tunnels. Designers can look for boards with conformal coating to reduce degradation from such exposure. Conformal coating is used in small form factor manufacturing rather than potting, which is a similar process that uses a heavier material and is harder to inspect, test, and repair. Though considered the highest level of environmental protection, potting encapsulates the entire PCB, which adds weight and expands the dimensions of a unit. Even an extra millimeter can be critical in small form factor design, which is why conformal coating &#8211; with a single-part material that conforms to the board &#8211; is a better option. A variety of conformal coating materials (such as acrylic, polyurethane, epoxy, and silicone) and application methods (such as brushing, spraying, and dipping) are currently used to protect against moisture, dust, chemicals, and temperature extremes that can potentially damage electronics. The correct coating or application method varies depending on established standard operating conditions for an application. With transportation applications, different coatings may be selected based on a primary need for moisture resistance versus abrasion resistance versus temperature stability.</p>  <p class="heading-1">Maintaining performance while mobile</p>  <p class="body-text">Transportation applications typically need as much functionality as possible in the smallest form factor, meaning the controller may be burdened with extreme loads of information and intricate tasks. Rugged computing solutions also demand more memory space than ever before for both data storage and application performance. Options for storage include rotating Hard Disk Drives (HDDs) for economy or Solid-State Drives (SSDs), which are truly rugged, but also come at a higher price point (cents per GB for HDDs versus dollars per GB for SSDs). SSD microchips that retain data in non-volatile memory chips and an absence of moving parts make them less susceptible to physical shock, altitude, and vibration issues. SSDs have faster access time and lower latency than do HDDs, but SSDs cannot provide the capacity of an HDD; because of the higher cost per GB, SSDs are typically no larger than 120 GB, while HDDs average 500 GB to 1 TB. Higher performing HDDs also require heavier materials than either a standard HDD or the flash memory and circuit board materials of SSDs. </p>  <p class="body-text">With in-vehicle surveillance applications, vibration control is critical for capturing quality video. Some rugged boards offer a thicker PCB fabrication to add rigidity so the board can withstand higher levels of vibration strain. The thicker PCB offers stability to the overall surface area, protecting electronic components from damage due to vibration. The thicker PCB also offers the ability to use more copper between layers for thermal considerations. Heat is a common unwanted by-product of processing power. In addition to cooling fans and large heat sinks, which may not always be usable for compact, mobile transportation designs, PCBs with adequate amounts of integrated copper facilitate heat conduction away from temperature-sensitive electronic components to prevent performance degradation.</p>  <p class="body-text">Another challenge with designing in small form factors is that current power supply technology can put limits on size reduction. Rugged designs, specifically, require a robust onboard power controller to support a wide operating temperature range &#8211; on average of -20 &#176;C to +70 &#176;C. An onboard power controller is also critical for mobile transportation applications to support multiple data usage requirements, such as collecting video, remotely checking the health of onboard system devices, and sending command controls.</p>  <p class="heading-1">Balancing connections</p>  <p class="body-text">For an in-vehicle or outdoor video/audio capture application design, the board itself needs high-performance graphics and host interface support for multiple peripherals. In addition to the integration of a video camera, features such as remote monitoring and wireless video download call for some form of connectivity. Both satellite and cellular connectivity require either an antenna or a device with an antenna to connect directly to the system. Ample Ethernet and serial interface ports &#8211; with at least one port supporting RS-232/422/485 for Transmit and Receive &#8211; are critical to accommodate function-specific peripherals. </p>  <p class="heading-1">Case study: Onboard locomotive video system</p>  <p class="body-text">A leading global supplier of technology solutions for railroads wanted to develop an onboard locomotive video/audio capture system to aid in accident investigations and provide safety training to crews. In addition to video and audio recording, requirements for the system included remote monitoring and control, real-time health monitoring, and wireless video download. The system also needed to incorporate solid-state media in a sealed, tamper-resistant housing. </p>  <p class="body-text">Ampro by ADLINK is a line of extreme rugged embedded computers and systems that provides designers of rugged applications with a head start to development. For the onboard locomotive video/audio capture system, designers created a rugged solution around the Intel embedded architecture and EBX SBC form factor. The design accommodated both the functionality and rugged requirements for the train system with dual Ethernet, CRT and flat panel video, multiple serial and USB ports, SATA and IDE interfaces, CompactFlash socket, PCIe Mini Card socket, high-definition audio, and General Purpose Input/Output (GPIO) support.</p>  <p class="body-text">A critical byproduct of on-site video/audio capture is reduced litigation and settlement costs due to accurate incident reporting. System reliability is critical to users in terms of Return On Investment (ROI), so designers should build using products that provide documented uptime in their specifications and meet the industry standard of EN50155. Because of the cost and complex nature of embedded computing solutions for transportation, qualification can take a very long time, requiring designers to look for products with a long lifecycle. One way to ensure system longevity is to build with products that follow the roadmap of an established architecture.</p>  <p class="heading-1">Optimal designs for transportation</p>  <p class="body-text">Though designing for rugged small form factor applications presents challenges, there are form factors and manufacturing techniques that accommodate most requirements for either general or application-specific design. Formats such as PC/104, EBX, and COMs have been created specifically to address rugged embedded system needs, while also handling complex CPU technology for applications that require heavy processing power. Modularity also helps designers create customizations while taking into account cost and value requirements. The bottom line for any rugged design, whether for transportation, military, energy, or infrastructure, is to understand all application requirements and how/where existing formats and products can address those needs. By selecting the right core and rugged framework, focusing on and prioritizing any added customization becomes a much simpler mission.</p>  <p class="author-bio">Jeff Munch is CTO of ADLINK Technology and heads all R&amp;D operations in North America and Asia. Jeff has more than 20 years of experience in hardware design, software development, and engineering resource management. Before joining the company, he spent five years at Motorola Computer Group as Director of Engineering. Jeff is Chair of the COM Express R2.1 Subcommittee, Chair of the AdvancedTCA Subcommittee, and Chairman of the PICMG COM Express Plug-and-Play Subcommittee. </p>  <p class="contact-info">ADLINK Technology Jeff.munch@adlinktech.com www.adlinktech.com </p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/12/getting-to-the-core-of-rugged-transportation-systems-overcoming-challenges-of-both-general-and-application-specific-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Many-core processing: Sharing the performance load for greater energy efficiency</title>
		<link>http://www.embedded-computing.com/articles/id/?5425</link>
		<comments>http://www.embedded-computing.com/articles/id/?5425#comments</comments>
		<pubDate>Fri, 11 Nov 2011 15:00:00 +0000</pubDate>
		<dc:creator>John Goodacre, ARM</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[arm cortex cpu]]></category>
		<category><![CDATA[arm processor cores]]></category>
		<category><![CDATA[arm system on a chip]]></category>
		<category><![CDATA[asic design methodology]]></category>
		<category><![CDATA[asic design verification]]></category>
		<category><![CDATA[design embedded hardware]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[design of embedded system]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[distributed embedded systems]]></category>
		<category><![CDATA[embedded design systems]]></category>
		<category><![CDATA[embedded dsp system]]></category>
		<category><![CDATA[embedded multicore]]></category>
		<category><![CDATA[embedded software applications]]></category>
		<category><![CDATA[embedded software architectures]]></category>
		<category><![CDATA[embedded software programming]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system on chip]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[gpgpu cpu]]></category>
		<category><![CDATA[gpu computation]]></category>
		<category><![CDATA[gpu gpgpu]]></category>
		<category><![CDATA[gpu parallel computing]]></category>
		<category><![CDATA[gpu scientific computing]]></category>
		<category><![CDATA[knowledge doubles every]]></category>
		<category><![CDATA[load balancin]]></category>
		<category><![CDATA[load balanser]]></category>
		<category><![CDATA[load ballancer]]></category>
		<category><![CDATA[Many-core architecture]]></category>
		<category><![CDATA[Many-core processing]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[multicore processing]]></category>
		<category><![CDATA[multiprocessor system on chip]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[rendering gpu]]></category>
		<category><![CDATA[server load balancers]]></category>
		<category><![CDATA[server load balancing algorithms]]></category>
		<category><![CDATA[server load balancing architectures]]></category>
		<category><![CDATA[so hungry it hurts]]></category>
		<category><![CDATA[system on a chip design]]></category>
		<category><![CDATA[wacc debt]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=a254924389bc7653db8bf9be312d92f8</guid>
		<description><![CDATA[The optimization of many-core architectures to balance power and performance is key in the future of mobile computing.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5425%2Ffigures%2F3" />The future of multicore design requires more targeted processing, optimization, and differentiation in the design process for systems that contain different types of processors, as well as support for the requirements of the software ecosystem. Energy efficiency is a vital differentiator in the world of processing and will be the key driver for the future of computing.</h3><span id="more-471"></span><span class='body'><p class="body-text">For more than 60 years &#8211; from the early days of mainframe computers through the PC revolution of the 1980s and into today&#8217;s explosion of smart mobile devices &#8211; processor technology has always evolved to meet users&#8217; expectations, at times driving unforeseen innovations in the computing industry. Given the diversity of new mobile devices coming to market on a daily basis, processor innovations continue to be a powerful force for change. </p>  <p class="body-text">With the advent of mainstream mobile computing, processor architectures have shifted from the traditional desktop model driven by performance, regardless of the power required. Devices that require all-day or even multiday battery life will require a more compact energy envelope while pushing processor performance to new levels. </p>  <p class="heading-1">In the beginning, performance was king </p>  <p class="body-text">The first consumer computers powered by microprocessors were simple, power-hungry, stationary devices that were tethered to their source of electricity (the common wall socket). This meant that microprocessors could be designed solely with performance in mind, which soon became the &#8220;holy grail&#8221; for developers. </p>  <p class="body-text">Early PCs comprised a single-threaded CPU running a single application. Soon, these early 8-bit microprocessors grew to 16-bit and, eventually, 32-bit processing by the mid-1980s. Then the market started to see PCs capable of running multiple applications simultaneously. With performance rising as the number of transistors doubled in cadence with Moore&#8217;s Law, each new processor design offered the ability to develop new features and functionality, whether playing a DVD or editing the family album, which, in turn, whetted consumer appetites for more powerful devices. </p>  <p class="body-text">Eventually, consumer demand for different form factors and the expectation of performance improvements pushed the demands on processors beyond what was capable within a single core. At the same time, demand for mobile devices started to explode and, as it grew, so did the call for more energy-efficient processing. </p>  <p class="body-text">When ARM was launched in 1990, a main objective of its founders was to create an energy-efficient processor architecture for handheld devices. Employing the RISC CPU architecture, ARM&#8217;s approach simplified instructions, streamlined task execution, and reduced the power required per instruction.</p>  <p class="body-text">A few characteristics were critical to the development of a more energy-efficient microprocessor, the most important of which was an intense focus on limiting power consumption to the lowest possible levels. Keeping the power envelope to the smallest possible footprint not only increased battery life, but also limited the weight of the battery required to power the device, which reduced the bill of materials and kept overall costs down. </p>  <p class="heading-1">Multicore: Benefits beyond mobile </p>  <p class="body-text">Today, the benefits of this high-performance, energy-efficient processing architecture are bearing fruit in devices such as digital televisions and set-top boxes, office equipment such as printers and copiers, and mobile devices such as tablets, portable gaming units, and smartphones. </p>  <p class="body-text">Since the mid-2000s it has been accepted that building bigger and bigger CPUs to realize single-thread performance gains not only becomes increasingly difficult, but also runs counter to the energy-efficiency limitations of mobile devices. This is because exponentially more energy is required for every few percentage points gained in performance. </p>  <p class="body-text">Multicore solutions can deliver higher performance at comparable frequencies to single-core designs while offering dramatic savings in terms of cost and power efficiency. Furthermore, multicore solutions can leverage cores with high transistor counts and optimize systems by powering them up only when needed. In essence, this can be thought of as intelligent load balancing. Not only does a system need to consider which processor is best suited to execute a specific task, but it also must consider the performance required of that task and assign it to the most power-efficient processor available. </p>  <p class="body-text">Using cores as needed while keeping others idle helps keep energy consumption as low as possible, with limited impact on performance. As tasks are distributed across multiple processor cores, an individual processor might not run at full capacity, allowing the voltage and frequency of a multicore processor to be lowered. This results in significant power&nbsp;savings related to the system&#8217;s aggregate performance. </p>  <p class="body-text">To illustrate this idea with a common use case, consider today&#8217;s smartphones, which must be powerful enough to render a complex Web page and play gaming applications, often in parallel with basic e-mail synchronization and phone management functionality. With the ability to power up cores only when needed, multicore smartphones can deliver increased battery life compared to their single-core, full-throttle predecessors. Market demand for scalable performance has resulted in most current smartphones containing multicore CPUs, as well as GPUs with multiple cores found in many of today&#8217;s leading mobile video and gaming devices (see Figure 1).</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5425%2Ffigures%2F1" title="Most smartphones contain multicore CPUs, leveraging the ability to power up cores only when needed.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5425%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Most smartphones contain multicore CPUs, leveraging the ability to power up cores only when needed.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">A &#8220;many-core&#8221; approach to multicore processing requires the performance loads to be shared across many smaller processors, such as a Cortex-A5, rather than with multiple single-thread workloads across a single-core processor. Designers are increasingly deploying clusters of processors designed to work together, sharing data and tasks among caches or multiple instances of the same processor (see Figure 2).</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5425%2Ffigures%2F2" title="In a many-core architecture, clusters of processors share data and tasks among caches or multiple instances of the same processor.">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5425%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 2:</b> In a many-core architecture, clusters of processors share data and tasks among caches or multiple instances of the same processor.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">Many core becomes even more interesting as smaller processors work together to deliver a combined performance level with lower power consumption than a larger processor multitasking the same workload. As previously mentioned, the costs associated with increased performance on a single thread are exponential; however, with multicore processing the cost becomes more linear in scale. Designers are using many cores to significantly reduce aggregate system costs. </p>  <p class="body-text">As hardware designers begin to implement these many-core systems, software developers will need to produce code capable of using a many-core processing solution. Until then, devices must have the ability to execute high-performance tasks. One example of a system that contains both high single-thread performance multicore and the greater power efficiency of many cores is the current deployment of CPUs and GPUs, where the many-core GPU can deliver graphical computation using less power than the multicore CPU. Since the GPU remains coherent with the CPU and shares its caches, external memory bandwidth and performance demands on the CPU can be reduced. Languages such as OpenCL and CUDA are working to enable these issues for more generic applications. </p>  <p class="heading-1">Optimizing for future performance </p>  <p class="body-text">Our industry lies at a crossroads in balancing performance and power. By leveraging domain-specific processors and heterogeneous general-purpose computing, designers can optimize limited hardware resources and footprints. Optimizing designs and the design process across all types of multicore Systems-on-Chip (SoCs) also can achieve these gains. </p>  <p class="body-text">While optimization might not get as much attention as multicore processing, it is equally important, especially in small-footprint applications with greater coherency challenges. Cache coherency is key to multicore computing applications, ensuring that the data stored in shared resources is properly maintained. Standards and specifications such as the AMBA 4 bus are encouraging steps toward providing system-level cache support across clusters of multicore processors, as well as maintaining prime performance and power efficiency in complex SoCs. </p>  <p class="body-text">Future devices will continue to require more powerful processing performance, most likely under increasingly tight power constraints. By developing more targeted processing, optimization, and differentiation throughout the design process, developers can bring to market systems that not only support the many-core concept, but also incorporate software support. </p>  <p class="author-bio">John Goodacre is director of program management in ARM&#8217;s Processor Division. He has more than 20 years of experience in the engineering industry, including five years working for Microsoft as group program manager in the Exchange Server Group and as the manager of a team developing mobile phone software. John graduated from the University of York with a BSc in Computer Science.</p>  <p class="contact-info">ARM +44-1223-400-400 <a href="mailto:John.Goodacre@arm.com">John.Goodacre@arm.com</a>  <a href="http://www.linkedin.com/company/arm">www.linkedin.com/company/arm</a> <a href="http://www.facebook.com/ARMfans?ref=ts">www.facebook.com/ARMfans?ref=ts</a> <a href="http://twitter.com/#!/ARMEmbedded">@ARMEmbedded</a> <a href="http://www.arm.com">www.arm.com</a> </p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/11/many-core-processing-sharing-the-performance-load-for-greater-energy-efficiency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting rid of the denominator: Looking beyond performance per watt in embedded systems</title>
		<link>http://www.embedded-computing.com/articles/id/?5426</link>
		<comments>http://www.embedded-computing.com/articles/id/?5426#comments</comments>
		<pubDate>Fri, 11 Nov 2011 15:00:00 +0000</pubDate>
		<dc:creator>J. Scott Gardner, Advantage Engineering</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[about embedded systems]]></category>
		<category><![CDATA[Advantage Engineering]]></category>
		<category><![CDATA[amd processor]]></category>
		<category><![CDATA[amd processors]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[computer embedded]]></category>
		<category><![CDATA[cpu core 2]]></category>
		<category><![CDATA[cpu embedded]]></category>
		<category><![CDATA[cpu temperature monitoring]]></category>
		<category><![CDATA[cpu temperature software]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[dsp embedded systems]]></category>
		<category><![CDATA[embedded board]]></category>
		<category><![CDATA[embedded boards]]></category>
		<category><![CDATA[embedded cpu]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded motherboard]]></category>
		<category><![CDATA[embedded pc]]></category>
		<category><![CDATA[embedded processors]]></category>
		<category><![CDATA[embedded sbc]]></category>
		<category><![CDATA[embedded single board computer]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded software system]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system design projects]]></category>
		<category><![CDATA[embedded system design services]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system hardware design]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded system software design]]></category>
		<category><![CDATA[embedded system technology]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems processors]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[embedded systems technology]]></category>
		<category><![CDATA[embedded x86]]></category>
		<category><![CDATA[fanless embedded system]]></category>
		<category><![CDATA[Getting rid of the denominator]]></category>
		<category><![CDATA[itx motherboard]]></category>
		<category><![CDATA[low power embedded systems]]></category>
		<category><![CDATA[low power motherboard]]></category>
		<category><![CDATA[microprocessor embedded system]]></category>
		<category><![CDATA[mini itx motherboard]]></category>
		<category><![CDATA[mini itx motherboards]]></category>
		<category><![CDATA[monitoring cpu temperature]]></category>
		<category><![CDATA[pc embedded]]></category>
		<category><![CDATA[pico itx motherboard]]></category>
		<category><![CDATA[power architecture]]></category>
		<category><![CDATA[processor temperature monitor]]></category>
		<category><![CDATA[quad core workstations]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[software embedded systems]]></category>
		<category><![CDATA[virtualization white paper]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=ac755c04853a23d700e60e0bc632511e</guid>
		<description><![CDATA[For embedded systems requiring scalable processing, adaptive power management approaches provide peak performance efficiency within the embedded power envelope.]]></description>
			<content:encoded><![CDATA[<div id='story' class='body'><div class='body-text'>Designers typically select CPUs with the highest power efficiency to deliver the most computing performance per watt. But is performance per watt really the right metric for selecting the CPU in an embedded system? Using an adaptive power management approach shifts the control variable for performance from heat to electrical power, enabling adjustments that help deliver maximum performance within the embedded power envelope.</div>
			
			</div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/11/getting-rid-of-the-denominator-looking-beyond-performance-per-watt-in-embedded-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hot Chips will need more analog to support multicore</title>
		<link>http://www.dsp-fpga.com/articles/id/?5444</link>
		<comments>http://www.dsp-fpga.com/articles/id/?5444#comments</comments>
		<pubDate>Thu, 10 Nov 2011 15:00:00 +0000</pubDate>
		<dc:creator>Mike Demler, EE Daily News</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[analog dsp]]></category>
		<category><![CDATA[analog fpga]]></category>
		<category><![CDATA[EE Daily News]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=cbfcfe2fae1840ad5e63e45f25b565b5</guid>
		<description><![CDATA[A common thread that ran through the 23rd Hot Chips conference presentations was the integration of more complex and higher performance analog circuits as an absolute requirement.
			
			]]></description>
			<content:encoded><![CDATA[<div id='story' class='body'><div class='body-text'>A common thread that ran through the 23rd Hot Chips conference presentations was the integration of more complex and higher performance analog circuits as an absolute requirement.</div>
			
			</div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/11/hot-chips-will-need-more-analog-to-support-multicore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importance of Multicore SW Verification Plans</title>
		<link>http://tech.opensystemsmedia.com/multicore/2011/10/importance-of-multicore-sw-verification-plans/</link>
		<comments>http://tech.opensystemsmedia.com/multicore/2011/10/importance-of-multicore-sw-verification-plans/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 22:33:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AdvancedTCA Perspective]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[CompactPCI Perspective]]></category>
		<category><![CDATA[CompactPCI Report]]></category>
		<category><![CDATA[Software Corner]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?p=443</guid>
		<description><![CDATA[Adam Sherer with Cadence comments on multicore system development and using Palladium XP as part of a more compre]]></description>
			<content:encoded><![CDATA[<p>I got the opportunity to talk with Adam Sherer, Verification Product Management Director for Cadence Design Systems. He shared some information and insights into multicore software verification.</p>
<p>Adam started by providing some context on traditional single processor systems and traditional simulation techniques. &#8220;Traditional simulation involves component modeling, instantiating each component and performing some linear processing tests. This approach isn&#8217;t adequate for multicore software verification &#8211; when it comes to bus-functional models, the unpredictability of memory requests makes test branch sequence modelling sub-optimal. This problem also scales with the number of cores and also can be further complicated by any DMA capabilities.&#8221;</p>
<p>The verification plan for multicore can start with the traditional simulation and linear processing test, but must be augmented with something Cadence calls &#8220;hardware acceleration&#8221; testing where you fire up multiple cores and let them compete for resources. If this simulation can be &#8220;sped up&#8221;, it provides more opportunity to test multicore interactions more completely and thoroughly.</p>
<p>Enter the Cadence Palladium XP equipment. This is a platform that provides visibility to every node and every net in the system. &#8220;The biggest challenge in these complex &#8216;temporal&#8217; systems, they are all operating on their own, each with its own asynchronous input. Bugs may manifest themselves hundreds or thousands of cycles after the source of the problem occurs. Formal analysis won&#8217;t be data dependent, but you have to run them enough times to catch issues like this&#8221;.</p>
<p>The Palladium XP is a massive computer that Cadence initially developed for their own internal use, but is now commercially available.Palladium XP has a specific SW environment with the ability to interface with probes and use real-world data. It can also operate as an accelerator (i.e. rapidly run through simulations much faster than the actual execution) or an in-circuit emulator.</p>
<p>Cadence&#8217;s work has been focused on drivers, firmware, and operating systems. The &#8220;virtual system platform&#8221; model provides Transaction Level Modelling (TLM). Modeling can be done untimed &#8211; up to 10,000 times faster than normal simulation allows. This system can be used for hardware modeling then given to the SW team for the development of their drivers, all within the same environment.</p>
<p>More information on the Palladium XP is available here:</p>
<p><a href="http://www.cadence.com/products/sd/palladium_xp/pages/default.aspx">http://www.cadence.com/products/sd/palladium_xp/pages/default.aspx</a></p>
<p>Adam markets the UVM and the multi-language verification simulator for Cadence, tapping 20 years of experience in verification and software engineering including roles in marketing, product management, applications engineering, and R&amp;D. Adam is the secretary of the Accellera Verification IP Technical Subcommittee (VIPTSC) which has standardized the UVM.  Adam blogs on verification subjects at <a href="http://www.cadence.com/community/fv/">http://www.cadence.com/community/fv/</a> and tweets on them @SeeAdamRun.</p>
<p>* MS EE from the University of Rochester, with research published in the IEEE Transactions on CAD</p>
<p>* BS EE and BA CS from SUNY Buffalo</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/10/importance-of-multicore-sw-verification-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using virtualization to maximize multicore SoC performance</title>
		<link>http://www.embedded-computing.com/articles/id/?5379</link>
		<comments>http://www.embedded-computing.com/articles/id/?5379#comments</comments>
		<pubDate>Wed, 12 Oct 2011 15:00:00 +0000</pubDate>
		<dc:creator>Jim Ready, MontaVista Software MontaVista MontaVista Software</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cavium octeon]]></category>
		<category><![CDATA[computer operating systems comparison]]></category>
		<category><![CDATA[data center virtualization]]></category>
		<category><![CDATA[device driver development]]></category>
		<category><![CDATA[device driver programming]]></category>
		<category><![CDATA[gnu linux operating system]]></category>
		<category><![CDATA[host virtual machine]]></category>
		<category><![CDATA[hypervisor virtualization]]></category>
		<category><![CDATA[hypervisor-based virtualization]]></category>
		<category><![CDATA[lenix operating system]]></category>
		<category><![CDATA[linux open source operating system]]></category>
		<category><![CDATA[linux operating system]]></category>
		<category><![CDATA[linux operating system features]]></category>
		<category><![CDATA[linux virtual machines]]></category>
		<category><![CDATA[migrate virtual machine]]></category>
		<category><![CDATA[MontaVista Software]]></category>
		<category><![CDATA[octeon processor]]></category>
		<category><![CDATA[open source linux operating system]]></category>
		<category><![CDATA[open source operating system linux]]></category>
		<category><![CDATA[open source virtualisation]]></category>
		<category><![CDATA[open source virtualization software]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[operating system virtualization]]></category>
		<category><![CDATA[operating systems linux]]></category>
		<category><![CDATA[operating systems open source]]></category>
		<category><![CDATA[realtime operating system]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[run multiple virtual machines]]></category>
		<category><![CDATA[running multiple operating systems]]></category>
		<category><![CDATA[running multiple virtual machines]]></category>
		<category><![CDATA[server consolidation virtualization]]></category>
		<category><![CDATA[server virtualization]]></category>
		<category><![CDATA[server virtualization software]]></category>
		<category><![CDATA[software development in linux]]></category>
		<category><![CDATA[software development linux]]></category>
		<category><![CDATA[software development on linux]]></category>
		<category><![CDATA[storage virtualization technology]]></category>
		<category><![CDATA[use of virtualization]]></category>
		<category><![CDATA[virtual machine hypervisor]]></category>
		<category><![CDATA[virtual machine operating systems]]></category>
		<category><![CDATA[virtual machine workstation]]></category>
		<category><![CDATA[virtual machines operating systems]]></category>
		<category><![CDATA[virtualbox guest additions]]></category>
		<category><![CDATA[virtualisation server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[virtualization applications]]></category>
		<category><![CDATA[virtualization disaster recovery]]></category>
		<category><![CDATA[virtualization for linux]]></category>
		<category><![CDATA[virtualization hardware]]></category>
		<category><![CDATA[virtualization hypervisor]]></category>
		<category><![CDATA[virtualization of servers]]></category>
		<category><![CDATA[virtualization on linux]]></category>
		<category><![CDATA[virtualization server]]></category>
		<category><![CDATA[virtualization servers]]></category>
		<category><![CDATA[virtualization software]]></category>
		<category><![CDATA[virtualization support]]></category>
		<category><![CDATA[virtualization technologies]]></category>
		<category><![CDATA[virtualization virtual machine]]></category>
		<category><![CDATA[virtualization white paper]]></category>
		<category><![CDATA[virtualized server]]></category>
		<category><![CDATA[virtualized servers]]></category>
		<category><![CDATA[what is virtual machine in operating system]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=6ef6ad28e3bd19a8847529bb04187977</guid>
		<description><![CDATA[Using virtualization techniques to leverage the potential of multicore SoCs.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5379%2Ffigures%2F3" />Multicore Systems-on-Chip are multiplying the difficulties software developers face in enabling applications to scale linearly with available cores and fully leverage the increasing amounts of processing power available. Using Linux-based virtualization methodologies can meet the high-level requirements of multicore environments while avoiding increases in cost and complexity.</h3><span id="more-440"></span><span class='body'><p class="body-text"><span class="interviewer">Whether software developers like it or not, and whether they&#8217;re prepared for it or not, virtually every semiconductor maker worth their salt is producing multicore Systems-on-Chip (SoCs). These SoCs typically pair two or more CPU cores with additional application-specific hardware accelerators to provide a complete system. For example, Cavium Networks, NetLogic Microsystems, and Freescale Semiconductor produce SoCs for network processing, while Texas Instruments and Broadcom make SoCs for digital media devices. </span></p>  <p class="body-text"><span class="interviewer">For software folks, this presents the interesting challenge of enabling applications to obtain all the processing power available from these multicore SoC environments. How can developers make sure their applications scale linearly with the available cores, as well as fully utilize the other SoC hardware components such as media accelerators and packet engines? To be clear, the scalability question is still a real science project for many applications; however, there are systems to build and products to ship, so developers can&#8217;t wait for the theoretically perfect solution. </span></p>  <p class="body-text"><span class="interviewer">In the past year, MontaVista Software examined numerous customer use cases in a wide range of applications including network processing, digital TV, in-vehicle infotainment, super low-power server Web hosting, and more. The goal was to understand how a Linux-based software solution could make full use of the underlying SoC hardware across a wide range of application requirements. The study identified the following high-level requirements that any solution must meet.</span></p>  <p class="heading-2"><span class="interviewer">Multicore support</span></p>  <p class="body-text"><span class="interviewer">The demands of modern embedded systems are hastening the adoption of multicore SoCs. These demands are further accentuated by the requirements to run multiple systems simultaneously; thus, the solution must provide an efficient way of using and managing multicore environments.</span></p>  <p class="heading-2"><span class="interviewer">Security</span></p>  <p class="body-text"><span class="interviewer">Anything downloaded to a device is insecure by definition. The solution must effectively isolate anything downloaded from the core device functions, and the downloaded applications must not be allowed to contaminate other applications. </span></p>  <p class="heading-2"><span class="interviewer">Resource congestion</span></p>  <p class="body-text"><span class="interviewer">Downloaded applications must be prevented from hogging system resources. The goal is to effectively share resources such as memory, CPU time, and I/O. This sharing must allow more important system functions to have priority over less important downloaded applications.</span></p>  <p class="heading-2"><span class="interviewer">Foreign system integration</span></p>  <p class="body-text"><span class="interviewer">Many environments run on top of a Linux kernel. However, these environments might require different userland libraries, as well as different kernel patches. For example, the Android system has its own device drivers and kernel patches. Ideally, the system could run any userland that runs on a Linux kernel. The kernel patches and userlands associated with these environments must be integrated with security and resource sharing in mind.</span></p>  <p class="body-text"><span class="interviewer">This analysis led to the development of a Linux-based architecture that maximizes the underlying power of today&#8217;s powerful multicore SoCs.</span></p>  <p class="heading-1"><span class="interviewer">Architecture overview</span></p>  <p class="body-text"><span class="interviewer">To understand the overall architecture of this software, it is necessary to know a bit about modern Operating System (OS) environments, most notably virtualization technology. But be careful; there&#8217;s a lot of hype around virtualization (or, as we like to say, a lot of hype around hypervisors). </span></p>  <p class="body-text"><span class="interviewer">Virtualization is a method for dividing a computer&#8217;s resources into multiple execution environments. There are three major categories of virtualization in use today, with the key difference among them being the layer where virtualization occurs:</span></p>  <ul>  <li class="bullets">Full virtualization and paravirtualization: These types of virtualization are&nbsp;used to host multiple guest OSs that are isolated from one another. While&nbsp;highly functional, the performance (without a great deal of optimization) is very low due to the overhead of the hypervisor and multiple OSs. Examples include QEMU, Kernel-based Virtual Machine (KVM), Zen, and VMware.</li>  <li class="bullets">OS resource virtualization: This type of virtualization is used to isolate and scale applications using a single OS. The advantage here is a single OS and lower overhead, typically less than 1 percent in most cases. Because there is so little overhead, the ability to scale and/or optimize performance is a huge benefit. Examples include Linux Containers and BDS Jails.</li>  <li class="bullets">Hardware segmentation (Asymmetric Multi-Processing or AMP): This &nbsp;high-performance configuration dedicates hardware to specific applications running in user mode for maximum performance. This can be achieved using a simple runtime executive or leveraging OS resource virtualization and processor core affinity capability to dedicate cores and I/O to processes with almost no overhead.</li>  </ul>  <p class="body-text"><span class="interviewer">These types of virtualization offer different performance characteristics, require different setup and maintenance overhead, introduce unique levels of complexity into the runtime environment, and address different problems. </span></p>  <p class="body-text"><span class="interviewer">While the industry is currently focused on pushing fully virtualized hypervisors as the one-size-fits-all solution to multicore optimization, the reality is that embedded developers need a range of options that can be tailored to specific application needs. Developers will require some combination of one or more of these virtualization technologies to deliver products that fit within hardware constraints and meet design performance characteristics. In short, the trick is to match the application with the right OS services to meet the overall system requirements, which can include performance, reliability, and security.</span></p>  <p class="body-text"><span class="interviewer">MontaVista provides three methods of virtualization based on nonproprietary, open-source Linux technology and supported across multiple processor architectures. Because it is a single runtime, there is one compiler and one set of tools that can be used for any use case or combination of use cases. Figure 1 shows an overall picture of this approach. These three methods are:</span></p>  <ul>  <li class="bullets">KVM Hypervisor (full virtualization)</li>  <li class="bullets">Linux Containers (OS resource virtualization)</li>  <li class="bullets">MontaVista Bare Metal Engine (OS resource virtualization and SoC hardware segmentation)</li>  </ul>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5379%2Ffigures%2F1" title="One compiler and one set of tools can be used for any use case or combination of use cases with MontaVista&amp;#8217;s three methods of virtualization.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5379%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> One compiler and one set of tools can be used for any use case or combination of use cases with MontaVista&#8217;s three methods of virtualization.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="heading-1"><span class="interviewer">Microserver use case</span></p>  <p class="body-text"><span class="interviewer">The idea behind microservers is to utilize smaller, more energy-efficient processors to lower the physical and energy consumption footprint of a class of Web-centric IT applications. For certain workloads, several low-power processors can be more efficient than fewer, more powerful processors. Cavium Octeon processors and those from other semiconductor suppliers are well-suited to meet the density and power efficiency requirements underlying the microserver concept on the basis of the power efficiency of the cores themselves. These SoCs also include dedicated hardware to handle the front-end security and encryption/decryption processing that Web-based applications require.</span></p>  <p class="body-text"><span class="interviewer">From a software perspective, MontaVista Linux Containers and Bare Metal Engine technology help complete the picture. Containers are used to provide OS-level virtualization, allowing very efficient virtualization of the workload requirements. For example, Containers can be used to host thousands of independent websites, each securely isolated from each other. Containers allow the precise control of runtime resources allocated to each container, so each website can be limited to the performance levels the customer has purchased. Or, more importantly, a rogue website can be stopped from over consuming resources using the same mechanisms, thus thwarting a denial-of-service type of attack. </span></p>  <p class="body-text"><span class="interviewer">Bare Metal Engine provides the runtime environment for the security and encryption/decryption operations each of these hosted websites requires. For example, a 32-core SoC can utilize most of the cores for application processing with a few dedicated to packet processing, all controlled by one Linux instance.</span></p>  <p class="heading-1"><span class="interviewer">Linux offers a simple solution</span></p>  <p class="body-text"><span class="interviewer">It is a widely held misconception that a combination of Linux and either a Real-Time Operating System (RTOS) or simple runtime environment must be utilized to fully realize the high performance available with multicore processors. Fueling this misconception is the thought that Linux itself is incapable of meeting the requirements because it is too big, too slow, and not real-time. This fallacy also drives the requirement that hypervisors and/or virtualization must mediate and isolate the different runtime environments and facilitate intercommunication among them. Often it is the RTOS vendors themselves who perpetuate this erroneous belief. </span></p>  <p class="body-text"><span class="interviewer">In the end, these misconceptions about Linux drive added complexity and costs into the development process. Complexity increases due to multiple runtime and development environments (one each for Linux, the RTOS, and possibly the hypervisor). Costs increase because of royalties for the proprietary RTOS and hypervisor, not to mention the added costs created by the development complexity itself, with more developers needed for a longer period of time.</span></p>  <p class="body-text"><span class="interviewer">The approach to use Linux everywhere and fix it where it might not meet some requirements results in a single OS environment, single tool chain, and common development and debugging tools for all aspects of the application. As Einstein said, &#8220;Make everything as simple as possible, but not simpler.&#8221;</span>  </p>  <p class="figures"> 		<figure>
 		<table width="260" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=870,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5379%2Ffigures%2F2" title="ECD in 2D: Jim Ready discusses the technologies available for virtualization in an embedded Linux environment and explains why virtualization involves a lot more than simply running different OSs in a hypervisor. Use your smartphone, scan this code, watch a video: http://opsy.st/r1owBS. ART">
					<img width="250" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=250&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5379%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption>ECD in 2D: Jim Ready discusses the technologies available for virtualization in an embedded Linux environment and explains why virtualization involves a lot more than simply running different OSs in a hypervisor. Use your smartphone, scan this code, watch a video: http://opsy.st/r1owBS. </figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="author-bio"><span class="author-bio-name">Jim Ready</span> is the CTO of MontaVista Software and a recognized authority in the embedded systems and real-time software industry. The cofounder of Ready Systems, he developed the first commercially viable RTOS product: the VRTX real-time kernel. Jim invented the category of embedded Linux commercialization in 1999 when he founded MontaVista Software to provide the Linux OS to the&nbsp;embedded systems market and embedded system expertise to the open-source Linux community.</p>  <p class="author-bio"><span class="author-bio-name">Patrick MacCartee</span> is a director of product management at MontaVista Software in charge of hardware enablement, pricing, and channel strategies. Patrick has worked in high tech for more than 10 years at Intel and MontaVista Software. He&nbsp;is also responsible for managing the MontaVista Linux 6 and Carrier Grade&nbsp;Edition products.</p>  <p class="contact-info">MontaVista Software <span class="hyperlink"><a href="mailto:marketing@mvista.com">marketing@mvista.com</a> <a href="http://twitter.com/#!/mvista">@mvista</a></span> <span class="hyperlink"><a href="http://www.mvista.com">www.mvista.com</a> </span></p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/10/using-virtualization-to-maximize-multicore-soc-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Car infotainment systems gear up for future challenges</title>
		<link>http://www.embedded-computing.com/articles/id/?5381</link>
		<comments>http://www.embedded-computing.com/articles/id/?5381#comments</comments>
		<pubDate>Wed, 12 Oct 2011 15:00:00 +0000</pubDate>
		<dc:creator>Staff, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Strategies]]></category>
		<category><![CDATA[applications for mobile devices]]></category>
		<category><![CDATA[applications j2me]]></category>
		<category><![CDATA[applications mobile]]></category>
		<category><![CDATA[apps j2me]]></category>
		<category><![CDATA[automobile manufacturing industry]]></category>
		<category><![CDATA[best mobile app developers]]></category>
		<category><![CDATA[brew mobile application]]></category>
		<category><![CDATA[brew mobile apps]]></category>
		<category><![CDATA[develop mobile app]]></category>
		<category><![CDATA[develop mobile applications]]></category>
		<category><![CDATA[develop mobile apps]]></category>
		<category><![CDATA[developing mobile application]]></category>
		<category><![CDATA[developing mobile apps]]></category>
		<category><![CDATA[development wireless]]></category>
		<category><![CDATA[egl opengl es]]></category>
		<category><![CDATA[embedded computing design]]></category>
		<category><![CDATA[fleet management telematics]]></category>
		<category><![CDATA[gestural interfaces]]></category>
		<category><![CDATA[In-vehicle infotainment systems]]></category>
		<category><![CDATA[j2me applications]]></category>
		<category><![CDATA[j2me apps]]></category>
		<category><![CDATA[j2me developers]]></category>
		<category><![CDATA[j2me mobile application]]></category>
		<category><![CDATA[j2me mobile application development]]></category>
		<category><![CDATA[j2me mobile applications]]></category>
		<category><![CDATA[j2me mobile apps]]></category>
		<category><![CDATA[j2me mobile phone]]></category>
		<category><![CDATA[j2me mobile phones]]></category>
		<category><![CDATA[mobile app developer]]></category>
		<category><![CDATA[mobile app developers]]></category>
		<category><![CDATA[mobile app platform]]></category>
		<category><![CDATA[mobile app programming]]></category>
		<category><![CDATA[mobile application development tool]]></category>
		<category><![CDATA[mobile application porting]]></category>
		<category><![CDATA[mobile applications developer]]></category>
		<category><![CDATA[mobile applications developers]]></category>
		<category><![CDATA[mobile applications for business]]></category>
		<category><![CDATA[mobile applications platform]]></category>
		<category><![CDATA[mobile applications programming]]></category>
		<category><![CDATA[mobile applications services]]></category>
		<category><![CDATA[mobile apps developer]]></category>
		<category><![CDATA[mobile apps developers]]></category>
		<category><![CDATA[mobile phone app developers]]></category>
		<category><![CDATA[mobile phone application developers]]></category>
		<category><![CDATA[mobile software developer]]></category>
		<category><![CDATA[neutrino qnx]]></category>
		<category><![CDATA[neutrino rtos]]></category>
		<category><![CDATA[opengl es egl]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[osek operating system]]></category>
		<category><![CDATA[programming mobile applications]]></category>
		<category><![CDATA[qnx rtos]]></category>
		<category><![CDATA[realtime operating systems]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[symbian application developers]]></category>
		<category><![CDATA[telematics automotive]]></category>
		<category><![CDATA[telematics vehicle]]></category>
		<category><![CDATA[telematics vehicle tracking]]></category>
		<category><![CDATA[top mobile app developers]]></category>
		<category><![CDATA[vehicle telematics]]></category>
		<category><![CDATA[wireless development]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=90eabe5922a7aadcfc6235a983b888d6</guid>
		<description><![CDATA[Andy Gryc of QNX Software Systems and Paul Sykes of Freescale Semiconductor discuss how their companies' technological parternership has them dealing with the In-Vehicle Infotainment (IVI) system designs of tomorrow.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="11" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&f=png&h=320&w=600&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F11" />Earlier this summer, Freescale Semiconductor and QNX Software Systems announced their strategic partnership for jointly developing embedded solutions, including in-vehicle digital instrument clusters that enable graphics deployment and updates across multiple vehicle lines. Andy and Paul discuss how their respective companies are addressing the challenges of developing automotive infotainment systems and describe how scalable platforms &#8211; particularly those based on multicore architectures &#8211; can simplify the design process.</h3><span id="more-475"></span><span class='body'><p class="body-text"> </p>  <p class="interview-question"><span class="interviewer">ECD:</span> What are the biggest challenges&nbsp;your customers talk to you about when looking to design automotive infotainment units?</p>  <p class="body-text"><span class="interviewee">GRYC:</span> Automakers and Tier 1 automotive suppliers face many challenges, but implementing connectivity in mobile devices has become one of the most prevalent. Done right, mobile connectivity can help differentiate a vehicle and boost its desirability. But it also raises several issues:</p>  <ul>  <li class="bullets"><span class="bold">User satisfaction versus driver&nbsp;distraction:</span> How do you design an infotainment system that&nbsp;can leverage the immense variety of apps and Internet services&nbsp;available on mobile devices&nbsp;while minimizing driver distraction?</li>  <li class="bullets"><span class="bold">Time to market:</span> How do you ensure that, by the time the car becomes available to the general public, its device connectivity isn&#8217;t already obsolete?</li>  <li class="bullets"><span class="bold">Time in market:</span> Given that an&nbsp;automobile&#8217;s life cycle is 10x&nbsp;longer than that of the average mobile device, how do you keep the&nbsp;car relevant? How do you ensure it continues to work with&nbsp;the&nbsp;latest&nbsp;mobile apps and services?</li>  </ul>  <p class="body-text"><span class="interviewee">Sykes:</span> In addition to the very important challenges related to mobile connectivity, customers want to balance the right set of features with the following system parameters:</p>  <ul>  <li class="bullets"><span class="bold">Performance:</span> Given the growing&nbsp;sophistication of in-vehicle connectivity, applications, and Human-Machine Interfaces (HMIs), how can the customer ensure that the&nbsp;system will have enough performance to support the features required?</li>  <li class="bullets"><span class="bold">Cost:</span> An infotainment platform might need to support several configurations to span across a broad portfolio of vehicles. How do you optimize the development and bill of materials cost of the platform while meeting the unique needs of each vehicle? </li>  <li class="bullets"><span class="bold">Power consumption:</span> How can the customer minimize power consumption to offset an ever-increasing number of vehicle engine control units and the hybrid vehicle trend?</li>  </ul>  <p class="interview-question"><span class="interviewer">ECD:</span> As the market matures and end-user expectations grow, user interfaces in automotive infotainment systems are becoming richer and more graphics-intensive. What&#8217;s being done to keep up with these requirements?</p>  <p class="body-text"><span class="interviewee">Gryc:</span> Infotainment system designers are tapping into multiple standards and technologies, including Adobe AIR, HTML5, and OpenGL ES. Problem is, none of these can address every requirement. Thus, we provide a &#8220;universal platform&#8221; that supports these various technologies simultaneously. That way, designers can take a best-of-breed approach, blending apps and user interface components based on these technologies, all on a single display. It comes down to flexibility; rather than force our customers into an either/or approach, with all its attendant risks, we have opted for a both/and model that accommodates multiple environments.</p>  <p class="body-text"><span class="interviewee">Sykes:</span> Graphical user interfaces in the vehicle are becoming more popular. As consumer devices such as tablets are introduced with ever-increasing graphical user interface capabilities, consumers expect the same experience in their vehicles. Freescale implements the latest graphics and multimedia technologies into our products, such as multiformat 1080p video encoding/decoding and high-performance graphics processing units with the latest graphics API standards such as OpenGL/GL ES, OpenVG, and OpenCL, and tests the products&#8217; ability to withstand the harsh automotive environment for many years. In addition, Freescale works with ecosystem partners like QNX Software Systems to ensure that the software running on our products can take advantage of the hardware capabilities.</p>  <p class="interview-question"><span class="interviewer">ECD:</span> With today&#8217;s car owners desiring to bring their connected lifestyle to the automobile, what are the challenges to developing systems that easily integrate with smartphones and tablets? How are Freescale and QNX Software Systems addressing these challenges? </p>  <p class="body-text"><span class="interviewee">Gryc:</span> Automakers need to concentrate on designing upgradable, future-proof systems that keep pace with the rapid evolution of mobile devices and applications. More specifically, they must create a system that can reliably and securely support new or upgraded software without affecting the system&#8217;s core functions. With this in mind, we equipped the QNX CAR Application Platform with several capabilities, including:</p>  <ul>  <li class="bullets">Firewall and safety features, such as advanced memory protection to contain faults and adaptive time partitioning to prevent new applications from starving core processes of CPU time.</li>  <li class="bullets">A highly modular architecture that simplifies software updates using Firmware Over The Air (FOTA) techniques (see Figure 1).</li>  </ul>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F1" title="To keep pace with the rapid evolution of mobile content and services, an infotainment platform must support fast, reliable updates. By using a delta file, Firmware Over The Air (FOTA) can minimize the bandwidth that updates require.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> To keep pace with the rapid evolution of mobile content and services, an infotainment platform must support fast, reliable updates. By using a delta file, Firmware Over The Air (FOTA) can minimize the bandwidth that updates require.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text"><span class="interviewee">Sykes:</span> Mobile devices are integrated into the vehicle environment in various ways. For example, an iPhone or iPad might require a USB interface, while many smartphones use a Bluetooth interface. This integration poses many challenges, including:</p>  <ul>  <li class="bullets">How to account for future devices or software upgrades for existing devices.</li>  <li class="bullets">How to protect the in-vehicle system&nbsp;from corruption or viruses&nbsp;while interfacing to portable devices.</li>  </ul>  <p class="body-text">Freescale solutions offer the hardware and foundation software required for interfacing to a multitude of existing and future mobile devices, whether they utilize a wired or wireless interface. However, the ability to interface is only part of the challenge. It is also important to have available processing power to support future needs, which could include connections to other cars or to the transportation infrastructure. Once the interface is established, it is also necessary to ensure that it is secure. The i.MX processor family offers features such as specialized hardware for software version control and trusted image execution that can help protect the system from undesired software effects.</p>  <p class="interview-question"><span class="interviewer">ECD:</span> What are some of the key innovations both companies offer to simplify the design process for auto engineers? And how do you help the general application development community keep cars fresh with new&nbsp;applications?</p>  <p class="body-text"><span class="interviewee">Gryc:</span> For auto engineers, it&#8217;s about creating a platform that has all the key software technologies integrated into it. In essence, we give them an out-of-the-box infotainment system that has the pieces they need &#8211; Operating System (OS) platform, multimedia engine, graphics frameworks, networking stacks, and so on &#8211; to get their systems set up quickly. </p>  <p class="body-text">For the application developer community, it&#8217;s about providing support for HTML5, Adobe AIR, and other standards so that developers have the flexibility to apply their expertise to automotive systems, regardless of the application or the auto manufacturer for which the application is designed. For example, because the BlackBerry PlayBook is based on the QNX Neutrino OS, developers who create applications for the BlackBerry PlayBook could have a natural migration path between application development on the PlayBook and automotive systems based on QNX Neutrino.</p>  <p class="body-text"><span class="interviewee">Sykes:</span> It is also important to provide scalable development solutions to the customer. While some chipmakers focus their solutions on a particular segment of the infotainment market, the newest i.MX 6 family of application processors can cover the entire range of solutions from entry to high end while maintaining software compatibility (see Figure&nbsp;2). The entire family is based on standard ARM processors in single and multicore configurations and shares common footprints and pin configurations. Hardware can be designed without worrying if more or less performance will be needed later.</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F2" title="Freescale&amp;#8217;s i.MX 6 series of single-, dual-, and quad-core processors enable next-generation automotive infotainment with a powerful, scalable platform for multimedia and display applications.">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 2:</b> Freescale&#8217;s i.MX 6 series of single-, dual-, and quad-core processors enable next-generation automotive infotainment with a powerful, scalable platform for multimedia and display applications.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text">Prior to hardware development, the software development process can start with Freescale&#8217;s affordable automotive-focused reference platforms that enable key system functions, offer expandability to support new functions, and include the software base that allows the customer to start development right away. </p>  <p class="interview-question"><span class="interviewer">ECD:</span> What has changed in automotive infotainment that makes multicore CPU architectures so attractive to developers today, and how do Freescale and QNX Software Systems take advantage of these architectures? </p>  <p class="body-text"><span class="interviewee">Gryc:</span> Simply put, there&#8217;s a lot more going into cars, from video codecs to 3D navigation applications to high-level languages with virtualized execution environments, all of which have a serious appetite for CPU cycles. </p>  <p class="body-text">Multicore addresses this demand for greater processing power by allowing multiple applications to run in parallel. For example, in a multimedia head unit, you could dedicate one core to running a compute-intensive process such as an HTML5 browser and use the other cores to run the remaining processes. Or you could run in full Symmetric Multi-Processing (SMP) mode and allow any process to run on any available core. </p>  <p class="body-text">From a software perspective, the QNX Neutrino RTOS makes multicore dead simple. Because QNX Neutrino employs a true microkernel architecture, only the OS kernel needs SMP awareness and supporting logic. Applications, drivers, networking stacks, and other multithreaded processes can automatically take advantage of multiple cores without having to be rewritten or redesigned because the kernel handles the details of scheduling threads on each core. Moreover, our visualization tools can analyze how the multicore system behaves as a whole. This approach offers deeper insight into the complex system interactions typical of multicore designs and allows developers to focus their efforts on areas that yield the greatest increase in parallelism and performance. </p>  <p class="body-text"><span class="interviewee">Sykes:</span> Multicore CPU solutions offer the benefits that Andy described while consuming less power than a single core CPU with similar performance. This reduction in power consumption is important for all vehicles, but can be critical in hybrids. </p>  <p class="body-text">While some markets focus on achieving the highest performance for a particular application, infotainment applications can greatly benefit from multicore CPUs because they require multiple simultaneous processes such as speech, audio, multimedia, navigation, and HMI. Single applications running across multiple cores will experience diminishing returns as the number of cores increases. In contrast, multiple applications in an infotainment system can be run as unique processes to optimize loading and take full advantage of each core&#8217;s available performance. As a result, the infotainment system achieves more processing power with better software load balancing, as well as lower power consumption. </p>  <p class="figures"> 		<figure>
 		<table width="260" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure3', 'width=875,height=870,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure3" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F3" title="ECD in 2D: Andy explains how the Terminal Mode specification enables car infotainment systems to access new mobile phone apps as they become available by replicating the phone&amp;#8217;s screen on the car&amp;#8217;s controls or touch screen. Use your smartphone, scan this code, watch a video: http://opsy.st/pZUDe7. ART">
					<img width="250" border="0" alt="Figure3" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=250&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5381%2Ffigures%2F3" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption>ECD in 2D: Andy explains how the Terminal Mode specification enables car infotainment systems to access new mobile phone apps as they become available by replicating the phone&#8217;s screen on the car&#8217;s controls or touch screen. Use your smartphone, scan this code, watch a video: http://opsy.st/pZUDe7. </figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="author-bio"><span class="bold">Andy Gryc</span> is the automotive product marketing manager at QNX Software Systems. He has been a software developer and designer for more than 20 years. Prior to joining QNX Software Systems, he worked as the lead embedded software architect for&nbsp;GM OnStar, designed and implemented a speech recognition engine, and worked on software for palmtops and notebooks. </p>  <p class="author-bio"><span class="bold">Paul Sykes </span>is a marketing manager with Freescale&#8217;s Driver Information Systems organization. He has more than 15 years experience in the semiconductor industry, including product development, program management, and marketing positions. He is currently focused on the automotive telematics, infotainment, and driver information application spaces. </p>  <p class="contact-info"><span class="bold">QNX Software Systems </span>800-676-0566  <span class="hyperlink"><a href="mailto:info@qnx.com">info@qnx.com</a> <a href="http://www.facebook.com/pages/QNX-Software-Systems/92022217198">www.facebook.com/pages/QNX-Software-Systems/92022217198</a>  <a href="http://twitter.com/#!/QNX_News">@QNX_News</a>, <a href="http://twitter.com/#!/QNX_Paul">@QNX_Paul</a> <a href="http://www.qnx.com">www.qnx.com</a> </span></p>  <p class="contact-info"><span class="bold">Freescale Semiconductor </span><span class="hyperlink"><a href="http://www.facebook.com/freescale">www.facebook.com/freescale</a> <a href="http://twitter.com/#!/Freescale">@Freescale</a></span><span class="bold"> </span><span class="hyperlink"><a href="http://www.freescale.com">www.freescale.com</a></span></p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/10/car-infotainment-systems-gear-up-for-future-challenges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded virtualization enables scalability of real-time applications on multicore</title>
		<link>http://www.embedded-computing.com/articles/id/?5307</link>
		<comments>http://www.embedded-computing.com/articles/id/?5307#comments</comments>
		<pubDate>Mon, 08 Aug 2011 15:00:00 +0000</pubDate>
		<dc:creator>Kim Hartman, TenAsys Corporation</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Strategies]]></category>
		<category><![CDATA[computer board]]></category>
		<category><![CDATA[embeded system]]></category>
		<category><![CDATA[microcontrollers]]></category>
		<category><![CDATA[pc104]]></category>
		<category><![CDATA[pc104 computer]]></category>
		<category><![CDATA[single board computer]]></category>
		<category><![CDATA[TenAsys Corporation]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/multicore/?guid=50fad6993282316a7637c84a4eb2b3f4</guid>
		<description><![CDATA[Embedded virtualization combats the multicore complex: Global object networking allows real-time processor scalability.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract"><img alt="4" style="margin: 4px 17px 4px 0px; border: 1px solid #efefef;" align="left" width="225" border="0" src="http://i.opensystemsmedia.com/?zc=1&f=png&h=200&w=225&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F4" />The advent of multicore processor technology has the potential to revolutionize the way embedded systems are designed. While different technologies are being developed to solve the problem of distributing application functionality among the processors on a multicore chip, the most promising emerging technology from an embedded systems perspective is embedded virtualization. Using global object networking, embedded designers can scale applications with a software platform that maintains determinism, enables upgradability, and reduces development costs.</h3><span id="more-410"></span><span class='body'><p class="body-text-"></p>  <p class="body-text-">Embedded virtualization has several positive implications for OEMs. For example, once there is a means for splitting up applications to run on multiple cores while maintaining determinism, the solution can subsequently enable real-time applications to scale the number of cores they use, upward or downward. With scalability, OEMs can offer a range of price/performance options for their products without requiring changes to the&nbsp;software.</p>  <p class="body-text-">Virtualization is not a new concept in computer science, but it has gathered new interest with the advent of multicore processors. Though virtualization is recognized as a way to keep multiple processor cores busy, it&#8217;s important to note that most types of server or client virtualization are not designed to meet the needs of time-critical embedded processing. These approaches to virtualization most often treat all processors on a multicore chip the same way. In these systems, a single Operating System (OS) assigns tasks to processors as they become available in an attempt to keep all processors as heavily loaded as possible with processing tasks. </p>  <p class="body-text-">Server and client virtualization typically virtualize all hardware including the I/O interfaces. When an I/O interface needs servicing, the Virtual Machine Monitor (VMM) fields the request and passes the results to the OS clients it is supporting. There is no way to ensure that a particular OS client is loaded when an I/O that belongs to that client requires service, nor is there a global way of associating a particular I/O with a client OS and the application running on it. Consequently, there is no way to guarantee exactly how much time will be required to handle an I/O event; hence, this approach is not appropriate for handling real-time processing in an embedded system.</p>  <p class="body-text-">Embedded system designers want direct control of the system to obtain determinism and consistent performance. While it is desirable to balance overall processor utilization and keep multicore processors as busy as possible, this is not the top priority. First and foremost, embedded designers are looking for software technology that helps them maintain determinism while adding features and/or reducing the cost of their OEM products.</p>  <p class="body-text-">Embedded designers are looking for a software platform that enables them to combine OSs of different types so that processing can be optimized for the tasks at hand &#8211; for example, real-time OSs to handle critical I/O timing requirements and General-Purpose OSs (GPOSs) to leverage COTS graphics-rich applications that run human-directed functions. They are also looking for solutions to scale applications so they can provide different products using the same application code base. This reduces engineering development cost, improves time to market, and more importantly, enables new products to be based on tried and proven software that can be continuously upgraded in performance and reliability.</p>  <p class="heading-1">Embedded virtualization preserves determinism</p>  <p class="body-text-">For an embedded application to be deterministic, it must be engineered as such from the inception of the development project. Determinism is not something that can be added at the end. Special considerations must be made to ensure that application threads have direct control of the I/O interfaces on which they depend. </p>  <p class="body-text-">Figure 1 shows a pick-and-place assembly system in which TenAsys&#8217; INtime for Windows Real-Time Operating Systems (RTOSs) are hosted on three cores of a quad-core processor and the Human Machine Interface (HMI) is hosted on the fourth core running Microsoft Windows. The real-time tasks running on different CPUs communicate when required via the global object network. This automated assembly system includes three real-time subsystems: a vision system that guides an assembly robot, the multi-axis robot, and the material transport system that indexes components into place for assembly and then carries off assembled units. The ideal way to develop and debug this type of application to ensure that each component performs as reliably as required is to split the application into separate components. </p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=875,height=750,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F1" title="Embedded systems can save cost and preserve real-time responsiveness while adding features by hosting multiple OSs on a multicore processor.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 1:</b> Embedded systems can save cost and preserve real-time responsiveness while adding features by hosting multiple OSs on a multicore processor.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text-">For example, the HMI would be a separate application module that might run in a non-real-time environment such as Windows. This requires an OS environment that can partition the platform resources &#8211; I/O, memory, interrupts, and CPU core (in the case of a multicore processor platform) &#8211; to allow the application modules to run totally independently from each other. An embedded virtualization environment supports this, allowing different real-time tasks to run on specific processor cores. The operating software partitions physical I/O interfaces so that an interrupt coming from one of the devices only interrupts the processor handling that device. This ensures predictable response times for handling real-time events.</p>  <p class="body-text-">The hosting of multiple OS environments on a multicore chip is managed either by software called an<span class="interviewer"> </span><span class="italics">embedded virtualization manager</span> or by special embedded virtualization functionality contained in the RTOS.</p>  <p class="body-text-">Embedded virtualization can be implemented in different ways, depending on the amount of hardware virtualization support provided by the processor. Paravirtualization solutions use software techniques to modify the guest OSs, allowing them to work side by side with-out affecting each other or compromising the system&#8217;s real-time responsiveness. Implementations provide varying degrees of platform partitioning and have typically been limited to running two OSs at a time on a platform &#8211; an RTOS and a GPOS. Some implementations have evolved to the point where the GPOS doesn&#8217;t require any modification and the latest version of the GPOS is readily supported. This is a real plus when the object of coupling the GPOS to the RTOS is to make use of legacy RTOS application software as is, without any modification, while adding an HMI based on an OS like Windows that leverages the latest HMI development tools.</p>  <p class="body-text-">Over the years some of these implementations have been optimized to provide the best performance for a particular combination of OSs. The downside to this is that each implementation is specific to the particular combination of OSs, and it is an impractical approach to providing a generic virtualization solution to support multiple OS combinations.</p>  <p class="body-text-">Hardware-assisted virtualization features like VT (supported by Intel processors) that have recently become available eliminate some of the software complexity of paravirtualization by providing hardware assistance built into the processor. By using the hardware virtualization support, a VMM can be constructed to function without knowledge of the guest OS. As a result, the VMM can support any OS targeted for that platform. </p>  <p class="body-text-">Intel processor features like VT-x (a subset of the VT features) ensure that any memory address issued by a guest OS is automatically mapped to the appropriate address location in physical memory. Likewise, the hardware-assisted virtualization feature called VT-d automatically maps I/O memory accesses for bus-master DMA devices, enabling native I/O drivers that are part of the guest RTOS application to be used without modification in the virtualized environment. These hardware-assist features substantially reduce the complexity of a VMM and make embedded virtualization a more viable solution.</p>  <p class="heading-1">Making scalability work in real-time applications</p>  <p class="body-text-">While embedded virtualization provides the ideal environment for enabling real-time applications to be split into individual independently operating components, breaking up applications creates the need for a mechanism to support Inter-Process Communications (IPC).</p>  <p class="body-text-">In the past, designers often set up Ethernet links between application subsystems and used TCP/IP stacks to communicate between the subsystems, but this method is cumbersome, slow, sometimes unreliable, and adds uncertainty to the system&#8217;s behavior, affecting determinism.</p>  <p class="body-text-">A better IPC approach is to use a concept called <span class="italics">global object networking</span>. A global object network provides a managed communication environment with built-in initiation and discovery services, enabling an application to be dynamically distributed across one or several CPUs at load time. Processes requiring services of other processes are found automatically, and a local manager records their location to keep track of established IPC links. If a communications link or targeted process fails, the manager notifies an initiating process. In addition, the local manager keeps the system clean by clearing up all records when the IPC links are no longer required by the initiating process. Because the global object network is integrated with the OS, its overheads are low and it does not require the application developer to create any custom software. It is deterministic and substantially more efficient than traditional IPC interfaces.</p>  <p class="body-text-">The OS manages the location and existence of global objects through which processes pass information to ensure the system&#8217;s integrity. For instance, objects used by a process across several processors are &#8220;kept alive,&#8221; and only removed when all the processes have terminated. This requires an underlying management infrastructure to ensure that an object is not removed prematurely, or that it isn&#8217;t removed causing memory leakage through poor cleanup of unused resources. Likewise, in the event that a processing node goes down before its processes are terminated, the manager needs to inform the global object managers on all the other processing nodes that they should clean up any local references to objects on the down node.</p>  <p class="heading-1">An example of GOBSnet communications</p>  <p class="body-text-">Figure 2 shows a highly simplified view of the software architecture of the system depicted in Figure 1. In addition to the RTOS and the real-time process software, Cores 0-2 also run the INtime GOBS manager software, whose function is to manage global object communications. (GOBSnet is TenAsys&#8217; global object network supported by the company&#8217;s INtime Distributed RTOS and INtime for Windows RTOS.)</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F2" title="GOBSnet facilitates communication between real-time processes running on different processor cores.">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 2:</b> GOBSnet facilitates communication between real-time processes running on different processor cores.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="body-text-">With GOBSnet, a process on one core can communicate with another process on another core using a global memory object. The initiating process, &#8220;Process&nbsp;1&#8221; in Figure 2, creates the memory object and catalogs it in that core&#8217;s root process. After this is done, processes running on other processing nodes can find the memory object, resulting in an efficient shared memory interface for all processes to use. The same applies to all ranges of objects (including semaphores and mailboxes) for IPC use.</p>  <p class="body-text-">The second step is for other processes to locate the memory object and obtain its memory location. This is done by specifying the processor name to start the search. When the process finds the object, it stores its location, type, and parameter in a reference object in the processor node&#8217;s GOBS manager and keeps the handle of that reference object. From then on, when a remote process (Process 2 or Process 3 in this example) wants to write or read to the memory object, it uses the reference object&#8217;s handle to retrieve the appropriate memory object information to access it.</p>  <p class="body-text-">When Process 2 or Process 3 terminates its node&#8217;s GOBS manager, the manager clears all reference object information about the remote memory object. When Process 1 terminates, it removes all objects it has created, including the memory object. In cases where that is not the optimum action, there is the option of creating a memory object with a counter. The counter is incremented every time another process connects to the memory object and is decremented every time one of those associated processes is terminated. The result is that the memory object is removed only when all the processes connected to it are terminated. This allows the situation where remote processes, Process 2 and Process&nbsp;3, can continue passing information via the memory object even though the initiating process, Process 1, has terminated.</p>  <p class="body-text-">GOBSnet communications can be used whether the real-time application is spread among CPUs on the same multicore chip or among separate CPU cores on different microprocessor components that are networked together (Figure 3). By designing systems around this flexible system software architecture, embedded system developers have headroom to grow their products&#8217; processing power or shrink it accordingly to meet the challenges of the future.</p>  <p class="figures"> 		<figure>
 		<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure3', 'width=875,height=1007,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure3" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F3" title="GOBSnet provides a scalable means of IPC whether the processes are located on different cores of a multicore chip or on entirely different processor platforms.">
					<img width="470" border="0" alt="Figure3" src="http://i.opensystemsmedia.com/?q=94&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5307%2Ffigures%2F3" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<figcaption><b>Figure 3:</b> GOBSnet provides a scalable means of IPC whether the processes are located on different cores of a multicore chip or on entirely different processor platforms.</figcaption><div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>				</td>
			</tr>
		</table>
		</figure>
		   </p>  <p class="author-bio"><span class="author-bio-name">Kim Hartman</span> is VP of TenAsys Corporation. He has worked in the embedded market focusing on hardware analysis tools and RTOS products for 26 years, first at Tektronix and then at RadiSys&nbsp;before cofounding TenAsys in 2000. He is a Computer Engineering graduate of the University of Illinois, Urbana-Champaign, and received his MBA from Northern Illinois&nbsp;University.</p>  <p class="contact-info">TenAsys Corporation 503-748-4720  <span class="hyperlink"><a href="mailto:Kim.Hartman@tenasys.com">Kim.Hartman@tenasys.com</a></span>  <span class="hyperlink"><a href="http://www.tenasys.com">www.tenasys.com</a> </span></p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/08/embedded-virtualization-enables-scalability-of-real-time-applications-on-multicore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows tackles embedded complexity</title>
		<link>http://embedded-computing.com/windows-tackles-embedded-complexity</link>
		<comments>http://embedded-computing.com/windows-tackles-embedded-complexity#comments</comments>
		<pubDate>Thu, 05 May 2011 15:00:00 +0000</pubDate>
		<dc:creator>Warren Webb, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[diskless computer]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embeded system]]></category>
		<category><![CDATA[single board computer]]></category>
		<category><![CDATA[single board computer linux]]></category>
		<category><![CDATA[single board computers]]></category>

		<guid isPermaLink="false">http://ECD5162</guid>
		<description><![CDATA[With embedded devices looking more like off-the-shelf PCs, adding a Windows Embedded portfolio to suit consumer demands is a logical OS choice.]]></description>
			<content:encoded><![CDATA[<div
class="story"><h3 class="abstract"><img
alt="3" style="margin: 4px 17px 4px 0px; border: 1px solid #efefef;" align="left" width="225" border="0" src="http://i.opensystemsmedia.com/?zc=1&#038;f=png&#038;h=200&#038;w=225&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5162%2Ffigures%2F3" />As embedded devices grow in complexity and incorporate more and more features already available in the PC world, it may be time to take another look at the Windows Embedded software suite.</h3><p><span
id="more-463765"></span><span
class='body'><p
class="body-text"><span
class="got-a-sec">Embedded devices are beginning to look a lot like desktop computers, as customers demand graphical interfaces, high-speed communications, multimedia, and full integration with Internet-delivered data and services. With these features already built into the Windows operating system, it is only natural for developers to consider variations of the Windows operating system for new embedded products. Microsoft&#8217;s latest Windows Embedded portfolio of platforms and technologies offers the developer plenty of features and functionality to support the next generation of highly complex embedded devices. </span></p><p
class="body-text"><span
class="got-a-sec">Software complexity is just one of several reasons to consider a Windows variation for embedded applications. Other advantages of a Windows-based operating system are the availability of a large number of skilled programmers, familiar development tools, and extensive third-party hardware and software support. Newer embedded devices also require local data security for remote applications and network security software to safely connect with remote databases and services. Windows Embedded Standard&nbsp;7 includes several new security features, including BitLocker and DirectAccess to deal with these cases. For local security, BitLocker encrypts data stored on protected volumes, so if a hard drive is removed from the system, the data is unreadable. For communications security, DirectAccess automatically creates a secure connection between client systems and the company server without the need to initiate a Virtual Private Network (VPN) session. Microsoft also spends considerable time and resources testing and fixing security flaws for both desktop and embedded products.</span></p><p
class="heading-1"><span
class="got-a-sec">Thousands of image components</span></p><p
class="body-text"><span
class="got-a-sec">Code size is often listed as a disadvantage for Windows-based designs. However, Windows Embedded Standard 7 is broken down into thousands of components. It&#8217;s possible to pick from predesigned templates or create a completely unique software configuration, depending on your application. You can use Microsoft tools such as Image Builder Wizard to select from a few options or Image Configuration Editor to add, remove, or configure any functionality in Standard 7 automatically. You can create a specialized embedded operating system image that is as small as 600 MB. (The standard Windows image is about 16 GB.) After the image is running, you can make&nbsp;additional changes manually. Such changes could include installing and configuring software and drivers or customizing the Windows Welcome Screen.</span></p><p
class="body-text"><span
class="got-a-sec">Another frequently cited reason against developing a Windows-based embedded product is the poor response to real-time inputs. Windows Embedded Standard 7 has no inherent real-time capabilities. Thread switch times can be excessive, depending on software activity. For these applications, Microsoft recommends Windows Embedded Compact 7, an updated version of Windows Embedded CE, or third-party, real-time plug-ins that can be used to support a wide range of real-time, small-footprint enterprise and consumer devices. TenAsys is one of several vendors who offer real-time virtualization software compatible with the Windows Embedded Standard 7 platform. The TenAsys INtime RTOS allows you to combine the high-level features of Windows with a real-time, deterministic operating system.</span></p><p
class="heading-1"><span
class="got-a-sec">Embedded off-the-shelf modules</span></p><p
class="body-text"><span
class="got-a-sec">One of the fastest methods to develop a new embedded device is to combine a pre-engineered, off-the-shelf module with a compatible and tested operating system. For example, Advantech supports Windows Embedded Standard 7 for a number of embedded boards, including the SOM-5890 COM Express module (Figure&nbsp;1), which also fits digital signage applications.</span></p><p
class="body-text"><span
class="got-a-sec">The Advantech 4.92-inch x 3.74-inch SOM-5890 COM&nbsp;Express module is compliant with the newly released PICMG COM.0 R2.0 Type 6 specification and offers HDMI, DVI, and DisplayPort video interfaces as well as SVDO, LVDS, and VGA output. The COM Express module is based on the Intel Core i7 processor and Intel QM67 Express chipset and supports graphic intensive, multi-display applications. The SOM-5890 supports up to 16 GB of dual-channel DDR3 memory and extensive interface expansion for up to three DDIs, multiple PCI Express lanes, USB 2.0 ports, and a Gigabit Ethernet interface along with serial and general-purpose I/O ports. The SOM-5890 board includes specialized support for Windows Embedded Standard 7, and the module ships with Advantech&#8217;s iManager software and related APIs. (*See below for acronyms.)</span></p><p
class="figures"><span
class="got-a-sec"><br
/><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure1', 'width=870,height=704,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5162%2Ffigures%2F1" title="The Advantech SOM-5890 COM Express module targets embedded applications and is compatible with the Windows Embedded Standard 7 operating system."><br
/> <img
width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=85&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5162%2Ffigures%2F1" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <b>Figure 1:</b> The Advantech SOM-5890 COM Express module targets embedded applications and is compatible with the Windows Embedded Standard 7 operating system.<div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p> </span></p><p
class="heading-1"><span
class="got-a-sec">Digital signs capture video analytics</span></p><p
class="body-text"><span
class="got-a-sec">One application that vividly demonstrates the ability of Windows Embedded Standard 7 to handle complex requirements is the Next-Generation Digital Signage project cosponsored by Microsoft, Intel, and NEC. Digital signage has become ubiquitous in the retail, transportation, education, health care, and lodging markets, delivering high-speed information and advertising content to a wide range of consumers. The Next-Generation Digital Signage project presents advertisers with new opportunities through the use of anonymous video analytics. As consumers pass by and look at the system screen, a built-in camera captures images. System software stores data such as gender, age, length of visit, and time of day to allow advertisers to tailor their content and graphics based on expected demographics. The system can also present daily specials, downloadable coupons, store maps, and other information in real time to respond to customer gestures, motion, or touch-screen inquiries (Figure 2).</span></p><p
class="figures"><span
class="got-a-sec"><br
/><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure2', 'width=870,height=677,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5162%2Ffigures%2F2" title="The 7.5-foot-tall Intelligent Digital Signage Concept from Intel and Microsoft previews next-generation multi-touch, multi-user advertising techniques."><br
/> <img
width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=85&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5162%2Ffigures%2F2" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <b>Figure 2:</b> The 7.5-foot-tall Intelligent Digital Signage Concept from Intel and Microsoft previews next-generation multi-touch, multi-user advertising techniques.<div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p> </span></p><p
class="body-text"><span
class="got-a-sec">In addition to Microsoft&#8217;s Windows Embedded Standard 7 operating system, the Next-Generation Digital Signage project relies on a group of technologies now available with the 2nd generation Intel Core architecture. This new architecture includes numerous graphics enhancements such as the integral graphics processor for high-definition hardware image decoding, the Intel&nbsp;Advanced Vector Extensions (AVX) instruction set for faster floating-point capabilities, and a modular design to simplify upgrades. The graphics section comprises an array of parallel execution units for 3D applications and hardware acceleration for high-speed encoding/decoding of high-definition video. These new multicore processors also utilize the Intel Active Management Technology (AMT) and Intel vPro Technology to enable remote system management for monitoring, troubleshooting, and content updates even when powered down.</span></p><p
class="heading-1"><span
class="got-a-sec">Standards reduce fragmentation</span></p><p
class="body-text"><span
class="got-a-sec">NEC is creating the standardized hardware platform for the Next-Generation Digital Signage project, which combines a specialized display system that combines interactivity, audience measurement, and remote management. The NEC controller module and display are based on Intel&#8217;s Open Pluggable Specification (OPS) defining the electrical, mechanical, and thermal specifications for a plug-in module containing the computing system necessary to drive a digital signage display panel. Intel created the specification to reduce fragmentation within the digital signage market and to simplify installation, usage, maintenance, and upgrades. The OPS makes it possible for digital signage manufacturers to rapidly deploy large numbers of interoperable systems while reducing development, implementation, and support costs. </span></p><p
class="body-text"><span
class="got-a-sec">In addition to the Windows Embedded Standard operating system formerly known as XPe, Microsoft has defined or renamed several specialized versions of Windows Embedded including Compact (formerly CE), POSReady (WEPOS), Enterprise, Automotive, Server, Thin Client, and Handheld. Unique documentation, examples, and possible hardware selections to fit the category support each of these variants. Microsoft also recently released the Windows Embedded Device Manager, which allows you to deploy and update images for all your embedded devices from a single tool. With all these platforms and support tools, developers have plenty of options to handle the escalating complexity of tomorrow&#8217;s embedded projects. </span></p><p
class="author-bio"><span
class="got-a-sec">Warren Webb&#8217;s background includes more than 30 years as an engineer and entrepreneur developing high-tech products for the aerospace and health care industries. Most recently, he has been writing articles on hardware design, software development, and emerging technologies for international trade magazines. Warren holds an MBA from Pepperdine University, an MS in Electrical Engineering from San Diego State, and a&nbsp;High Honors BSEE from the University of Tennessee.</span></p><p
class="answer">More online:</p><p
class="answer">Migrating to Windows Embedded Standard 7 white paper http://opsy.st/hxzypt</p><p
class="answer">Intel Core Processor Family webcast http://opsy.st/gZwBIy</p></p></div><p></span></div> ]]></content:encoded>
			<wfw:commentRss>http://embedded-computing.com/windows-tackles-embedded-complexity/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://attachments.opensystemsmedia.com/ECD5162/figures/3" length="0" type="" />
		</item>
		<item>
		<title>Embedded moves to multicore</title>
		<link>http://embedded-computing.com/embedded-moves-multicore</link>
		<comments>http://embedded-computing.com/embedded-moves-multicore#comments</comments>
		<pubDate>Fri, 08 Apr 2011 15:00:00 +0000</pubDate>
		<dc:creator>Warren Webb, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[amd intel processor]]></category>
		<category><![CDATA[amd phenom triple core]]></category>
		<category><![CDATA[amd phenom triple core processor]]></category>
		<category><![CDATA[amd phenom x4 quad core]]></category>
		<category><![CDATA[amd processors]]></category>
		<category><![CDATA[core 2 duo cpus]]></category>
		<category><![CDATA[cpu computer processor]]></category>
		<category><![CDATA[digital signal processing fpga]]></category>
		<category><![CDATA[dual processor motherboard]]></category>
		<category><![CDATA[dual processor motherboards]]></category>
		<category><![CDATA[dual quad core motherboard]]></category>
		<category><![CDATA[dual quad core processors]]></category>
		<category><![CDATA[intel celeron processors]]></category>
		<category><![CDATA[intel core 2 duo motherboard]]></category>
		<category><![CDATA[intel core 2 duo motherboards]]></category>
		<category><![CDATA[intel core 2 processors]]></category>
		<category><![CDATA[intel core duo motherboard]]></category>
		<category><![CDATA[intel cpu]]></category>
		<category><![CDATA[intel dual core motherboard]]></category>
		<category><![CDATA[intel dual core processors]]></category>
		<category><![CDATA[intel dual processor motherboard]]></category>
		<category><![CDATA[intel motherboard cpu]]></category>
		<category><![CDATA[intel processor comparison]]></category>
		<category><![CDATA[intel quad core]]></category>
		<category><![CDATA[intel xeon cores]]></category>
		<category><![CDATA[low power x86]]></category>
		<category><![CDATA[mainboard intel core 2 duo]]></category>
		<category><![CDATA[Multicore]]></category>
		<category><![CDATA[multicore processors]]></category>
		<category><![CDATA[pentium 4 core 2 duo]]></category>
		<category><![CDATA[phenom x 4]]></category>
		<category><![CDATA[processore intel celeron]]></category>
		<category><![CDATA[real time operating systems]]></category>
		<category><![CDATA[small form factors]]></category>

		<guid isPermaLink="false">http://ECD5093</guid>
		<description><![CDATA[Power savings and performance enhancement have multicore looking like an SFF "Mighty Mouse" for the embedded industry.]]></description>
			<content:encoded><![CDATA[<div
class="story"><h3 class="abstract"><img
alt="3" style="margin: 4px 17px 4px 0px; border: 1px solid #efefef;" align="left" width="225" border="0" src="http://i.opensystemsmedia.com/?zc=1&#038;f=png&#038;h=200&#038;w=225&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5093%2Ffigures%2F3" />Although multicore processors have had a limited role in the embedded landscape for years, today&#8217;s performance, power, and form factor requirements compel designers to consider their use on almost every new project.</h3><p><span
id="more-463230"></span><span
class='body'><p
class="body-text">Whether you design or purchase the CPU board to power your next embedded project, the processor architecture and integrated features are important elements in the selection process. This architecture will become the heart of the new embedded system and will influence system performance, component count, future updates, I/O configuration, and overall power dissipation. Fueled by recent announcements of new silicon architectures targeting long-life embedded applications, multicore processors have moved into the spotlight and now offer designers a wide range of advantages over their single-core counterparts.</p><p
class="body-text">One of the prime reasons to incorporate multicore is to boost performance through parallel processing. Developers have access to multiple techniques to enable this performance gain, including symmetric or asymmetric multiprocessing and virtualization. In the symmetric case, a single operating system allocates threads or tasks across the available cores while managing common memory and hardware resources. In contrast, asymmetric multiprocessing allows each core to run independent software so that a single system can easily combine real-time, deterministic tasks with a graphical user interface. With virtualization, a hypervisor isolates and allocates system resources between the operating environments so that real-time, general-purpose, and legacy software can be readily integrated in a multicore system.</p><p
class="heading-1">Multicore shrinks embedded designs</p><p
class="body-text">By combining several functions into a single package, multicore-based systems often result in fewer overall components and lower recurring costs. For example, the latest embedded multicore offerings combine a graphics processor with one or more general-purpose processors. This not only eliminates the separate display processor, but also simplifies and speeds up graphics processing by sharing internal cache and memory with the CPU cores. Designers can also use additional cores to lower the component count by integrating external DSP or FPGA units dedicated to signal processing or specialty functions. Along with this reduced package count, multicore systems benefit from lower power dissipation and smaller form factors. Multicore embedded system designers may be able to reduce or eliminate the cooling fan, while portable devices can benefit from both a smaller battery and enclosure.</p><p
class="body-text">At this year&#8217;s Consumer Electronics Show, Intel announced its 2nd Generation Core family based on 32nm process technology, which included seven multicore processors that support extended life cycle embedded applications. These Core&nbsp;i3/i5/i7 processors combine either two or four CPU cores, an integrated graphics processor, Last Level Cache (LLC), and a system agent/memory controller that all communicate using a scalable on-die ring interconnect system. The ring technology allows Intel to adjust the number of cores and create variations that optimize cost, performance, and power requirements for a wide range of embedded applications. Designers can select a version that not only covers current requirements, but also leaves room for future performance enhancements.</p><p
class="heading-1">Performance boost for intense&nbsp;workloads</p><p
class="body-text">The Intel 2nd Generation Core processors also include a number of new or expanded technologies to enhance embedded designs. For example, all of the CPU cores (including the graphics core) feature Intel&nbsp;Turbo Boost Technology, allowing clock frequencies to scale up temporarily. The processors also include a new 256-bit instruction set called Advanced Vector Extensions (AVX), which is backward compatible with previous x86 ISA extensions and is optimized for vector and scalar data sets such as those found in embedded signal processing applications.</p><p
class="body-text">Targeting the Industrial Platform Computing (IPC) market segment of the embedded industry, MSI recently upgraded its IM-QM67 motherboard to accept the 2nd Generation Intel Core processor family (see Figure 1). The new IM-QM67, based on the Intel Core&nbsp;i7 and Core i5 processors and the Intel QM67 Express chipset, includes multiple display outputs with LVDS, VGA, DVI, HDMI, and embedded DisplayPort interfaces. The board also features Direct-X 10 Shader Model 4.0 and full hardware acceleration, delivering 3D graphics and support for up to 1080P high-definition video. Intel Active Management Technology provides the user with certificate-based activation, reconfiguration, and possibly, deactivation of remote embedded systems, regardless of the current operational status. This Mini-ITX form factor board features dual SO-DIMM slots for up to 8 GB of RAM, one CompactFlash slot, and five SATA ports for data storage along with one PCI slot for I/O expansion.</p><p
class="figures"><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure1', 'width=870,height=783,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5093%2Ffigures%2F1" title="The IM-QM67 motherboard from MSI brings Intel Core i7 and Core i5 processors to the industrial market."><br
/> <img
width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=85&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5093%2Ffigures%2F1" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <b>Figure 1:</b> The IM-QM67 motherboard from MSI brings Intel Core i7 and Core i5 processors to the industrial market.<div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div></td></tr></table><p
class="body-text">AMD also announced a new family of multicore platforms aimed at the embedded market earlier this year. The AMD Fusion Embedded G-Series processor is based on the &#8220;Bobcat&#8221; architecture. It combines low-power x86 processor cores and a DirectX 11-capable graphics processing unit into a single Accelerated Processing Unit (APU) for embedded applications. APU configurations are available with single- or dual-processor cores, at 9 W or 18 W Thermal Design Power (TDP), and at two levels of graphics and video performance. The graphics unit includes multiple configurable parallel processing units that can also be used for compute-intensive, non-graphics processing tasks such as encryption/decryption and network packet processing.</p><p
class="body-text">Each APU drives one or two high-resolution displays with built-in hardware decode support for H.264, VC-1, MPEG2, WMV, DivX, and Adobe&nbsp;Flash. The APU is also compatible with both OpenCL and DirectCompute APIs, allowing developers to create multi-thread, parallel software analysis functions for real-time pattern recognition in applications such as video surveillance, radar data analysis, and medical imaging. Designers can choose from multiple I/O controller hub options, available for the APU depending on the desired feature set. For example, the A50M chipset supplies 6 Gbps SATA, Generation 2 PCI&nbsp;Express, and HD Audio. For high end applications, the A55E I/O controller hub includes Gigabit Ethernet MAC, RAID support with FIS-based switching, and a PCI Local bus.</p><p
class="heading-1">Multicore module fits graphics&nbsp;projects</p><p
class="body-text">Shortly after the introduction of the AMD Fusion Embedded G-Series processor, several manufacturers announced compatible, off-the-shelf modules based on popular embedded standards. For example, congatec revealed a new COM&nbsp;Express module, conga-BAF, to target low-power, graphics-based embedded projects (see Figure 2). The module was designed around five of the AMD Embedded G-Series processors, ranging from the AMD T44R 1.2 GHz single-core processor with 9 W TDP, to the AMD T56N 1.6&nbsp;GHz dual-core processor with 18 W TDP. The conga-BAF has two DIMM slots for up to 8 GB of DDR3 RAM and allows dual independent displays with interfaces for VGA, LVDS, DisplayPort, and DVI/HDMI. Additional I/O options include six PCI Express x1 lanes, eight USB 2.0 ports, four SATA ports, one EIDE, and a 1&nbsp;Gigabit Ethernet interface. Conforming to the COM Express basic form factor (4.9 x 3.7 inches), the module operates over the 32 &#186;F to 140 &#186;F temperature range. It supports multiple operating systems including Windows 7, Windows XP, Windows Embedded Standard, Linux, and QNX.</p><p
class="figures"><table
width="480" border="0" align="center" cellpadding="2" cellspacing="0"><tr><td
align="center" ><p> <a
onclick="popup=window.open(this.href, 'Figure2', 'width=870,height=589,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5093%2Ffigures%2F2" title="The conga-BAF COM Express module from congatec features the AMD Embedded G-Series processors."><br
/> <img
width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=85&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5093%2Ffigures%2F2" /><br
/> </a></td></tr><tr><td
class="caption" align="center" style="padding-top: 11px; line-height: 1em;"> <b>Figure 2:</b> The conga-BAF COM Express module from congatec features the AMD Embedded G-Series processors.<div
style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div></td></tr></table><p
class="body-text">These new Intel and AMD multicore processors just offered to designers are closely tuned to the evolving expectations of the latest embedded projects. In addition to the promise of long term availability, the processors feature increased performance and lower power while integrating the graphics processor to simplify and enhance the user interface. Both of the new multicore families are based on the x86 architecture, allowing embedded system designers to lower development costs and schedules by integrating widely available personal computer software. Multiple applications such as digital signage, set-top boxes, information kiosks, point-of-sale machines, and gaming platforms can take advantage of some of the same low-cost, off-the-shelf hardware components and software tools used for desktop development. Regardless of the application, designers should investigate the latest multicore processors on any new development project, and as a result, customers can expect to see a new era of smaller, faster, and lower-priced embedded products.</p><p
class="author-bio">Warren Webb&#8217;s background includes more than 30 years as an engineer and entrepreneur developing high-tech products for the aerospace and healthcare industries. Most recently, he has been writing articles on hardware design, software development, and emerging technologies for international trade magazines. Warren holds an MBA&nbsp;from Pepperdine University, an MS in Electrical Engineering from San&nbsp;Diego State, and a High Honors BSEE from the University of Tennessee.</p><p
class="contact-info">OpenSystems Media <span
class="hyperlink"><a
href="mailto:wwebb@opensystemsmedia.com">wwebb@opensystemsmedia.com</a></span> <span
class="hyperlink"><a
href="http://www.opensystemsmedia.com">www.opensystemsmedia.com</a></span></p></p></div><p></span></div> ]]></content:encoded>
			<wfw:commentRss>http://embedded-computing.com/embedded-moves-multicore/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://attachments.opensystemsmedia.com/ECD5093/figures/3" length="0" type="" />
		</item>
		<item>
		<title>Latest Intel processors advance embedded DSP and SBC system design</title>
		<link>http://www.vmecritical.com/articles/id/?5118</link>
		<comments>http://www.vmecritical.com/articles/id/?5118#comments</comments>
		<pubDate>Tue, 05 Apr 2011 15:00:00 +0000</pubDate>
		<dc:creator>Ian Stalker, Curtiss-Wright Controls Embedded Computing</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Technology Feature]]></category>
		<category><![CDATA[Curtiss-Wright Controls Embedded Computing]]></category>
		<category><![CDATA[DSP/SBC system design]]></category>
		<category><![CDATA[embedded products]]></category>
		<category><![CDATA[system embedded]]></category>
		<category><![CDATA[vpx]]></category>

		<guid isPermaLink="false">http://VME5118</guid>
		<description><![CDATA[The Intel &#8220;Tick-Tock&#8221; model strikes the hour: Core i7 processors waste no time in expanding the reach of Serial RapidIO into embedded military SBC and DSP system designs.]]></description>
			<content:encoded><![CDATA[<div class="story"><h3 class="abstract">Intel&#8217;s latest generation of Core i7 processors is a game-changer for embedded military DSP and SBC system designs. For the first time, they bring support for Serial RapidIO, the OpenVPX (VITA 65) board interconnect fabric of choice. Even better, the performance of vector math processing, critical for DSP applications, is effectively doubled with Intel&#8217;s new 256-bit AVX instruction set.</h3><span id="more-305"></span><span class='body'><p class="body-text">The key performance metric of interest for military DSP systems is the speed of performing floating arithmetic operations, which is referred to typically as GFLOPS when discussing the speed of computers. In recent history, these DSP systems were commonly built using Texas Instruments 320C40 and 320C6701k and Analog Devices SHARC dedicated DSP processors, which were themselves followed by a number of generations of PowerPC/Power Architecture processors with AltiVec. All of these processors offered good floating point performance per watt and all were available from vendors with a history and track record of support for military embedded customers. Now, with the introduction of Intel&#8217;s 2nd Generation Core i7-2715QE quad-core processor, the design of x86-based embedded military DSP systems and high-performance SBCs takes a significant leap forward. </p>  <p class="body-text">Intel refers to their product introduction cadence as the &#8220;Tick-Tock&#8221; model. A &#8220;tick&#8221; is when Intel delivers new silicon process technology with increased transistor density, and enhanced performance and energy efficiency within a smaller version of an existing microarchitecture. The 2nd Generation Intel Core i7 is a &#8220;tock,&#8221; which is when an entirely new microarchitecture is introduced on an existing semiconductor process technolgoy. Using the 32 nm process introduced with the Westmere generation, the 2nd Generation Core i7 (previously code-named &#8220;Sandy Bridge&#8221;) features many architectural improvements (especially in the cache subsystem) that lead to improved performance per clock cycle. It is the nature of microprocessor design that revised architectures typically provide incremental performance improvements. However, the 2nd Generation Core i7 has delivered a major leap forward in the signal processing capability of the processor, thanks to the new 256-bit wide Intel Advanced Vector Extensions (AVX) floating-point instruction set, which supercedes the earlier 128-bit Streaming SIMD Extensions (SSE) instructions. </p>  <p class="body-text">While the new Core i7 brings many advantages for DSP system designs, SBCs used in conjunction with Core i7-based DSP engines also benefit. SBCs can now take advantage of the first ever support for Serial RapidIO on Intel Architecture, as the result of an upcoming PCIe2-to-Serial RapidIO2 bridge chip from IDT that will provide a common communications path and improve interoperability in a complete system. The new Intel processor also supports 16 lanes of Gen2 PCIe for full-bandwidth communications across high-performance processor cards. Intel&#8217;s hyperthreading technology provides for running two execution threads on each core, enabling greater utilization of the execution units and providing improved power efficiency. Published reports show performance increases of 7 to 34 percent due to hyperthreading alone.</p>  <p class="heading-1">The AVX 256-bit difference</p>  <p class="body-text">Prior to the introduction of Intel&#8217;s new 256-bit AVX, developers of military DSP systems typically turned to 128-bit AltiVec-enabled CPUs for vectorized signal processing functions. In the past few years, development of new AltiVec-enabled processors slowed significantly, leaving DSP system developers with limited options. In the meantime, Intel continued to invest in and enhance its own high-performance vectorized processing solution with continual enhancements to Intel Streaming SIMD Extensions, a 128-bit wide processing unit predecessor to AVX, capable of simultaneously operating on four 32-bit floating point values. Intel SSE also featured support for double-precision floating point, a feature not available in AltiVec. In Intel&#8217;s earlier multicore processors, each core was provided with its own SSE unit, so raw floating-point performance scaled with the number of cores. In the new Core i7 Intel has upgraded SSE with AVX, doubling the size to 256-bits wide.</p>  <p class="body-text">This doubled vector processing performance is a significant milestone in DSP system design. DSP algorithms used in critical military applications such as radar, SIGINT, and image processing depend on the precision achieved with floating point numbers combined with the speed of processing. The new Core i7 doubles the peak performance of SSE. When compared to SSE in actual FFT kernels, AVX has been benchmarked up to 1.8x faster than SSE (Figure 1). The AVX instruction set was designed to support future extensions, which hints at wider implementations in the future. </p>  <p class="figures"><table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure1', 'width=870,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure1" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5118%2Ffigures%2F1" title="A comparison of complex FFT performance using 128-bit SSE versus 256-bit AVX instructions &amp;#8211; The code was run on the same processor and clock rate. Data was provided by Intel.">
					<img width="470" border="0" alt="Figure1" src="http://i.opensystemsmedia.com/?q=85&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5118%2Ffigures%2F1" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<b>Figure 1:</b> A comparison of complex FFT performance using 128-bit SSE versus 256-bit AVX instructions &#8211; The code was run on the same processor and clock rate. Data was provided by Intel.				</td>
			</tr>
		</table>
		   </p>  <p class="heading-1">Serial RapidIO onboard</p>  <p class="body-text">Serial RapidIO is the preferred fabric for the types of processor-to-processor communications required by demanding military DSP systems. This is because of Serial RapidIO&#8217;s reliable packet transmission and ability to deliver low and predictable latencies. These benefits of RapidIO messaging are ideal for large peer-to-peer clusters of processors typically used in complex signal processing applications. With the Intel 2nd Generation Core i7, Serial RapidIO is supported on Intel architecture-based OpenVPX/VITA 65 embedded boards for the first time with an easy, cost-effective interconnect provided by IDT&#8217;s upcoming PCI Express (PCIe) Gen2-to-Serial RapidIO protocol conversion bridging semiconductor product. </p>  <p class="body-text">Before this newest generation of Core i7, the lack of support for Serial RapidIO for Intel platforms severely limited the viability of using Intel architecture in DSP multiprocessor system designs. Solutions for Intel have included support for fabrics such as InfiniBand and Gigabit/10 Gigabit Ethernet, which are not embraced in military applications because of their non-industrial temperature silicon and relatively high power consumption. For SBCs, where the requirement is typically a single processor communicating with I/O, these fabrics have been sufficient, but would-be Intel-based DSP military designers were deprived of the option to design systems around Serial RapidIO, the multiprocessor fabric of choice.</p>  <p class="body-text">IDT&#8217;s PCIe-to-Serial RapidIO bridge and new Gen2 Serial RapidIO switches will enable system designers to build Intel architecture-based processing engines with much more fabric bandwidth than that offered by any other currently available technology. The upcoming IDT bridge product supports 5 Gbps interfaces on both PCIe and Serial RapidIO ports. With the advantage of small size and low power consumption, system designers can add bandwidth by using multiple PCIe2-to-Serial RapidIO2 bridges connected directly to the processors or via a PCIe switch. This performance can scale at the system level with the new Gen2 Serial RapidIO: This new generation of systems will deliver double the backplane bandwidth provided by the already fast 3.125 Gbps Gen1 Serial RapidIO technology. A 19&quot; rack, OpenVPX processing system will be able to deploy 1.2 terabits per second of fabric bandwidth. The Intel/Serial RapidIO combination is also suited for SwaP-constrained systems, as designers can maximize the power available for actual computing knowing that Serial RapidIO fabric technology provides the best bandwidth/watt.</p>  <p class="body-text">Serial RapidIO bridges implemented in FPGAs don&#8217;t support high-performance messaging, a feature which directly maps to higher-level software APIs such as MPI. IDT&#8217;s new bridge product will support the two main Serial RapidIO transfer modes, Serial RapidIO messaging, and memory-mapped transfers. Another benefit of the IDT silicon is the inclusion of DMA engines that speed computation while offloading the host processor. Intel processors typically don&#8217;t have DMA engines on-chip, but depend instead on the peripheral chip to move data. Without a DMA engine, moving data can require a large amount of the host processor&#8217;s attention, with the result that a multicore processor might have one of its cores (and associated power) largely consumed by moving data, which is all the more burdensome because it has to be done in code.</p>  <p class="body-text">Another advantage of Serial RapidIO for SWaP-constrained military systems is its ability to support distributed switch and centralized switch architectures. Distributed switch systems (an example is the VITA 65 BPK6-CEN05-11.2.5-n backplane profile) can make use of the local Serial RapidIO switch and thus avoid the need for a separate switch card. For example, if the system were using a &#189; ATR Short enclosure (four 1&quot; slots), this capability saves 25 percent of the space and a considerable amount of power. For large systems, centralized switch architectures are often preferred, and Serial RapidIO is equally adept at this approach. </p>  <p class="body-text">An example of a high-performance DSP engine designed to take full advantage of the latest offering for Intel&#8217;s Core i7 is the new CHAMP-AV8 from Curtiss-Wright Controls Embedded Computing (Figure 2). The CHAMP-AV8 is an Intel Core i7-2715QE-based rugged, high-performance OpenVPX DSP engine. Performance of this dual Core i7 DSP engine is rated at up to 269 GFLOPS. It also supports the IDT Gen2 PCIe-to-Serial RapidIO bridge product, effectively tripling the bandwidth of first-generation VPX products with up to 240 Gbps of fabric performance. CS </p>  <p class="figures"><table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
			<tr>
				<td align="center" >
				
				<a onclick="popup=window.open(this.href, 'Figure2', 'width=870,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="Figure2" href="http://i.opensystemsmedia.com/?bg=ffffff&q=90&w=871&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5118%2Ffigures%2F2" title="The Curtiss-Wright CHAMP-AV8 VPX board with 269 GFLOPS and featuring dual Intel Core i7 2715QE CPUs with four Gen2 Serial RapidIO ports and 80 Gbps to the backplane.">
					<img width="470" border="0" alt="Figure2" src="http://i.opensystemsmedia.com/?q=85&bg=ffffff&w=470&f=jpg&src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5118%2Ffigures%2F2" />
				</a>
				</td>
			</tr>
			<tr>
				<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
				<b>Figure 2:</b> The Curtiss-Wright CHAMP-AV8 VPX board with 269 GFLOPS and featuring dual Intel Core i7 2715QE CPUs with four Gen2 Serial RapidIO ports and 80 Gbps to the backplane.<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>				</td>
			</tr>
		</table>
		   </p>  <p class="author-bio">Ian Stalker is the DSP product manager for Curtiss-Wright Controls Embedded Computing. He has more than 20 years of experience in the embedded industry and holds a degree in Electronics Engineering. Contact him at ian.stalker@curtisswright.com.</p>  <p class="author-bio">Alan Baldus, Intel SBC Product Marketing Manager at Curtiss-Wright Embedded Controls, has more than 15 years in the embedded computer industry. He holds a BS in Electrical Engineering. Contact him at <a href="mailto:abaldus@curtisswright.com">abaldus@curtisswright.com</a>.</p>  <p class="contact-info">Curtiss-Wright Controls Embedded Computing</p>  <p class="contact-info">703-779-7800</p>  <p class="contact-info">www.cwcembedded.com</p>  </div></span></div>]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/multicore/2011/04/latest-intel-processors-advance-embedded-dsp-and-sbc-system-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

