The new KiK64
32-bit real-time code on 64-bit Windows? Some users are already familiar with our KiK64 function. The new version improves both, usability and performance.
January 17th, 2018
For everyone else, here is a short review:
In contrast to regular applications, 64-bit Windows at kernel level only allows for the execution of 64-bit real-time code. However, "KiK64" (Kithara-32-in-Kithara-64) also allowed for 32-bit real-tme code to run on 64-bit Windows systems. In order to do so, the old KiK64 continuously performed all necessary address translations.
Even though this method proved to be generally funtional, it came with certain limitations regarding performance as well as compatibility with recent and future Windows versions. This is why we have introduced a new KiK64 concept with the recently released version of our software. Here are some of the core differences between old and new.
- 32-bit application (EXE) and 32-bit real-time DLL
- only up to Windows 7
- certain real-time functions limited
- no native code, frequent address translation, therefore CPU performance constraints
KiK64 going forward
- 32-bit application (EXE) and 64-bit real-time DLL
- up to and including Windows 10 as well as future versions
- real-time functions without limitations
- native code, no address translations, therefore full CPU performance available and opmtimized real-time behavior
Additional difference regarding Shared Memory: With the new KiK64, there will be a 32-bit view on the memory from the EXE as well as 64-bit view from the real-time DLL. Therefore, the shared memory needs to be arranged in a way, that regardless of the different viewing modes both are able to perform indentical memory accesses. A more detailed tutorial on how to do this will be provided in the future.
Ultimately, the new KiK64 concept allows for a single 32-bit application (EXE) to be used with both, 32-bit systems as well as 64-bit systems, with full functional range and real-time performance. The developer only has to provide either a 32-bit DLL or a 64-bit DLL, depending on which system the code is supposed to be executed.
Going forward, the new KiK64 function is automatically included in the new "Base/Kernel Module", a merge of these two modules. This only applies to 64-bit versions of the software.