- Do the 64-bit and 32-bit NuTCRACKER Platforms
co-exist on the same machine?
General
What support for 64-bit Windows does
the MKS Toolkit product line contain?
MKS will produce two different solutions for the
64-bit Windows operating system.
- A 32-bit suite of MKS Toolkit commands and utilities
which is 64-bit file aware and contains a 64-bit sh, ksh and bash.
Telnet, ssh, xterm, etc. all support running 64 or 32-bit applications
on 64-bit Windows.
- MKS Toolkit for Enterprise Developers 64-bit
Edition.
MKS Toolkit v8.5 was certified to work against
the Itanium version of Windows XP 64-bit Edition but does not contain
the 64-bit aware enhancements.
Is anything missing from the 64-bit development
environments?
The initial release for Extended Architecture 64-bit
Windows platforms will not support the Hummingbird OpenGL Development
Kit add-on.
Will there be a functional telnet, secure
shell, xterm and rlogin service on 64-bit Windows?
Yes. All MKS Toolkit v8.7 (and above) variants
will support both Win32 and Win64 executables.
Does MKS support Win9x/Me as a development
platform with MKS Toolkit for Enterprise Developers 64-bit Edition?
Since the Microsoft 64-bit SDK will not install
or run on Win9x/Me, MKS Toolkit for Enterprise Developers 64-bit
Edition will not support those platforms for development.
Which 64-bit Windows platforms are supported?
With the v8.7 release (June 2004), Windows XP and
Windows 2003 Server 64-bit editions:
- for Itanium are available and fully supported today.
- for Extended Architecture 64-bit hardware (such as the Athlon64,
Opteron, Pentium64 and Xeon64) are in beta at the time of writing
and have been tested against veriosn v8.7 of MKS Toolkit. Within
two weeks of release of these platforms any patches needed to
address any new issues will be available.
As new versions of Windows are released, they will
be validated and supported as appropriate by the next current version
of the MKS Toolkit product line.
Why do I need to move to 64-bit Windows?
Performance and scalability
and the ability to handle large scale memory intensive applications
are some of the many benefits of 64-bit computing. Here are a few
articles and resources from some of the leading hardware and software
vendors which outline these facts:
Microsoft Press Release
With 64-bit computing, customers see significant performance and
scalability gains in applications that require large amounts of
memory or intensive numeric calculations. For server applications,
this includes database servers, Terminal Server deployments, business
applications and technical computing. Desktop applications include
digital content creation, computer-aided design/manufacturing, and
professional video editing.
(http://www.microsoft.com/presspass/press/2004/feb04/02-17ExtendedTechnologyPR.asp)
Microsoft Article
"Benefits of 64-Bit Computing" For workloads
that are memory-intensive or compute-intensive, the performance
and scalability benefits are often dramatic. Large data sets can
be loaded entirely into memory, reducing the need for slower disk
access; complex calculations that take hours to complete on 32-bit
systems can be done in minutes; workloads that once required large
server farms can be deployed on a single server.
(http://www.microsoft.com/windowsserver2003/64bit/benefits.mspx)
Industry Article
"The Need for 64-bit Operating Systems While
some 64-bit machines can process both 64-bit and 32-bit instructions,
and translators exist to convert 32-bit programs to slow but functional
64-bit programs, a 64-bit machine needs a 64-bit operating system
and 64-bit applications to deliver optimum results. 64-bit operating
systems run only on 64-bit machines. Therefore, it is preferable
that all parts of the technology should emerge at the same time
so that one doesnt act as a drag on the other.
Sun gives this analogy
to explain the difference between a 32-bit operating environment
and a 64-bit operating environment: A 32-bit addressing space
can keep track of the name and address of every person who has
lived in the United States since 1997, a 64-bit addressing space
can keep track of the name and address of every person who has
ever lived in the world, from the beginning of time. The capability
to accommodate huge quantities of memory, combined with far greater
efficiency at managing high-bandwidth I/O, gives 64-bit systems
scalability advantages that 32-bit technology cant match.
(http://www.expresscomputeronline.com/20020408/focus2.shtml)
AMD FAQ
What applications benefit from 64-bit computing?
A large number of applications and usage scenarios are likely
to benefit from an AMD64 environment over a legacy x86 or proprietary
64-bit environment. Applications that do not benefit do not need
to be ported, and will run at full performance in an AMD64 environment.
AMD64 is most likely to benefit applications that:
- Need large memory addressing, such as those with large datasets
(financial and scientific modeling applications) and host-based
desktop applications (to run multiple instances simultaneously
without reducing performance).
- Must manage a large number of concurrent users or application
threads, such as large scale thin-client solutions, large databases
and data warehouse applications for solutions in customer relationship
management (CRM), supply chain management (SCM), enterprise resource
planning (ERP), and digital rights management (DRM) systems.
- Provide digital content creation capabilities in such applications
as computer-aided design, manufacturing, and engineering (CAD,
CAM, and CAE), digital music production and video editing, and
real-time media streaming solutions.
- Require mathematical precision and floating-point performance
including modeling, simulation, statistics and financial analysis,
imaging/video/signal processing, physics, medical research, telecommunications,
encryption, and compression.
- Require large, high-performance database performance including
decision support, searching and indexing, document and content
management, and voice recognition.
(http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_861_1024,00.html)
Microsoft TechNet Article
"64-bit Windows - Should You be Considering
a Move to 64-bit?"
(http://www.microsoft.com/technet/community/columns/profwin/pw0801.mspx)
Licensing
Will MKS produce a 64-bit version of the
MKS Toolkit for Enterprise Developers?
Yes, MKS Toolkit for Enterprise Developers 64-bit
Edition is the product which will allow you to migrate 64-bit UNIX/Linux
applications to the 64-bit Windows platforms.
The 8.7 version of this product currently supports
Microsoft Windows XP, Windows XP 64-bit Edition, Windows Server
2003, and Windows Server 2003 64-bit Edition for both IA64 (fully
supported) and Extended Architecture (beta) platforms.
If I own MKS Toolkit for Enterprise Developers
can I port 64-bit UNIX applications for deployment on 64-bit Windows?
In order to port 64-bit UNIX applications to Windows
you will require MKS Toolkit for Enterprise Developers 64-bit Edition
which is a separate product from MKS Toolkit for Enterprise Developers.
If I own MKS Toolkit for Enterprise Developers
can I port 32-bit UNIX applications for deployment on 64-bit Windows?
Yes, your ported 32-bit UNIX applications will
install and run on 64-bit Windows systems as 32-bit applications.
Is an update to MKS Toolkit for Enterprise
Developers 64-bit Edition covered under my existing PCS contract?
MKS Toolkit for Enterprise Developers 64-bit Edition
is a separate product from MKS Toolkit for Enterprise Developers
and therefore not covered under an existing PCS contract.
Installation
Can I install MKS Toolkit for Enterprise
Developers and MKS Toolkit for Enterprise Developers 64-bit Edition
on the same machine?
While technically you can install both products
on the same machine, you will require a special installation key
to do so. Further, the runtime components needed to deploy your
application are licensed separately for Win32 and Win64 platforms.
Be sure to fully discuss your situation with your MKS Regional Sales
Manager to insure that the software you are licensed to use and
distribute suits your needs.
Utilities
What MKS Toolkit utilities are native 64-bit
executables?
The shell (sh, ksh, bash), the NuTCRACKER Platform
and pieces of the connectivity suite needed to ensure proper operation
of 64-bit native binaries run from telnetd, sshd, rlogind and xterm.
The remaining utilities are 32-bit but are 64-bit aware. A port
of Perl to the 64-bit environment is scheduled for an upcoming release.
Can I access files larger than 2G with
MKS Toolkit tools and utilities?
Windows NT/2K/XP with NTFS or Windows 9x/Me with
FAT32 allow files larger than 2G (FAT32 imposes a file size restriction
of 4G (32-bit unsigned offsets) while NTFS has a 16 exabyte size
restriction (64-bit unsigned offsets)). MKS Toolkit commands and
utilities are 64-bit file offset aware on both 32 and 64-bit Windows.
Porting
Can I port a 64-bit UNIX application to
64-bit Windows unchanged?
Yes. One of the attractive features of the MKS
Toolkit for Enterprise Developers is that very little (and often
no) source code changes are needed when migrating to Windows. This
remains true for 64-bit to 64-bit migration. Any application which
is 64-bit clean will port virtually unmodified. However, source
which is not 64-bit clean will need to be made 64-bit clean before
porting with MKS Toolkit for Enterprise Developers 64-bit Edition.
What Data Model changes will be needed
to port to 64-bit Windows (What is meant by 64-bit clean?)
Consider this example:
char
*aa = "Hello";
int
bb = aa;
Now this is not very good code, but assignments
of pointers to integers is probably riddled though-out legacy UNIX
code. The size of an integer in a 64-bit environment is 32-bits.
So this assignment will only function if the pointer happens to
reside below the 32-bit boundary. A 64-bit clean source tree will
use intptr_t or uintptr_t for all types that are to be assigned
a pointer value. MKS Toolkit for Enterprise Developers 64-bit Edition
(TKEDEV64) will ensure that these types are correct for both 32
and 64-bit environments.
There is, however, a small fly in the ointment.
Win64 defines the size of long to be 32-bits while most 64-bit UNIX
implementations define it as 64-bits. Thus source that uses long
and expects it to be able to assign pointers to the long values
would be broken. Thus MKS Toolkit will ship with a utility called
clean64 which will parse all source code and convert long to intptr_t
and unsigned long to uintptr_t. This is entirely portable to UNIX
and will ensure compatibility between UNIX 64-bit ports and TKEDEV64.
There are other integer and pointer issues. Consider:
char
*aa = "hello";
printf("%x\n",
aa);
Since %x expects an integer, the result will be
truncated to 32-bits. The correct "%p" should be used
to be 64-bit clean.
It is also a good practice to correctly include
headers. For example, malloc() will be assumed to return int without
the inclusion of malloc.h and in a 64-bit environment pointer can
easily exceed the size of an int. MKS provides some help in this
area by optionally forcing malloc() to always return pointers about
the 4G boundary during the early stages of your port.
Data structure sizes might be different between
a 32-bit and a 64-bit version of a product. In particular 8 byte
alignment of structures in memory is often required. To make the
source 64-bit clean, the size would have to be normalized
if shared across the network or perhaps in a file. More information
can be found at the following location: http://unix.org/version2/whatsnew/login_64bit.html.
The Microsoft compiler is quite helpful in tracking
down any 32/64-bit assignments.
May I mix Win64 native code and UNIX ported
64-bit code?
Absolutely. The process will be identical to the
current MKS Toolkit 32-bit editions for mixing Win32 with UNIX ported
code, widened to 64-bits. But caution is needed in dealing with
long values are the sizes of long on UNIX and Win64 are different.
May I mix Win32 native code and UNIX ported
64-bit code?
Microsoft has not permitted the 64 to 32-bit thunking
mechanisms needed to permit this within a single executable. Thus
all link libraries must be native 64-bit libraries either ported
with MKS Toolkit for Enterprise Developers 64-bit Edition or with
the Win64 SDK. Of course standard IPC mechanisms exist to have a32-bit
executable communicate with a 32-bit one.
I have never ported my 32-bit UNIX code
to a 64-bit platform before. Will this make the porting job more
complex?
There is really no reason why you need to first
port to a 64-bit UNIX platform; you can do both the Win64 and the
64-bit clean porting in one step. The Microsoft 64-bit compiler
has some specific warnings to help you track down pointer truncation
issues. It will be slightly more work than starting from 64-bit
clean code.
MKS Toolkit v8.7 will provide gcc support.
Will that support extend to 64-bit?
At this time the current version of gcc does not
provide object file support for 64-bit Windows.
Can I access files larger than 2G with
MKS Toolkit porting APIs?
Windows NT/2K/XP with NTFS or Windows 9x/Me with
FAT32 allow files larger than 2G (FAT32 imposes a file size restriction
of 4G (32-bit unsigned offsets) while NTFS has a 16 exabyte size
restriction (64-bit unsigned offsets)).
MKS Toolkit will permit sequential access to such files today. APIs
such as read() without lseek() and utilities such as cp and tar
use the Win32 API ReadFile and are not restricted by file system.
However, if you wish to use, for example, sort to manipulate a file
larger than 2G, or use lseek() to an offest which cannot be represented
by a number less than or equal to 231-1 (the maximum signed 32-bit
quantity), then you either need tools and APIs that are large file
aware or native Win64 ports of the tools and the APIs.
Arbitrary File Sizes to the Single UNIX Specification
which can be found at http://ftp.sas.com/standards/large.file/x_open.20Mar96.html.
Further, various utilities such as more, pg and sort will be enhanced
to support files as large as 263-1 (the maximum signed 64-bit quantity)
where possible by the underlying data structures used by the archives.
Are there alternatives to MKS Toolkit for
Enterprise Developers 64-bit Edition for migrating 32 and 64-bit
UNIX/Linux applications to 64-bit Windows?
At this time MKS Toolkit for Enterprise Developers
64-bit Edition is the ONLY solution, commercial or freely available,
for porting to 64-bit Windows systems.
Deployment
Do the 64-bit and 32-bit NuTCRACKER Platforms
co-exist on the same machine?
Yes. Not only co-exist, but share resources
such as System V IPCs, FIFOs, shared memory and be able to pass
file descriptors from a 32-bit to a 64-bit application. When a 64-bit
application is deployed, the 64 and 32-bit NuTCRACKER Platforms
are both deployed to the target machine. The first implementation
of the deployment wizard however will not permit an older 32-bit
runtime to be present or upgraded. The older 32-bit NuTCRACKER Platform
will need to be uninstalled before the new versions are installed.