Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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.