AMD Logo AMD Developer Central

Making Multi-Cores Count: An ISV Licensing Primer 

Skip Navigation LinksHome
On the road to concurrent programming, do customers see you as the fast lane—or the speed bump? The best way for ISVs to support emerging x86-based virtualization and grid computing technologies is by moving away from antiquated hardware-based license models.
Alexandra Weber Morales  3/20/2007 
The Starting Line

Are we all at the same place when we think about multi-core processors and licensing? Let's review some basic definitions.

Basic Processor Definitions
Because hardware and software vendors use a variety of terms, the word "processor" now has a fuzzy meaning. A processor core is the fundamental computation and execution unit of a processor. The processor can be thought of as the physical package that contains one or more processor cores. Closely associated with processor is the term socket , meaning the gadget on a motherboard that you plug a processor into. Some vendors, however, consider the processor as synonymous with a processor core. In such a case, there's an implicit performance assumption: for example, that a single-processor system (one socket) with a dual-core CPU is the equivalent of or better than a dual-processor system (two sockets) with single-core processors.

Basic Licensing Definitions
The following are typical licensing schemes—but these are often blended, adding to consumer confusion. Historically, the most prevalent licensing scheme in the enterprise has been the perpetual model , according to an October 2004 Software and Information Industry Association study sponsored by software activation vendor Macrovision. The meaning is simple: Pay once, use forever. In contrast, subscription-based licensing usually means an annual fee needs to be paid to keep the software working. The seat per-machine model assigns the license to a specific machine. The seat per-named user model assigns the license to a specific individual. Concurrent user licensing sets a limit on many users can use the software at once, often enforced with a license server. Per-CPU means the cost is based directly on the number of processors in a server, similar to per core . Finally, usage-based licensing is nothing new; chargebacks for CPU time or I/O operations that have long been prevalent on IBM mainframes.

Trends
Licensing schemes are changing rapidly. Multi-core isn't the only reason; ISVs and customers alike need to deal with other technologies such as grid computing and virtualization. One trend is a move away from seat per-machine, the leading pricing model in 2004 at 56 percent of ISVs. A year later, the leading pricing model is concurrent user at 44 percent of ISVs, according to the follow-up SIIA pricing study published in October 2005. Meanwhile seat per-machine had dropped to 41 percent. Seat per-named user grew from 35 percent to 40 percent of ISVs in the same time frame. Also, that research found that only about one quarter of vendors tie pricing to the number of processors. Presumably, that quarter primarily comprises enterprise vendors.

As multi-core processors become mainstream, proving their worth in data centers and on desktops everywhere, software vendors and purchasers alike puzzle over a new problem: How to quantify a single silicon substrate that holds several general-purpose processor cores.

From the IT manager's perspective, the cost of upgrading servers shouldn't come with an unexpected software licensing penalty. Meanwhile, many ISVs want to address multi-core processors somehow, since the performance increases, while not double, do enable higher throughput with lower power consumption and heat generation. No matter which side you're on, if concurrent programming turns out to be the next wave in software development, you'll need to know two things (assuming the Zen of threading comes quickly):

  1. Which licensing model makes the most sense?
  2. How many processors are in this box, anyway?

Let's get to it.

Schemes and Controversies

Though it seemed avant-garde at the time, Sun Microsystems' move to sell the entire Java Enterprise System suite at $140 per employee per year, announced in 2003, turned out to be prescient and profitable, with subscriptions to the suite at more than 1 million today. The combination of subscription-based and per-named user model used in this case also is available with a subset of products for only $50. (But check the fine print here—for service providers, the entitlement document for the suite states there is a 200:1 ratio of non-employee end user to employees.)

At the other end of the public relations spectrum was Oracle's widely debated refusal to redo its pricing schemes, charging per processor core regardless of actual performance. The reasoning was simply that Oracle considered a processor core to be equivalent to a processor. This impacted any chipmaker producing multi-core chips. That unpopular stance gave out in mid-2005, with an announcement that the price for installation on a multi-core chip would be the number of cores multiplied by an Oracle-defined factor, rounded to the next whole number. The UltraSPARC T1 processor factor is 0.25, for example, while the AMD/Intel factor is 0.50, and all other current multi-core chips (such as IBM Power chips) have a factor of 0.75. Single-core chips have a factor of 1. According to a January 2006 Oracle press release, "Licensing by processor is one of only several choices Oracle provides its customers. Other options include licensing per user and per employee. Oracle also offers the option of licensing its software on a term or perpetual basis..."

In July 2006, IBM declared a similar policy for software such as DB2, WebSphere, and Rational tools based on "processor value units," to take effect in November 2006. In this model, license fees are based on the specific underlying processor and its perceived power; a dual-core IBM Power5 chip is ranked at 100 "processor value units" per core. Dual-core x86 chips from AMD and Intel get a PVU rating of 50 per core, Intel Itanium dual-core gets a PVU rating of 100 per core, and Sun T1 (up to eight cores) get a PVU rating of 30 per core. Note that IBM considers the term "core" to be synonymous with "processor." Previously, IBM had been treating dual-core x86 chips with an explicit per socket pricing model. IBM will evolve its pricing scheme over time and presumably use benchmarking tools such SPEC CPU and TPC-C to evaluate processors—but that none of this changes existing policies for IBM mainframes.

With the advent of multi-core, chipmakers such as AMD, Intel, and Sun have suggested the "per socket" approach taken by Microsoft, Sun (whose Portal Server 7 is licensed at $57,000 per CPU or per socket), BEA, VMware, and others.

