John Summerfield:

>Does this mean "Use 64-bit VM?"

I hadn't really put VM into the equation; this can
change things again, in particular due to the issues
current VM releases have with supporting > 2GB guest
storage efficiently ...

But of course in order to run a 64-bit Linux kernel
you certainly need a VM that supports 64-bit guests.

>> 3. 64-bit arithmetic
>>    If your application performs 64-bit arithmetic ('long long' data types),
>>    you will benefit from the fact that those are implemented as native
>>    assembler instructions on 64-bit.  (However, most applications don't
>>    do that ...)
>
>Picky, I know, but they all do. File sizes are 64-bit, and probably some
>other system datatypes too.

Yeah, I should have said, if your application performs
64-bit arithmetic at a point where it is performance-
relevant.  And there it is indeed the case that most
application don't do that, because their performance-
critical parts were usually carefully engineered to
avoid the use of 64-bit arithmetic ;-)

>> 5. Memory management overhead
>>    On the negative side, on a 64-bit system virtual address spaces
>>    are managed via three-level instead of two-level page tables.
>>    This implies a (slight) additional overhead both for the kernel
>>    when performing any operation on the page tables and for the
>>    processor itself when performing a page table lookup.
>
>Is this so even when the actual storage size doesn't warrant it?

Yes.   (In a 64-bit application, the application code is
mapped to 2GB and the stack to 2TB, so you always need a
three-level page table.)


>Those who were technically-involved with OS/2 will recall the term
>"thunking," referring to the mapping of addresses between 16-bit code
>and 32-bit, both for 16-bit applications and for drivers.
>
>Is there a similar issue with moxed-mode operations on the Zeds?

Not really.

The point of 'thunking' was to run 16-bit and 32-bit functions
within the *same* process.  The 31-bit emulation mode on Linux
is different: you can run a 31-bit *process*, but that means that
all code within that process is 31-bit.  There are no calls
between 31-bit and 64-bit code that would need thunks.  (The
only exception is that system calls need to convert the 31-bit
syscall arguments to the format the 64-bit kernel expects.)

Bye,
Ulrich

--
  Dr. Ulrich Weigand
  [EMAIL PROTECTED]

Reply via email to