Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Dual core sun boxes

Re: Dual core sun boxes

From: Mladen Gogala <>
Date: Tue, 12 Apr 2005 12:40:48 -0400
Message-ID: <>

Paul Drake wrote:

>That is the difference between full cores and "HypeThreading".
>As far as we've been informed, on IA32 the hypterthreaded processor
>does not count for licensing. It took more than a year to get that
>guideline out of Oracle ... so we had disabled hyperthreading by
>default on new servers. If the server only had one physical CPU, that
>meant patching the HAL when enabling the hypertheading functionality.
>One must choose wisely when selecting the proper HAL ... lest the OS
>be cast into the land of BSOD where only the disk of re-installation
>can revive it.
>Mladen, please take it from here.

The difference between "hyperthreading" and a dual core is L1 ("on-board") cache. Dual core has two, separately addressable caches while "hyperthreaded" CPU has only a single L1 cache. That means that any JMP out of cache will clear L1 for both CPU's thus cancelling any logic that a smart optimizing compiler may have put in the program that is executing. Namely, you cannot predict when will the other "CPU" clean and refill the cache. Why is cache so critical? Modern CPU goes to bus (interconnect, motherboard) approximately billion times per second (1GHZ with time splitters). Usual memory chips (SDRAM) can respond
in 30ns, which means that it's 30 times slower then the CPU. Just when you think that things cannot get any worse, they do. With virtual memory being an essential part of any modern OS, you need minimally 2 memory addresses to fetch a content of a single address into CPU: you need the address of a page table and the address of the page itself. It means that you need at least two accesses to RAM. i.e. 60ns. So, your memory is 60 times slower then your CPU. How do you speed it up? You guessed it: you implement a cache. Intel's on-board cache size is usually 256k. Unless your two virtual CPU's are working on the same thing (vectorized FP operations for graphics, like ray tracers) they'll undermine each other by cleaning cache approximately twice as fast as a single CPU. An optimizing compiler from Intel can buy you much more performance gain then hyperthreading. That is why oracle doesn't charge for it: it doesn't do anything for you. With two L1 caches situation is drastically different. You effectively have two CPU's. That'll cost you.

Mladen Gogala
Oracle DBA
Ext. 121

Received on Tue Apr 12 2005 - 12:44:37 CDT

Original text of this message