| By Paola Lubet | Article Rating: |
|
| November 30, 2007 04:00 PM EST | Reads: |
8,294 |
According to Moore's Law, the number of transistors on an integrated circuit doubles every 24 months. Can software keep up? To do so, software vendors need to tackle the seismic shift in server technology toward 64-bit multi-core servers with massive memory banks. Software vendors have been slow to adopt the techniques required to get the most out of these new servers, never mind those coming in the future. And customers pay the price, without necessarily realizing it.
This article will cover what the software industry needs to do to keep Moore's Law going, examining what major changes we can expect over the next year, what challenges these pose to software vendors, and how the software industry can keep pace to optimize customer benefits.
Quad-cores are here, and microprocessors with even more of these tiny computers on a single chip aren't far behind. Add advanced memory, and the hardware guys have set the stage for more power and more seamless user experiences on a variety of new devices.
For the past 20 years software developers could count on Moore's Law to increase application performance, but the free ride is over. Higher CPU performance and usually increased clock speed translated into better application performance. But clock speeds have physical limits, so chipmakers have shifted instead to multi-core servers to boost performance.
Software developers need to do things differently. They've been complacent about how they do their work, using time-tested techniques that were good enough for yesterday's hardware but sub-optimal for tomorrow's.
This article describes two methods to write software to take advantage the benefits of multi-core chips, multithreading, and in-memory databases.
How Next-Generation Hardware Is Evolving
As 64-bit multi-core servers emerge, processing power grows rapidly; size, cost, and power consumption drop. The hardware side is moving rapidly. Soon the smallest, cheapest blade server will contain four-eight cores, with this number increasing significantly over time.
Power consumption is key in the new calculus, since faster chips require more power and produce more heat that then requires more cooling. A rule of thumb is that for every dollar spent to power a server, another dollar in electricity is needed to cool it. Many data centers can't add capacity despite empty floor space - local utilities can't provide any more electricity to power and cool server farms. Power-efficient multi-core servers break this power dilemma.
A SOP to Moore's Law
In fact, advances in server hardware may outpace Moore's Law. New packaging technology such as system-on-package (SOP) accelerates processing power, especially for handheld devices.
"SOP leapfrogs Moore's Law by embedding everything into a new type of [integrated circuit] package so small that eventually handhelds will become anything from multi- to mega-function devices," said Rao R. Tummala in the June 2006 issue of IEEE Spectrum Magazine ("Moore's Law Meets its Match," http://spectrum.ieee.org/jun06/3649). These SOP chips will open the way to cheaper, faster consumer devices.
Software Developers Lag on New Methods
In a multi-core environment, a number of software engineering techniques can help software take advantage of this raw power. These methods include multithreading, in-memory databases, and new ways to adapt software in scale-out or blade architectures, where more servers are added to generate more computing muscle.
Why Multi-Core Chips Need Multithreading
Multithreading techniques are a key method to take advantage of multi-core processors. Traditionally, applications were written as processes that are typically limited to running sequentially on a single CPU. If executed on a multi-core CPU, a process will run only on a single core - wasting the extra power because it uses only a quarter of a quad-core processor (see Figure 1).
To take full advantage of multi-core and multiprocessor environments, a programmer should use multithreading techniques. Unlike processes, "threads" share memory, state, and other resources with other threads. Software architects must break down processes into multiple threads that can run in parallel on different cores.
In a multi-core environment, the threads of a multithreaded application are distributed across all available cores to run simultaneously. Because they share memory and resources, they can be synchronized to gain maximum performance.
This technique is especially useful in data-intensive applications, such as databases, that can process data in parallel on different cores. CPU-intensive applications, such as high-performance computing, also benefit from multithreading.
Think of a traditional application running on a single-core CPU with different processes that must wait in line to use the processing power of the single CPU. With a multithreaded application, a multi-core processor gives access to processing without waiting.
Designing the Multithreaded Application
Multithreading requires a new approach to designing an application. The programmer must design the application and write small, tight code segments (or threads) that can run in parallel or simultaneously. Threads can't depend on each other or create conflicting data.
In a database, for example, a thread that runs a transaction if someone deposits money into an account and another thread that withdraws money from that account can't run in parallel. They must be synchronized, meaning that the withdrawal depends on a deposit happening first.
One database technique is to have separate threads doing the same thing on different data. One thread might process data for names beginning with A to C, another D to G, and so on. No conflicts arise because the threads work on different data. This approach is a typical database parallelization or multithreaded method.
Software architects must design applications so threads are discreet, autonomous, and run independently of each other. With the smallest servers soon containing four-eight cores, multithreading will be important even in scale-out environments.
Published November 30, 2007 Reads 8,294
Copyright © 2007 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Paola Lubet
Paola Lubet is senior vice president of marketing and business development for Solid Information Technology. She is responsible for Solid's product planning and management, corporate marketing, field marketing and strategic partnerships. Paola brings more than two decades of successful marketing and business development experience to Solid. She began her career in Italy before moving on to Apple Computer's European headquarters in Paris, France. In 1994, she moved to Oracle Corporation. As senior director of database product marketing, Paola lead the introduction and launch of Oracle8i, helping Oracle gain a dominant position in the emerging e-business space. She holds a Master of Science degree from Italy's Universita degli Studi di Torino.
- It's the Java vs. C++ Shootout Revisited!
- Patterns for Building High Performance Applications
- Asynchronous Logging Using Spring
- Java for Programmers (2nd Edition)
- Cross-Platform Mobile Website Development – a Tool Comparison
- Write Once Run Anywhere or Cross Platform Mobile Development Tools
- Three Buzzwords That Every CIO Hears but One They Should Listen To
- Immersing into JavaScript Frameworks
- Workday Reportedly Prepping to Go Public
- Cloud Expo New York: The Java EE 7 Platform - Developing for the Cloud
- Book Review: Sams Teach Yourself Java in 24 Hours
- OpenOffice.com Lives
- Book Excerpt: Introducing HTML5
- Adobe Sends Flex to the Apache Foundation
- Five Years Waiting for JRE 7: Is It Justified? (Part 1)
- Book Excerpt: Java Application Profiling Tips and Tricks
- i-Technology in 2012: Five Industry Predictions
- It's the Java vs. C++ Shootout Revisited!
- Patterns for Building High Performance Applications
- OpenXava 4.3: Rapid Java Web Development
- The Next Web Architecture
- Asynchronous Logging Using Spring
- Java for Programmers (2nd Edition)
- Is Write Once Run Anywhere Ever Going to Be a Reality?
- A Cup of AJAX? Nay, Just Regular Java Please
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- JavaServer Faces (JSF) vs Struts
- The i-Technology Right Stuff
- Rich Internet Applications with Adobe Flex 2 and Java
- Java vs C++ "Shootout" Revisited
- Bean-Managed Persistence Using a Proxy List
- Reporting Made Easy with JasperReports and Hibernate
- Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- What's New in Eclipse?
- i-Technology Predictions for 2007: Where's It All Headed?
















