By the middle of [2005], virtually all our server products
Download
Report
Transcript By the middle of [2005], virtually all our server products
Developing a 64-bit Strategy
Craig McMurtry
Developer Evangelist, Software Vendors
Developer and Platform Evangelism
Microsoft Corporation
By the middle of [2005], virtually all our server
products will be 64-bit capable.
– Phil Brace, Intel Server Marketing Group
AMD’s processors are already (almost) all 64bit capable!
Objects in the mirror are closer than they appear.
Developing a 64-bit Strategy
Agenda
64-bit Hardware
What Microsoft is doing about it
What you can do about it
64-bit Hardware
What is a 64-bit Processor?
Processors work on data in chunks.
Bigger chunks = higher throughput
On a 32-bit processor, max chunk size = 4 GB
On a 64-bit processor, max chunk size > 16TB!!!
64-bit Hardware
What is a 64-bit Processor?
Processors work on data in chunks.
Bigger chunks = higher throughput
On a 32-bit processor, max chunk size = 4 GB
On a 64-bit processor, max chunk size > 16TB!!!
64-bit Hardware
Two different species of 64-bit Processors
Intel Itanium Processor
EPIC Instruction Set
64-bit
EPIC Instruction Set NOT x86 Instruction Set!!!
Explicitly Parallel Computing
Bundling Instructions
Predication
Has decoder to translate x86 instructions
Can’t boot x86 Operating Systems
6 Floating Point Calculators
6.4 Gigaflops of single-precision floating point power
64-bit Hardware
Two different species of 64-bit Processors
x64 Processors
64-bit processor
Built-in memory controller
x86 Instruction Set
Runs 32-bit x86 applications at machine speed!!!
Stunning performance
64-bit Hardware
Two different species of 64-bit Processors
x64 Processors
Stunning performance
Opteron outpaced pre-x64 Xeons by 45% in some tests
At Microsoft, reduced Windows OS build times by 2/3
Source: http://www.anandtech.com/IT/showdoc.aspx?i=1935&p=9
64-bit Hardware
Two different species of processors
Both revolutionary designs
Itanium is the floating-point champ
x86 is the software compatibility champ
Number-crunching
Broad utility
64-bit Hardware
Two different species of processors
Both revolutionary designs
Itanium is the floating-point champ
x86 is the software compatibility champ
Number-crunching
Broad utility
What is Microsoft doing about 64-bit?
Operating Systems?
Developer Tools?
Applications?
What is Microsoft doing about 64-bit?
Operating Systems
Itanium
x64
Available
With WS2K3 SP1 (H2 2005)
Windows Server 2003, Standard
With WS2K3 SP1 (H2 2005)
With WS2K3 SP1 (H2 2005)
Windows Server 2003, Enterprise
Available
With WS2K3 SP1 (H2 2005)
Windows Server 2003, Datacenter
Available
n/a
Windows XP Professional
What is Microsoft doing about 64-bit?
Operating Systems
One code base
Windows
Code
Base
x86 compiler
32-bit Windows for x86
x64 compiler
64-bit Windows for x64
Itanium compiler
64-bit Windows for Itanium
What is Microsoft doing about 64-bit?
Operating Systems
Features not supported on any 64-bit Windows
Microsoft DOS
16-bit applications
OS/2 Subsystem
POSIX Subsystem
Obsolete transport protocols
What is Microsoft doing about 64-bit?
Operating Systems
x64 Windows has many features not on Itanium
Windows Firewall
Windows Security Center
DVD video playback
NetMeeting
Fax
Movie Maker
Windows Messenger
MSN Internet Access
ZIP Folders
Home Networking
Fast user switching
Remote Assistance
File and Settings Transfer Wizard
Search Companion
OpenGL
DirectX
Themes
Power Management
System Restore
BlueTooth
What is Microsoft doing about 64-bit?
Operating Systems
32-bit support at O/S level via WoW64
Intercepts calls from 32-bit apps to O/S
What is Microsoft doing about 64-bit?
Operating Systems
32-bit support at O/S level via WoW64
Intercepts calls from 32-bit apps to O/S
Separate sets of system folders
64-bit apps in Program Files folder
64-bit libraries in System32 folder
32-bit apps in Program Files (x86) folder
32-bit libraries in SysWOW64 folder
What is Microsoft doing about 64-bit?
Operating Systems
32-bit support at O/S level via WoW64
Intercepts calls from 32-bit apps to O/S
Separate sets of system folders
Registry keys for 32-bit apps under
HKEY_LOCAL_MACHINE\Software\WOW6432Node
What is Microsoft doing about 64-bit?
Operating Systems
32-bit support at O/S level via WoW64
Intercepts calls from 32-bit apps to O/S
Separate sets of system folders
Registry keys for 32-bit apps under
HKEY_LOCAL_MACHINE\Software\WOW6432Node
Limitations:
16-bit installers
32-bit drivers
What is Microsoft doing about 64-bit?
Operating Systems
Summary
64-bit Windows for Itanium today
64-bit Windows for x86 in H2 2005
Part of Windows Server 2003 SP1 Release
WOW64 subsystem supports 32-bit apps at O/S
level
What is Microsoft doing about 64-bit?
Developer Tools
For C and C++
Itanium compiler & MFC, ATL, C-Runtime libs today
x64 versions with WS2K3 SP1 ([email protected])
New Itanium and x64 versions with VS 2005
For .NET
VS .NET 2003 may be supported on WS2K3 SP1
VS 2005 includes 64-bit 2.0 .NET Framework for
Itanium and x64
What is Microsoft doing about 64-bit?
Applications
SQL Server 2000 for Itanium today
SQL Server 2005 for x64 and Itanium in H2 2005
What can you do about 64-bit?
Extend your Microsoft-based apps to support it
Architectural Issues
Code migration
Testing and debugging
What can you do about 64-bit?
Architecture
Support a 64-bit Database
Extending your code
Cannot access 32-bit DLLs from 64-bit code
… So plan to access 32-bit DLLs via remote interfaces
What can you do about 64-bit?
Architecture
Support a 64-bit Database
Extending your your code
Cannot access 32-bit DLLs from 64-bit code
… So plan to access 32-bit DLLs via remote interfaces
What can you do about 64-bit?
Extending your code
Aim for one version for both 32-bit and 64-bit!
What can you do about 64-bit?
Extending your code
C and C++
Consider moving it to managed code
If you stick to C and C++ note:
On 64-bit Windows, long integer is 32-bits, pointer is 64
ImageBase = (PVOID)((ULONG)ImageBase|1)
X
Use the Windows data types exclusively
New fixed precision types,
eg. DWORD32 – 32-bits on both 32-bit and 64-bit
New polymorphic types,
eg. ULONG_PTR – 32-bits on 32-bit, 64-bits on 64
ImageBase = (PVOID)((ULONG_PTR)ImageBase|1)
√
What can you do about 64-bit?
Extending your code
C and C++
If you stick to C and C++ note:
0xFFFFFFFF is not -1 on a 64-bit system
Memory alignment is critical especially on Itanium
#pragma pack (1)
struct AlignSample
{
ULONG size;
void *ptr;
};
void foo(void *p)
{
struct AlignSample s;
s.ptr = p;
}
What can you do about 64-bit?
Extending your code
C and C++
If you stick to C and C++ note:
0xFFFFFFFF is not -1 on a 64-bit system
Memory alignment is critical especially on Itanium
#pragma pack (1)
struct AlignSample
{
ULONG size;
void *ptr;
};
void foo(void *p)
{
struct AlignSample s;
s.ptr = p;
}
What can you do about 64-bit?
Extending your code
C and C++
If you stick to C and C++ note:
Use SIZE_T to determine if you are on 32- or 64-bit
What can you do about 64-bit?
Extending your code
Managed Code
1.0 & 1.1 executables run as 32-bit apps
For 2.0 64-bit executables
Floating points are more precise
Examine interfaces to unmanaged code
SYSTEM.INPOINTER tells if you are on 32- or 64-bit
Components in the GAC are tagged as 32- or 64-bit
What can you do about 64-bit?
Migration
Building and testing
Build & test on 32-bit, then compile for 64 and test
Debugging is remote on 64-bit
Conclusions
The market for x64 hardware is exploding
You need to take advantage of it
There never was a better time to adopt .NET
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.