The serial port on my 32 KB Psion died. That meant it could no longer be backed up, and i stopped using it for anything more than a calculator. The 8 KB Psion is still nearly pristine. Well, except that dates past 1999 don't work in the calendar. Feh. Bloody Y2K.
These machines have the Hitachi 6303x processor. This chip can access 64 KB of memory. Half of this is ROM, more or less. They run at about 2 MHz. The 9 volt battery lasts a couple months of normal use.
The applications include a calculator, calendar (appointments), notes, file transfer (with special software on the other side) and remote login (can act like a terminal). The units are also programmable. On board, there is a language called OPL. OPL is something like BASIC, but without line numbers, and with block structure. Even after years of not seeing this language, i can read and write these programs without reference to the manuals. There's something to be said for a language that easy. There is also a cross assembler that runs under DOS. I studied the manuals, but never actually wrote anything for it.
So, a comment suggested that my new Nokia 770 is probably much faster. No need to guess. I have benchmark results for both, using benchmarks i started using in 1982. Here are some numbers:
Matrix Multiply
Time | x780 | Machine & Language |
---|---|---|
0.0308 | 3143.2100 | Athlon 1913 MHz C |
12.1200 | 7.9900 | Athlon 1913 MHz Perl 5.8.8 |
5.1596 | 18.7800 | Nokia 770 C |
238.4700 | 0.4060 | Nokia 770 Perl |
9.8200 | 14.1300 | Compaq Aero 486sx/25 C |
25920.0000 | 0.0037 | PocketC Visor Platinum |
612000.0000 | 0.0001 | Psion Organiser IIXP OPL |
Sieve
Time | x780 | Machine & Language |
---|---|---|
0.060 | 2310.2300 | Athlon 1913 MHz C |
19.570 | 7.0900 | Athlon 1913 MHz Perl |
0.896 | 154.7900 | Nokia 770 C |
181.750 | 0.3800 | Nokia 770 Perl 5.8 |
278.214 | 0.4490 | Compaq Aero 486sx/25 C |
90744.133 | 0.0014 | Compaq Aero 486sx/25 Perl* |
22135.000 | 0.0063 | Palm Platinum Cbasic |
57000.000 | 0.0020 | Psion Organiser II OPL |
Unfortunately, i don't have Perl benchmark runs for the Aero. I probably hadn't written them yet. I have extrapolated a Sieve Aero time using Athlon times. This doesn't work for the Matrix Multiply, as the 486sx/25 didn't have floating point hardware. But to be fair, i didn't use Perl on it much. No, i really don't have eight significant digits of timing information. I'm just trying to get the decimal points to line up. Benchmarks like this often have a ten percent variance between runs anyway. The Vax 780 was benchmarked in the early 1980's, and was considered by many to be the 1 MIPS (Million Instruction per Second) machine. But since some machines must execute more or fewer instructions to get something done, a more fair comparison is to test some workload.
There are two workloads here. The Matrix Multiply does lots of floating point multiplies and adds, with two dimensional array indexing. The Sieve performs integer comparisons and single dimensional array indexing. Since neither the Palm nor the Psion have floating point hardware, both of these machines perform relatively better at the Sieve than the Matrix Multiply. The Psion CPU doesn't have integer multiply, handy for two dimensional arrays.
But yes. The new Nokia is 300 times faster for the Sieve, and 2,500 times faster for the Matrix Multiply. And yet. Both of these benchmarks are in languages that compile to a virtual machine code, which is then interpreted. Any semi-modern desktop using a real compiler should be 20 million times faster than the Psion. When i get a benchmark run in C on the Nokia (easy enough), i expect a factor of 300 to 400 improvement over the Perl version. And if i manage to shoehorn the matrix multiply into the Nokia's DSP (Digital Signal Processor - a super computer's vector processor of sorts) (and more difficult to accomplish) then the sky's the limit. That's how the Nokia does sound and video, after all. Or, i might run into the short vector lengths (20). To be fair, i haven't attempted this in the Athlon's funky on-chip FPUs or GPU.
A brief note about Perl. Yes, there's a huge performance hit compared with C. But even on the 486sx/25, many applications would be fine. For example, many web based programs would still finish in much under a second, and you'd think it fast. And for some machines, it's not a factor of 300, it's a factor of 1,000. And it's still OK. This still bothers me. Perl 5.8 (and later, i suppose) comes with a Perl compiler, which improves things by a factor of five. I don't see it used much. Another odd thing is how little code i have hanging around written in Perl at home. For the past six years or so, it's been my primary language. But when i want to write something at home, it's nearly always in C.
1 comment:
The C benchmark for the Nokia 770 is in. With a time of 5.16 seconds in the matrix multiply, it's 18.78 times faster than the venerable Vax 780. This puts it near the slowest original Pentiums.
With a time of 0.896 seconds in the sieve, the Nokia 770 is 154.79 times faster than the venerable Vax 780. This puts it into the slower Pentium II range, maybe 200 Mhz. That's closer to what i had expected, given that it's a 220 Mhz Arm processor.
So, now i have benchmark results in C, Fortran (matrix multiply only) and perl. There's no Java, despite native java byte code engine in hardware on the chip. Strange. I now have python and guile (scheme) loaded. I have a scheme benchmark. When i get up to speed in Guile, we'll have results. I need to write a python version. Shouldn't be difficult.
Post a Comment