Counting cores isn't the only issue, however. With virtualization, the complications will continue to proliferate.

"More than just the per-socket or dual-core issue, the bigger issue is that as computational resources move from fixed boxes to being taken on the fly, the licensing scheme of the last 15 to 20 years has to be completely rethought," says Fred Hoch, president of the Illinois Technology Association. "Say you partition a server into seven virtual machines. The technology isn't there to allow you to track that usage from a billing or licensing perspective. There's a movement afoot to address these issues, but no one has the answer."

Among the quandaries are: What's the vendor policy if consumers run software on less than the full server? Conversely, what happens when there are more virtual machines than there are processors in the server? As fluid grid computing environments that scale according to demand grow in popularity, AMD recommends ISVs allow multiple software installations on a virtualized server or computer grid. In the near future, calculations based on usage, sites or number of employees will make more sense than hardware-based licenses. In this vein, Microsoft has made available unlimited virtualization rights with Windows Server 2003 Datacenter Edition.

One More Wrinkle: Simultaneous Multi-Threading

With Simultaneous Multi-Threading (SMT), IBM Power5, and some Intel CPUs all offer the ability to run several threads simultaneously on a single core, such that instructions from more than one thread can be executed per cycle. Each core is visible as two or more "logical" processors. This gives a performance boost for multi-threaded software (not equal to an entire extra core) that varies with the vendor and type of instructions being executed. So, a four-socket system using single core Intel Xeon processors with hyperthreading technology enabled appears to have eight CPUs—it's important to realize that in that case there are only four physical processors.

Although it doesn't use the same approach as SMT, Sun's UltraSPARC T1 chip is similar in the sense that a large number of processor cores are visible on a single system. Not designed for breakneck single-threaded performance throughput, these chips are designed for heavily-threaded server processing.

The important fact to understand is that these non-traditional approaches to threaded throughput all have different performance characteristics and cannot be easily compared to previous designs. Clearly, Oracle and IBM are taking these factors into account with their performance-oriented licensing schemes.

Processor Enumeration: Choose Your API Wisely

From a licensing and cost standpoint, what's the value of a processor core? That's up to each ISV to evaluate. As said before, AMD has generically suggested a per-socket licensing scheme for ISVs. But there's also an optimization message there as well. AMD suggests: license software by socket, and schedule threads by available cores.

In these complex times, any hardware-based licensing scheme must distinguish between a core, a processor socket and a logical processor. Here are some strategies to follow under Windows.

On newer versions of Windows (Windows 2003 Server SP1, Windows XP Professional x64, Windows Vista), the GetLogicalProcessorInformation() API reveals the number of logical processors, whether the processors are on the same NUMA node, and CPU cache characteristics.

On older platforms such as the 32-bit version of Windows XP or Windows Server, to detect the number and type of processors, use a combination of the GetSystemInfo() API and the CPUID instruction. GetSystemInfo() will return the number of processors in a data field in a SYSTEM_INFO structure.

The number of logical processors means varying things, depending on the system. On an AMD-based system, it represents the number of cores. On an Intel-based x86 system with Hyper-Threading Technology on (enable or disable as an option in BIOS), the value is the number of logical processors. On Intel's dual-core Pentium Extreme Edition, for example, this value is four: two logical processors per core.

To identify a CPU's brand and details on older versions of Windows, the CPUID instruction prevails. If you don't want to haul out your rusty (or non-existent) assembly language skills, never fear; Visual C++ has an easy-to-use __cpuid intrinsic for which there's a complete example on MSDN. Note that AMD and Intel completely document their implementations of the instruction and associated machine-specific features on their respective Web sites as well.

One final caveat: in a virtualized environment, the hardware could be partitioned such that one core is allocated to a virtual machine, yet CPUID may still identify the CPU as a multi-core processor. For this reason, whenever possible, software should rely chiefly on the OS-provided APIs to query the number of available processors and cores.

Capitalizing on Concurrent Programming

In the court of public opinion, enterprise vendors have faced pressure to stop charging premiums for additional cores. Arguably, the incredible loads carried by data centers and the rising energy costs of compute farms make multiple cores a necessity—and few consumers understand why that should cost extra. Many software development experts say ISVs should worry more about threading their software for greater efficiency. Considering that quad-core processors in x86 will hit the market in 2007, it's clear that multi-threading will become even more important soon.

"We see [the multi-core issue] in Fortune 500 companies—it's too new elsewhere," says ITA's Hoch. As for concurrent programming, "I think it will force an entire rewriting of the software infrastructure. It changes computing in a way that can be beneficial for companies. Who doesn't want bigger, faster, better?"

Vendor Viewpoint

These links take you straight to the major ISVs' licensing policies at press time.

An award-winning magazine writer and the former editor in chief of Software Development, Alexandra Weber Morales is also a Webmaster, singer-songwriter, and recovering auto mechanic.

Back to top
© 2009 Advanced Micro Devices, Inc. AMD, the AMD Arrow logo, AMD Opteron, AMD Athlon, AMD Turion, AMD Sempron, AMD LIVE!, and combinations thereof, are trademarks of Advanced Micro Devices, Inc. Microsoft and Windows are registered trademarks of Microsoft Corporation in the United States and/or other jurisdictions. Linux is a registered trademark of Linus Torvalds. Other names are for informational purposes only and may be trademarks of their respective owners.

This website may be linked to other websites which are not in the control of and are not maintained by AMD. AMD is not responsible for the content of those sites. AMD provides these links to you only as a convenience, and the inclusion of any link to such sites does not imply endorsement by AMD of those sites. AMD reserves the right to terminate any link or linking program at any time.