home *** CD-ROM | disk | FTP | other *** search
/ ftp.uni-stuttgart.de/pub/systems/acorn/ / Acorn.tar / Acorn / riscos / problems / benchmark / armsi346.spk / !ArmSI / Bits / Techie < prev    next >
Text File  |  1993-07-18  |  5KB  |  113 lines

  1.  
  2. *** Techie details
  3.  
  4. Below I briefly detail how each section of SI gives its results - for
  5. more details look at the code. The important routines are PROCcalcsi
  6. and PROCdisplaysi.
  7.  
  8. Available RAM - MEMC tells you the page size, and so total RAM can be
  9.         easily worked out. Uses OS_ReadMemMapInfo call.
  10.  
  11. Available ROM - tricky ... Currently we just guess based on the OS 
  12.         version.
  13.  
  14. 5th Column ROMs - you don't notice this feature unless you have
  15.         5th column ROMs, but the program finds the number of extension
  16.         ROMs with Podule_ReturnNumber, and then counts the total size
  17.         of code/data using Podule_EnumerateChunksWithInfo - so you
  18.         get the cumulative total of data - not the capacity of the 
  19.         ROMs when full ...
  20.  
  21. ROM Speed - we know the number of n-cycles per ROM access (from MEMC),
  22.         so this is multiplied by the current RAM Speed.
  23.  
  24. RAM Speed - the operating system works this out on startup, and so we
  25.         just ask nicely (zero page location).
  26.  
  27. DRAM refresh - a MEMC returned result (you use OS_UpdateMEMC SWI for
  28.         all these MEMC read/writes)
  29.  
  30. MEMC type - zero page location gives MEMC1 or MEMC1a type, as worked
  31.         out by the OS.
  32.  
  33. IOC type - unknown - call it IOC1 !
  34.  
  35. IOEB type - under RO3.xx an OS_ReadSysInfo call returns this, and 
  36.         whether one is present or not. IOEB can only exist on RO3.xx
  37.         and greater machines.
  38.  
  39. VIDC type - assume a VIDC1a (most machines), unless an A500 computer.
  40.         The A500 is ID'd using the fact that 99% of all the A500s 
  41.         have RTCs with 30 second precision. A500s have VIDC1 chips.
  42.         Actually this test doesn't work because of the OS simulating
  43.         the RTC 8-( Instead we use the keyboard ID byte ... If you
  44.         have an A500 with a new keyboard - tough!
  45.  
  46. ARM type - see the assembler code at the end of the main program.
  47.         ARM1 chips don't do multiply, ARM2 chips don't do SWP 
  48.         instructions, ARM250 chips don't have coprocessor 15
  49.         (internal), and all later chips can be ID'd from a status
  50.         register inside coprocessor 15.
  51.  
  52. FPA type - Again, a coprocessor transfer as defined in the Acorn
  53.         FP specs (see PRMs) which can ID software/hardware FP
  54.         details.
  55.  
  56. Periph Ctrlr - OS_ReadSysInfo call under RO3 can ID the 82C710 or
  57.         82C711 peripheral controller chip which handles the IDE
  58.         interface, etc.
  59.  
  60. LCD ASIC - only present in A4 portables, this chip does the
  61.         fancy 15-greyscale display, and is ID'd using OS_ReadSysInfo
  62.  
  63. RO ver - Read from OS_Byte,0,0
  64.  
  65. Video screen mode - read from the BASIC 'MODE' command, and a 
  66.         selection of OS_ReadModeVariable calls
  67.  
  68. Unique machine ID - only present on modern RO3 machines (A3010/3020/
  69.         A4000/5000/A4/etc) read using OS_ReadSysInfo call
  70.  
  71. Details of most of the calls listed above can be found in the RISC OS3
  72. Programmers Reference Manual, available from your local Acorn Dealer 8-)
  73.  
  74. *** Original Authors Notes
  75.  
  76.  1) Instructions timings are accurate to within:
  77.  
  78.                  4 * MCLK
  79.                  --------   
  80.                      i
  81.  
  82.           where 
  83.                i    is the number of instructions tested
  84.                MCLK is the system clock (125 nS on an 8 MHz machine)
  85.  
  86.     ARM instructions are therfore calculated to within 2 nS +- 2%
  87.  2) ARM Speed in MIPS is calculated as the average number of each
  88.     instruction Group in a test sample of 1000 instructions
  89.  3) IOC and VIDC types remain Unknown at present
  90.  4) Checks are made for all processors known to date. ie. ARM 1,2 and 3
  91.  5) Interrupts and DMA requests are stopped whilst calculations are
  92.     taking place
  93.  6) Looped instructions are calculated as one instruction of the specific
  94.     Group + one Group 1 + one group 4 instruction
  95.  7) Instruction timings are calculated during Video Flyback, and are
  96.     therefore dependant on the Video Flyback period and DRAM refresh
  97.     (large modes with no vertical boarders will affect results)
  98.  8) Group 1a results on ARM 2's do not take account of the hardware bug
  99.     (instructions take 24 S cycles rather than the maximum of 16)
  100.  9) Instruction indexes are relative to a perfect ARM 2 running at 8 MHz
  101. 10) FPU instruction speeds are calculated by either 3, 16 or 80
  102.     instructions depending upon the instruction in question.  
  103. 11) FPU instructions are calculated to within 167 nS, 31 nS or 6 ns +- 2%
  104.     dependent upon the instruction
  105. 11) FPU indexes include both register values and immediate values in the
  106.     form #1.0
  107. 12) FPU speed in FLOPS is calculated as the total number of instructions
  108.     divided by the time taken, this does not take account of common
  109.     instructions
  110. 13) All FPU calculations with the exception of STF and LDF are done in
  111.     extended precision.  STF and LDF are packed decimal precision
  112.  
  113.