99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Dhrystone Benchmark
 | 
						|
 | 
						|
:copyright: Original sources from [https://github.com/sifive/benchmark-dhrystone](https://github.com/sifive/benchmark-dhrystone) (also, see `LICENSE`).
 | 
						|
The source code has been modified for the NEORV32 processor.
 | 
						|
 | 
						|
To compile the NEORV32 executable:
 | 
						|
```
 | 
						|
neorv32/sw/example/dhrystone$ sh dhrystone.sh
 | 
						|
```
 | 
						|
 | 
						|
The default number of iterations is 2000000. You can modify this by changing `USER_FLAGS+=-DDHRY_ITERS=2000000` in `dhrystone.sh`.
 | 
						|
The default optimization level (EFFORT) is `O3`.
 | 
						|
 | 
						|
:warning: Dhrystone will require an IMEM size of 16kB and a DMEM size of 16kB. The MTIME machine timer is used for timing evaluation.
 | 
						|
 | 
						|
:construction: Porting Dhrystone is still work-in-progress. Performance results might be incorrect and not optimized.
 | 
						|
All results only show the integer parts.
 | 
						|
 | 
						|
### Exemplary Output
 | 
						|
 | 
						|
Output generated for processor HW version [v1.5.9.1](https://github.com/stnolting/neorv32/blob/master/CHANGELOG.md)
 | 
						|
using performance-optimized configuration options.
 | 
						|
 | 
						|
```
 | 
						|
NEORV32: Processor running at 100000000 Hz
 | 
						|
NEORV32: Executing Dhrystone (2000000 iterations). This may take some time...
 | 
						|
 | 
						|
 | 
						|
Dhrystone Benchmark, Version 2.1 (Language: C)
 | 
						|
 | 
						|
Program compiled without 'register' attribute
 | 
						|
 | 
						|
Execution starts, 2000000 runs through Dhrystone
 | 
						|
Execution ends
 | 
						|
 | 
						|
Final values of the variables used in the benchmark:
 | 
						|
 | 
						|
Int_Glob:            5
 | 
						|
        should be:   5
 | 
						|
Bool_Glob:           1
 | 
						|
        should be:   1
 | 
						|
Ch_1_Glob:           A
 | 
						|
        should be:   A
 | 
						|
Ch_2_Glob:           B
 | 
						|
        should be:   B
 | 
						|
Arr_1_Glob[8]:       7
 | 
						|
        should be:   7
 | 
						|
Arr_2_Glob[8][7]:    2000010
 | 
						|
        should be:   Number_Of_Runs + 10
 | 
						|
Ptr_Glob->
 | 
						|
  Ptr_Comp:          -2147467428
 | 
						|
        should be:   (implementation-dependent)
 | 
						|
  Discr:             0
 | 
						|
        should be:   0
 | 
						|
  Enum_Comp:         2
 | 
						|
        should be:   2
 | 
						|
  Int_Comp:          17
 | 
						|
        should be:   17
 | 
						|
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
 | 
						|
        should be:   DHRYSTONE PROGRAM, SOME STRING
 | 
						|
Next_Ptr_Glob->
 | 
						|
  Ptr_Comp:          -2147467428
 | 
						|
        should be:   (implementation-dependent), same as above
 | 
						|
  Discr:             0
 | 
						|
        should be:   0
 | 
						|
  Enum_Comp:         1
 | 
						|
        should be:   1
 | 
						|
  Int_Comp:          18
 | 
						|
        should be:   18
 | 
						|
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
 | 
						|
        should be:   DHRYSTONE PROGRAM, SOME STRING
 | 
						|
Int_1_Loc:           5
 | 
						|
        should be:   5
 | 
						|
Int_2_Loc:           13
 | 
						|
        should be:   13
 | 
						|
Int_3_Loc:           7
 | 
						|
        should be:   7
 | 
						|
Enum_Loc:            1
 | 
						|
        should be:   1
 | 
						|
Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING
 | 
						|
        should be:   DHRYSTONE PROGRAM, 1'ST STRING
 | 
						|
Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING
 | 
						|
        should be:   DHRYSTONE PROGRAM, 2'ND STRING
 | 
						|
 | 
						|
Microseconds for one run through Dhrystone: 13
 | 
						|
Dhrystones per Second:                      76923
 | 
						|
 | 
						|
NEORV32: << DETAILED RESULTS (integer parts only) >>
 | 
						|
NEORV32: Total cycles:      2662000187
 | 
						|
NEORV32: Cycles per second: 100000000
 | 
						|
NEORV32: Total runs:        2000000
 | 
						|
 | 
						|
NEORV32: DMIPS/s:           76923
 | 
						|
NEORV32: DMIPS/MHz:         769
 | 
						|
 | 
						|
NEORV32: VAX DMIPS/s:       43
 | 
						|
NEORV32: VAX DMIPS/MHz:     43/100
 | 
						|
```
 |