Windows SSE Driver for Transmeta Crusoe CPU.

Preamble

If you own a laptop or PC with Transmeta Crusoe CPU and were trying to use Adobe Bridge, DNG Converter or Camera Raw Plugin and failed - then this page might help you. I was completely unsuccessful to run any of the above mentioned Adobe products on my Sony Viao C1MV which has a Transmeta Crusoe CPU. I did raise the issue with Adove on one of their forums but I do have some doubts whether it is going to be fixed at all.

Therefore I decided to take matters in my own hands and develop this driver.

Considering specifics of the problem, the driver also might work on some older Intel (PentiumII) or Cyrix CPUs. These however weren't tested at all - I only had Transmeta Crusoe in my disposition and the driver was tested on Transmeta Crusoe CPU only.

A note of caution: this software provided as is and it might crash you Windows of which I bear no responsibility. However I would appreciate all the reports of such crashes and memory dumps if possible to this email address: [email protected] (remove NO_SPAM to get the correct address).

How it came to be

I own my Sony Viao laptop for a while now and use it mostly due to its size. After all, C1Mxx series of Viao laptops (also known as PictureBooks) are incredibly portable and useful for a number of handy tasks whilst you are on a road - digital photography being one of them. I never had a problem with my laptop until recently when I switched to digital photography. I was setting up my on-the-road workflow and was trying to use Adobe DNG Converter.

Unfortunately I discovered that it crashes on my laptop. After some research and debugging I discovered the cause of this problem which lies in my laptop's CPU (Transmeta Crusoe) inability to perform SSE/SSE2 instructions. Well, this not that much an inability but a specifics of the handling of those SSE/SSE2 instructions. For those who wonders what SSE/SSE2 is - they are specific CPU instructions to allow vector processing and exist in Intel CPUs since Pentium III and allow performance optimisations for variety of multimedia tasks. For more details (non technical) on those please refer to this article at Wikipedia.

The problem itself was caused by one particular SSE2 command (PSHUFD) and the way SSE2 optimisations are used in above mentioned Adobe products. If you are interested in technicalities of all this please take a look at this page.

How it works (non-technical)

The driver intercepts invalid SSE instruction (when it is running) and emulates it. The execution then continues as usual.

Note: current version of the driver does not actually emulate but skips this instruction and continues execution of the program normally. This works perfectly with the mentioned Adobe applications for now but I am working on full emulation version and will release it shortly and as it will be ready and tested.

Downloads

Binaries Most people will need this package.
Sources This is for advanced users who want to see how it is implemented.


Usage

Unzip the archive with any available ZIP packer (WinZip will do). Copy it to some directory of your choice and run CrusoeSSE.exe. The application appear as a tray icon in a Windows taskbar and is controlled by menu. Right-click on its icon in taskbar to see the menu options. It allows to start and stop the driver when needed. Upon application startup the driver is stopped (so you have to start it manually). I think this is a safer option then starting it up automatically.

Compiling from sources

This part assumes that you have some knowledge of Microsoft Visual C++ environment.

The package consists of two distinct parts - driver and application controlling the driver. To compile both from sources you will need to have the following installed:

The application part provided with Microsoft Visual C++ project and workspace files - so build process is just as any other projects for Microsoft Visual C++ environment. For the driver part: edit the build_driver.cmd script provided in with the driver sources. This script has a user configurable section which contains settings needed to be set according to your environment. You will need to configure the following two variables there: After updating this script just run it and it will build the driver in the driver sources directory.

Release history

07-10-2005 1.0.2 Minor updates to the driver - it was not always unloading correctly in Windows 2000.
05-10-2005 1.0.0 Initial release - does not emulate but skips unimplemented SSE2 command (PSHUFD).

Download DivX

This page was visited Counter times.
Hosted by www.Geocities.ws

1