When Intel Xscale processors were introduced to the PDA world, a few developers got excited about the possibilities of CPU speed control. We saw new programs coming out just to allow users to overclock their Pocket PC, from freeware programs which simply changed the CPU speed to more sophisticated solutions like Pocket Hack Master which allowed for a managed CPU scaling approach based on CPU load, but with a hard to understand interface.
Just this month (November 2004) Pocket Hack Master was completely redesigned, and its developers sent out the update e-mail to all registered owners. The software now has a much better interface, and an easier to use menu system. When minimised it simply offers the options to change speed or restore the program to the foreground.
The program also introduces the concept of Favourites. You can only select a speed once it has been tested and approved. Only then you can tap-and-hold the speed and add to your favourites. And only these Favourites can be used when changing speed or scaling.
The speed configuration module contains columns that describe the specific CPU/device parameters that participate in the speed setting. For the PXA25x/26x fa milies these are the CPU, RAM and PXBus clock, the run mode etc. There are also three columns that describe the performance of tested settings being the MIPS (CPU integer performance) index, Memory performance index and SI (combined MIPS + Memory) System Index.
The System Index is used by Pocket Hack Master 2004 to automatically do the calculations required by some of the modules. Each column has a colored icon that shows the state of the speed setting. Yellow means untested, green means tested and OK, red means tested and FAILED.
The Scale configuration module is used to configure the speeds that the Scale engine can use and choose the scaling method and the CPU prediction method. You will see a list that should be populated with all speed settings that were tested, passed the test and were marked as Favourites. The two drop down combos on the bottom of the screen can be used to select the available scaling algorithm and the CPU prediction algorithm. The design of Pocket Hack Master 2004 allows the application to use multiple scaling and CPU prediction algorithms.
Another cool feature is the possibility of defining different CPU speed per application. The program will change the settings when that specific application is in use. The documentation tells us how it works, and there complex combinations, like the priority of the scale mechanism over the individual program settings and other nuances.
Why overclock? Sometimes you just need that little more power to run a program in the smoothest way possible. It can be a game that uses lot of CPU to render graphics, or simply a heavy program, like using an Internet browser on a page with lots of formatting. There are two ways of doing it:
Manual: you set what speed you want the CPU to run.
Scaling: the program selects from a set of speeds depending on the current CPU load.
The second method is interesting because it will only use more power when the CPU has a demand for it. For example, the scaling mechanism can be configured to set a very low speed when the CPU is idle, a medium speed for light CPU load, and maximum speed for heavy CPU load. The benefit here are prolonged CPU life, better average battery usage.
CPU life can be impacted by different factors, and temperature is one of these. By manually setting a high CPU speed you may cause the CPU to overheat. Remember, Pocket PC devices do not have a cooling system, and therefore these devices can get quite hot. By using an automatic scaling mechanism, the CPU temperature can be controlled by automatically reducing the speed when in an idle state. Also, battery life will be impacted by the speed selected.
Speeds tested and approved. The star indicates a favourite
According to the documentation distributed with Pocket Hack Master, “CPU frequency and voltage scaling is essential for embedded systems since it greatly improves battery life of the portable devices. The idea of frequency scaling is simple – if the CPU load is low the OS lowers the CPU clock. If the CPU load rises, the OS also increases the CPU frequency. This approach delivers performance when the embedded device performs CPU intensive tasks and enhances the battery life when the device is idle. The energy that a typical CPU consumes is a square function of the clock of the processor. This means that a processor running at 100 MHz consumed 8 times less energy than a processor running at 400 MHz. The scaling of the CPU frequency should be ideally handled by the Operating System (OS) because by definition an idle process is a process that does not consume (fully or partially) all the time quantum given to it by the task scheduler who in turn is handled by the kernel of the OS and it is the OS who is aware of that fact and is able to detect whether all running processes need less or more processing power and therefore decide whether to scale up (increase the CPU clock in order to increase the performance) or scale down (decrease the CPU clock in order to preserve the battery).”
Setting the Scale levels
Things are more complex here?
This version of Pocket Hack Master works only on handhelds based on PXA25x/26x processors, and includes support for i-Mate PDA2k, Samsung i700 and Fujitsu Siemens Pocket Loox 610. You find this information by tapping Start | Settings and changing to the System tab. There you tap on the About icon to open the following dialog:
What CPU is on this Pocket PC; note the current speed, battery and CPU load indicators under the program name
Other sections in the program include a process viewer, and CPU Load Graph. An interesting feature is the new set of indicators: a small sequence of square indicators shows the currently selected speed, there’s a battery indicator and even a CPU load indicator. You can determine where these are shown, but the default is just next to the Start option, below the current program’s name.
CPU load chart: average on red line
The program itself is much easier now, with more information available. But does it deliver? This is a very complex question. Scaling involves not only CPU speed, but bus speed and other factors as well. Pushing the limits too hard can lockup the device, even putting it in a state that a hard reset is required. That’s why the test list was introduced: to prevent users going too far. But of course different program use the resources in a different way.
To establish if the program changes the handheld performance I have used Spb Benchmark. This program runs a mix of tests including writing/reading/copying files, opening documents using Pocket Word and Pocket Internet Explorer, showing high definition images, and other types of operations – all to try and get an “Spb Index” that in theory will show how this specific handheld compares with others. In my case I ran the Spb Benchmark on the same HP iPAQ h4150, four times: at 100MHz, 400MHz, 531MHz and at 597MHz. All these were using default speed settings - I didn't change or create any new speed configuration. The results?
The difference is noticeable. The whole PDA runs much slower at 100MHz. Even opening a menu is something, well, painful. It can be very well used for idle state, but for nothing else. 597MHz didn’t improve the performance, although it did change the results. But when I ran the test at 531MHz, it showed a jump. The reason for this is the different RAM and bus speed. And how different is that. Check the charts below:
Now, don’t blame Pocket Hack Master if your machine doesn’t get a huge improvement. It’s just that for some uses speed will not improve user experience much. However the feeling is an interesting thing: running at 531MHz did feel snappier for me, when using Pocket Internet Explorer and Access Netfront. It improved my experience with other programs too. Of course it wouldn’t make a difference for Contacts or Inbox.
It’s clear the results will depend on how the Pocket PC is used, personal preferences and other factors. As we say on the Internet YMMV (Your Mileage May Vary). But the program seems to work.