SPEC Benchmark Specification Espresso 1.0: General 1.1: Classification Espresso is an integer benchmark. It performs set operations such as union, intersect and difference. Sets are implemented as arrays of unsigned integers and set membership is indicated by a particular bit being on or off. The set operations are implemented as sequences of logical and's and or's. The sets typically contain fewer than 200 members. 1.2: Description Espresso minimizes boolean functions. It takes as input a boolean function and produces a logically equivalent function possibly with fewer terms. Both the input and output functions are represented as truth tables. 1.3: Source/Author The EECS department of the University of California at Berkeley distributes Espresso through the Industrial Liason Program. 1.4: Version Information "UC Berkeley, Espresso Version #2.3, Release date 01/31/88" 2.0: Performance 2.1: Metric No special performance measures are produced by Espresso. The elapsed time to run a set of four input models is the measure of performance. Each model is run in sequence and the total of the four elapsed times is the measurement of interest. 2.2: Reference Time The four models take a total of 2270 ( to 3 sig. fig.) seconds to execute on a VAX 11/780. 2.3: Reports Espresso writes its output, represented as a truth table, to standard output. The program produces no special report, although trace information is available from command line switches. The output of the program is re-directed to a file for benchmarking purposes. 3.0: Software 3.1: Language C 3.2: Operating System Both VMS and UNIX implementations are supported in the source code. The implementation can be selected with the appropriate compile-time variable. 3.3: Portability Since Espresso uses very few operating system services, it likely can be ported to non-VMS and UNIX environments with relative ease. The main requirement of the target system is a C compiler. The UNIX implementation is the BSD variety; re-hosting for a System V environment should be trivial. 3.4: Others No other software considerations for Espresso. 4.0: Hardware 4.1: Memory Espresso allocates memory dynamically. For the input functions used, the memory working set is less than a megabyte and the program text is less than a 100 kilobytes. Consequently, Espresso executes without paging even on systems with very little memory. 4.2: Other No other hardware requirements exist for Espresso. 5.0: Operational 5.1: Disk Space No disk requirements beyond the space required to hold the program source, executable image, input files and output files. This space is less than a megabyte. 5.2: Installation The directory contains the source for the Espresso program and a make file that builds it. The makefile by default uses the host's /bin/cc C compiler and specifies optimization with the -O flag. Compiler options may be passed in by CFLAGS. Since Espresso is an integer-intensive program, no floating-point compiler switches will have much impact on performance. Approximately 50 source files comprise Espresso's body of source code. 5.3: Execution To run Espresso, type: time espresso bca > bca.out time espresso cps > cps.out time espresso ti > ti.out time espresso tial > tial.out and add the four elapsed times together. Verify whether the output is correct by: diff bca.out bca.good diff cps.out cps.good diff ti.out ti.good diff tial.out tial.good there should be no differences reported by the diff program.