[squeak-dev] Dorados (was: Efficient Implementation of the Smalltalk-80 System: what was the hardware?)

Jecel Assumpcao Jr. jecel at merlintec.com
Fri Jul 26 20:01:27 UTC 2019

Bert Freudenberg wrote on Fri, 26 Jul 2019 08:38:09 -0700
> Somebody help me with the Dorado math here interpreting
> Squeak on JavaScript in a browser on my *phone*.

As you said, there can be many different calculations we can do. I just
divided the number of bytecodes per second by 400000.0 (to have the
result as a Float instead of a Fraction), so

202211609 / 400000.0
is 505.5290225

500 Dorados, which is amazing given that it is Javascript. on a mobile

Some other interesting numbers we can obtain if we know the clock speed
and power are nano Joules per bytecode and clocks per bytecode.

Here is the clock speed of some machines I tested:

quad Core 2 Q8200: 2000 MHz
dual Core 2 P8600: 2400 MHz
Pentium 4: 3000 MHz
dual Cortex A9: 666 MHz
Pentium II Deschutes: 233 MHz
SiliconSqueak v3: 100 Mhz (simulated)

> http://bitsavers.trailing-edge.com/pdf/xerox/parc/techReports/ISL-83-1_A_Retrospective_on_the_Dorado_A_High-Performance_Personal_Computer.pdf
> http://www.bitsavers.org/pdf/xerox/parc/techReports/CSL-81-1_The_Dorado_A_High-Performance_Personal_Computer_Three_Papers.pdf

The Dorado had a 3 stage piplined microcode engine (7 stage pipelined
memory access) with a 60ns cycle time, so let's call that 17 MHz. I had
always used the number 70ns for the Dorado, which would be around 14MHz.

The power used while running Squeak by some machines I tested:

quad Core 2 Q8200: 116W
dual Core 2 P8600: 53W
Pentium 4: 147W
dual Cortex A9: 13W
Pentium II Deschutes: 43W
SiliconSqueak v3: 9W (FPGA board)

and from one of the papers we have:

Dorado: 2500W

The bytecodes per second numbers for interpreted Squeak were:

quad Core 2 Q8200: 522,715,671
dual Core 2 P8600: 475,394,614
Pentium 4: 251,875,538
dual Cortex A9: 56,586,091
Pentium II: 22,646,850
SiliconSqueak v3: 35,782,023
Dorado: 400,000

which means that the performance in Dorados would be:

quad Core 2 Q8200: 1307
dual Core 2 P8600: 1188
Pentium 4: 629
dual Cortex A9: 141
Pentium II: 56
SiliconSqueak v3: 89
Dorado: 1

and in terms of clocks per bytecode:

quad Core 2 Q8200: 3.83
dual Core 2 P8600: 5.05
Pentium 4: 7.94
dual Cortex A9: 11.77
Pentium II: 10.29
SiliconSqueak v3: 2.79
Dorado: 41.67

and in terms of nano Joules per bytecode:

quad Core 2 Q8200: 222.84
dual Core 2 P8600: 111.25
Pentium 4: 583.05
dual Cortex A9: 233.15
Pentium II: 1,908.18
SiliconSqueak v3: 245.72 (an ASIC should be 10 times better)
Dorado: 6,250,000.00

This is all hardware. What is the effect of compiling? Here are the
numbers of bytecodes per second for Cog (I only was able to run it on a
subset of these machines):

quad Core 2 Q8200: 1,203,290,246
dual Core 2 P8600: 1,372,654,155
Pentium 4: 1,011,857,707

which means in Dorados:

quad Core 2 Q8200: 3008
dual Core 2 P8600: 3431
Pentium 4: 2529

in clocks per bytecode:

quad Core 2 Q8200: 1.66
dual Core 2 P8600: 1.75
Pentium 4: 1.98

and in nano Joules per bytecode:

quad Core 2 Q8200: 96.80
dual Core 2 P8600: 38.53
Pentium 4: 145.13

-- Jecel

More information about the Squeak-dev mailing list