From what I've read about 64bit, there are two things that compete, regarding performance:
On the plus side, the AMD64 command set extension offers
more registers, meaning more data can be stored in such a way, that the CPU can directly operate on it.
On the minus side, the pointer data type is bigger (64 bits instead of 32 bits), so
more memory is required for the same program. This (of course) also applies to cache usage, so the number of cache misses will be bigger.
Another thing, that probably isn't an issue with df, is the utilization of x86 command set extensions. Most 32bit compilers default to a very conservative command set. I don't know if this is still the case, but last time I checked the defaults of gcc (a very popular compiler, as it's free software), they were chosen in such a way, that the generated code would be able to run on a 386. As the first AMD64 processors hit the market after MMX and SSE had been introduced, there are no AMD64 capable processors that wouldn't support SSE. For this reason, compilers for AMD64 enable SSE (and other command set extensions common to all AMD64 hardware) per default, giving a significant performance boost over the
default settings of 32bit compilers.
Now, as dwarf fortress won't run on a 386 due to other constraints (for instance memory usage...) anyhow, it doesn't make much sense to limit compilers to the 386 command set. Instead I guess toady already enabled the usage of SSE manually, and I also wouldn't be surprised if dwarf fortress contained explicit SSE code. Probably (but don't quote me on that) dwarf fortress is being compiled for Pentium Pro/AMD K7 or newer (often called i686).
Anyhow, with reasonable compiler settings, the performance difference between 32bit and 64bit is given by the first two points mentioned - cache misses and number of registers.
As a side note: People have come up with an ABI that uses 32bit pointers, but is able to use also the registers not available to the i386 ABI. It is called
x32, and some Linux distributions support it.
As others have already written, the question of i386 ABI vs. AMD64 ABI has nothing to do with multithreading, which is a completely different, and much more complicated beast.
I'd expect the game to be
more stable, as crashes caused by inability to allocate more memory won't happen any more (or at least more seldom), but I'd also expect performance to be actually
worse due to the higher memory usage and delays happening when transferring data between CPU cache and system RAM.