This page describes the speed of various implementations of the Sunrise system. In particular, it reports on the time of running the automatic functions that check the well-formedness of a program and generate the verification conditions which are the remaining proof obligation.
|
|
|
| Secure VCG execution times, in seconds | ||||||
|---|---|---|---|---|---|---|
| Example | Mac IIfx | Sparc 20 | UltraSparc | Indigo2,6.0 | Indigo2,6.1 | Enterprise |
| quot/rem | 920.1 s | 176.5 s | 68.2 s | 13.509 s | 5.528 s | 3.535 s |
| 91 function | 1401.2 s | 229.1 s | 88.8 s | 20.337 s | 6.952 s | 4.201 s |
| odd/even | 4197.5 s | 871.2 s | 335.7 s | 76.490 s | 16.977 s | 11.638 s |
| product | ??? | 6470.6 s | 2473.6 s | 519.956 s | 127.892 s | 88.928 s |
| bicycling | 3075.6 s | 654.3 s | 248.0 s | 54.267 s | 17.004 s | 10.997 s |
The following table interprets the timing results by considering the speed of the Sparc 20 system to be 1.0, and gives the speed of each system in relation to Sparc 20. This factors out the inherent difficulty of each example (approximately), and shows the relative speed of each implementation.
| Secure VCG executions, times faster than Sparc 20 | ||||||
|---|---|---|---|---|---|---|
| Example | Mac IIfx | Sparc 20 | UltraSparc | Indigo2,6.0 | Indigo2,6.1 | Enterprise |
| quot/rem | 0.19 x | 1 x | 2.6 x | 13.1 x | 31.9 x | 49.9 x |
| 91 function | 0.16 x | 1 x | 2.6 x | 11.3 x | 33.0 x | 54.5 x |
| odd/even | 0.21 x | 1 x | 2.6 x | 11.4 x | 51.3 x | 74.9 x |
| product | ??? | 1 x | 2.6 x | 12.4 x | 50.6 x | 72.8 x |
| bicycling | 0.21 x | 1 x | 2.6 x | 12.1 x | 38.5 x | 59.5 x |
|
Geometric Mean | 0.19 x | 1 x | 2.6 x | 12.0 x | 40.2 x | 61.5 x |
The Indigo2,6.1 system is one of the fastest of those listed, so it is interesting to consider how other systems compare to it. The following table gives the relative speeds of each system on each example in terms of how many times it is slower than Indigo2,6.1.
| Secure VCG executions, times slower than Indigo2,6.1 | ||||||
|---|---|---|---|---|---|---|
| Example | Mac IIfx | Sparc 20 | UltraSparc | Indigo2,6.0 | Indigo2,6.1 | Enterprise |
| quot/rem | 166.4 x | 31.9 x | 12.3 x | 2.4 x | 1 x | .64 x |
| 91 function | 201.6 x | 33.0 x | 12.8 x | 2.9 x | 1 x | .60 x |
| odd/even | 247.2 x | 51.3 x | 19.8 x | 4.5 x | 1 x | .69 x |
| product | ??? | 50.6 x | 19.3 x | 4.1 x | 1 x | .70 x |
| bicycling | 180.9 x | 38.5 x | 14.6 x | 3.2 x | 1 x | .65 x |
|
Geometric Mean | 196.8 x | 40.2 x | 15.4 x | 3.3 x | 1 x | .65 x |
Sparc 20:
Sun SPARCsystem 20, 2 x 60 MHz TI,TMS390Z55 CPUs, 160 MB, SunOS 5.4,
HOL88 v. 2.02, on Austin Kyoto Common Lisp (AKCL),
Sunrise version 5.1.
This UCLA machine was the platform used for the creation of Sunrise v. 5.1,
as the first UNIX version.
UltraSparc:
Sun Ultra 2 Model 1200, 200 MHz UltraSPARC CPU, 128 MB RAM, SunOS 5.5.1,
HOL88 v. 2.02, on Austin Kyoto Common Lisp (AKCL),
Sunrise version 5.1.
This was the main public UCLA machine in July 1997.
Indigo 2,6.0:
Silicon Graphics Indigo 2, IRIX 6.2, IP22,
HOL90 v. 9, on Standard ML of New Jersey, Version 109.26.1,
Sunrise version 6.0.
This version is a direct translation of Sunrise version 5.1 from HOL88
to HOL90.
Indigo 2,6.1:
Silicon Graphics Indigo 2, IRIX 6.2, IP22,
HOL90 v. 9, on Standard ML of New Jersey, Version 109.26.1,
Sunrise version 6.1.
This version is an improved version of Sunrise version 6.0, where
the functions that applied the VCG to individual programs were
rewritten for speed, with no sacrifice of security.
Enterprise:
Sun Enterprise 3000, 2 x 250Mhz UltraSPARC CPUs, 512MB RAM, SunOS 5.5.1,
HOL90 v. 7, on Standard ML of New Jersey, Version 0.93,
Sunrise version 6.1.
The Sunrise system is almost exactly the same as for Indigo 2,6.1 above.
91 function:
McCarthy's "91" function, using a recursive procedure.
1 procedure, 18 lines of code.
Program has surprisingly simple behavior given its definition.
All three verification conditions generated are solved by decision procedures.
odd/even:
Odd/even program, using two mutually recursive procedures.
2 procedures, 33 lines of code.
Generates 9 verification conditions.
product:
Pandya and Joseph's program for integer multiplication,
using three mutually recursive procedures.
Added quotient/remainder procedure from quot/rem
in order to calculate divisions.
4 procedures, 68 lines of code.
Generates 13 verification conditions.
bicycling:
"Bicycling" program, using two mutually recursive procedures.
Purpose is to prove termination, beyond Pandya and Joseph's method.
2 procedures, 36 lines of code.
Generates 8 verification conditions.