home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / utilities / benchmarks / aibb / documentation / aibb_users_manual < prev    next >
Encoding:
Text File  |  1993-04-16  |  119.6 KB  |  2,127 lines

  1.  
  2.                                 A.I.B.B.
  3.                      Amiga Intuition Based Benchmarks
  4.            A system performance evaluation utility for the Amiga
  5.  
  6.                         Program Release Version 6.0
  7.                      Copyright 1991-1993 LaMonte Koop
  8.  
  9.  
  10.      This software is provided as is.  No warranty as to the performance or
  11. validity of data obtained within is stated or implied.  Bug reports and
  12. suggestions for improvement are welcomed, and every effort will be made
  13. to evaluate such reports.
  14.      AIBB is freely distributable provided no fee other than a moderate
  15. fee for disk copying charges is made for its acquirement.  It may be
  16. distributed across any electronic network, provided no fee is charged
  17. specifically for it's download.  A broad-based download fee is acceptable
  18. provided it is charged universally for all such file downloads.  All
  19. associated files included with the distribution archive of AIBB are to
  20. remain intact and unaltered.  BBS listing notices and the like may be
  21. included in the archive provided no alterations are made to the actual
  22. distribution files themselves.
  23.     This program, and all accompanying files are not public domain.  They
  24. are copyright material and may not be used for commercial purposes without
  25. permission from the author.  In most circumstances such permission will
  26. be granted, but the author must be contacted before any distribution with
  27. a commercial product.
  28.     AIBB is not shareware, as no donation or usage fee is required.
  29. However, any donations are always appreciated, and can only encourage
  30. further development of the program.  This is an ongoing project, and will
  31. continue to be so as long as interest in it is shown.
  32.  
  33.                              INTRODUCTION
  34.  
  35.      AIBB is a utility primarily designed to assist in the evaluation of
  36. system performance on a basic level.  It consists of a series of
  37. performance tests, the results of which are evaluated against other systems
  38. and the displayed for comparison purposes.  It should be noted that care
  39. must be taken when making a definitive evaluation of the performance of
  40. any system, as much more is involved in making a thorough determination
  41. than the data which can be provided by AIBB alone.
  42.      System performance evaluation, commonly referred to as "benchmarking",
  43. is the rather dubious science of trying to determine which system or
  44. system architecture is "fastest".  Unfortunately, all to often it is not
  45. completely clear what is meant by which system is "fast".
  46.      Computer systems in general usually consist of a number of devices
  47. interconnected to form a whole.  These individual devices can be on one
  48. circuit board, such as the case with certain coprocessor devices, etc...
  49. or even as seperate entities completely, physically connected in some
  50. external fashion, such as with expansion boards.  All of these devices will
  51. have certain advantages and disadvantages with respect to performance
  52. levels.  Combined together, it is generally the overall use of the system
  53. in general which determines how much of an effect is seen in these factors
  54. when observing overall system performance.  Before delving into these
  55. factors further, it is necessary to first clarify a few of the key
  56. components which are main players in the performance game.
  57.  
  58. I. The system CPU.
  59.  
  60.      The CPU ( Central Processing Unit ) of a computer is often the focus
  61. of most performance discussions.  This unit is generally responsible for the
  62. non-specific portion of any computing task.  It's duties involve general
  63. program instruction execution, and in many cases it is the device
  64. responsible for 'mastering' the system and coordinating the system effort
  65. as a whole.  Note that this is a generalization.  Systems do exists which
  66. are distributed; their CPU is not as readily defined, or consist of multiple
  67. processing units each coordinated as a whole.  However, in the context of
  68. this discussion a single primary device will be assumed.
  69.      Since the CPU of any system does often receive a great deal of the
  70. overall responsibility for program execution and task organization, it is
  71. thus a very key part in the overall performance of the system as a whole.
  72. However, often times it is considered solely as the factor which determines
  73. the "speed" a computer can perform a particular operation.  This assumption
  74. is not always valid, and must be thought out carefully.  Many other factors
  75. may affect the efficiency of the CPU itself in performing it's operations,
  76. which is why the system as a whole must be evaluated towards a particular
  77. job which it is to be given.  But before this relationship becomes clear,
  78. the other components which are factors must first be recognized.
  79.  
  80. II. Coprocessor Devices
  81.  
  82.      A coprocessor is any system processing unit which works in conjunction
  83. with the primary processor (CPU) in the actions of the system.  Such devices
  84. are often subsystem-specific, and are responsible for a particular set of
  85. computing tasks.  For example, a system may include a FPU, or Floating
  86. Point Unit to take on the task of floating point computations.  These
  87. processors are generally fine-tuned to that specific task, and thus are
  88. more efficient at it than the main processor would be if it were to do the
  89. same job.
  90.     Thus, the primary use of coprocessors is to alleviate some of the total
  91. system computing load from the CPU.  These devices may be directly coupled
  92. to the CPU, thus being closely tied to the performance of the master
  93. processor, or may be of a loosly coupled variety.  This latter type of
  94. coprocessing unit is tied to the CPU only when it requires data and
  95. information from the main processor, and in some situations may be capable
  96. of accessing and modifying system memory without going through the
  97. CPU at all.  Although this concept is not unique to coprocessors alone,
  98. it is relevant, and thus will be explained here.  Such memory accessing
  99. capabilities denote a Direct Memory Access device (DMA).  These devices
  100. do not necessarily rely on the CPU to transfer data to them, and thus are
  101. often 'decoupled' from the CPU in such a way as to have a different
  102. performance ratio from the CPU itself.  Even non-DMA devices are often
  103. afforded a level of concurrent, or simultaneous operation with the main
  104. CPU, so as to provide a more efficient method of task completion.  However,
  105. DMA devices are more closely tied with another set of subsystems to be
  106. considered when dealing with system performance.
  107.  
  108. III. Bus interfaces.
  109.  
  110.      This is often a confusing topic.  The term 'bus' is used a great deal,
  111. but all to often it is not clear what is meant by it.  As stated before,
  112. a computer system consists of a number of devices integrated together to
  113. form the whole.  A bus is, simply put, a communications pathway between
  114. devices.  Over these pathways control, address, and data signals are
  115. transferred to devices which are required to perform a portion of any
  116. particular task.  Most systems contain more than one bus in which this
  117. communication takes place.  Usually, a primary bus or combination of
  118. specific primary buses is responsible for the majority of data transfer and
  119. communications between all devices in general, with lesser buses used as
  120. specific pathways between certain devices.  Buses are often 'sized', or
  121. given in terms of bit-bandwidth.  Basically, this is a determination of the
  122. maximum size of a single data transfer across the pathway between devices.
  123. For example, an 8-bit bus can transfer an 8-bit quantity of data across
  124. it at once, while a 32-bit bus can transfer 32 bits at a single time
  125. ( Where a bit is defined as an electrical signal value representing a binary
  126. number, either 0 or 1 [ Logical FALSE or TRUE, which orientation depending
  127. upon the design of the system ] for each bit ).  Although there are other
  128. sizing factors which come into play, this is a general idea, and suitable
  129. for the discussion at hand.
  130.      As any system relies on the coordinated efforts of all its components,
  131. the efficiency and effectiveness of communication between each device is
  132. of importance when considering the overall performace of the computer.  A
  133. bus which is not up to par with the capabilities of the devices it
  134. interconnects will hinder the system while one which is capable of handling
  135. the individual components will allow for a more efficient setup.  More of
  136. this relationship will be given later after the other component members are
  137. introduced.
  138.  
  139. IV. Input and Output ( I/O ) Devices.
  140.  
  141.     This is a lose subset of devices collectively describing such units as
  142. storage media devices ( disk/tape drives, etc... ), external communications
  143. devices ( serial and parallel communications to external units ), and
  144. specific control input units, such as keyboards and other data input means.
  145. While the latter of these devices is generally not considered to be of much
  146. influence in system performance, the former members, such as storage devices,
  147. can have a great impact on performance levels.
  148.      Storage devices are in general the slowest of data transfer devices
  149. on any system.  For this reason they are often considered to be a
  150. 'bottleneck' in system performance evaluation.  However, many advances have
  151. been made in the design of such units, including the use of DMA access from
  152. storage device control units to the system main memory, which helps by
  153. alleviating the CPU's responsibility in data transfer from these devices.
  154.     Generally, I/O devices are more important to systems requiring a great
  155. deal of access to large quantities of data, or ones involved in data
  156. transfer as their primary mechanism of use.
  157.  
  158. V. System Memory.
  159.  
  160.      This subsystem has been mentioned in passing previously, but until
  161. this section not given full attention.  System memory resources also play
  162. a big part in overally system performance evaluation.  Memory can affect
  163. a system's performance in many ways.  Depending on the speed of other
  164. devices, utilizing memory subsystems which are slower (requiring the
  165. addition of 'wait states - periods of time in which the data requesting
  166. device waits for the data to be available - to properly interface to the
  167. system) can cause any data accesses to occur at a slower rate than the rest
  168. of the system could otherwise handle them.  Many memory subsystems do
  169. indeed utilize wait states, as other devices are too fast for such memory and
  170. the memory access speeds required for zero-wait-state access would make for
  171. prohibitively expensive systems.  Although a completely zero-wait state
  172. system is often not feasible, methods are available to system designers to
  173. try and reduce the overall memory latency periods.  One widely used method
  174. is the use of cache memory.
  175.  
  176. VI. Cache Memory.
  177.  
  178.      Cache memory is a memory storage medium which is usually designed for
  179. the fastest possible access to frequently used resources, usually
  180. microprocessor instructions and/or data.  This area is generally small
  181. compared to the size of an entire system memory complement, and thus can be
  182. implemented at a cost lower than that of employing very fast components for
  183. all memory.  The general operation of most memory caches is to store the
  184. most recently accessed instructions or data within the cache, then make a
  185. check for them there upon the next memory access call.  In this sense, if
  186. the instruction or data is in the cache, it can be accessed almost
  187. immediately, rather than having the processor fetch the required data from
  188. the system's main memory resources.  A cache 'hit' is the term used to
  189. indicate the processor did indeed find the data within the cache, and did
  190. not have to fetch from main memory, whereas a 'miss' denotes when the
  191. processor was forced to get the needed data or instructions from the main
  192. system memory.  When a miss occurs, the cache will usually be updated with
  193. this new data in the case it is called for again, thus keeping the data
  194. in the cache fresh.
  195.      The main theory behind such caches is that many programs spend a
  196. great deal of time within the confines of a definable event loop.
  197. Therefore, depending on the size constraints, part or all of such a loop
  198. can be held within the cache, decreasing execution time.  Caches can be
  199. found both external to the microprocessor or, increasingly, within the
  200. microprocessor itself.  They may be seperated such that they only
  201. instructions or data are held individually, or may be set up such that both
  202. types of memory accesses are kept within one cache.  There are tradeoffs to
  203. both types of design, but in general the cache in any form is a
  204. useful mechanism for increasing system performance.  One must be cautioned
  205. however, as the cache can also lead to a misrepresentation of system
  206. performance comparisons.  Benchmarking tools are often small segments of
  207. programs, and as such may be easily completely cached on systems equipped
  208. with such.  Thus, a benchmark result may not accurately depict the true
  209. system performance with a real-world application which would not be
  210. entirely housed within a such a cache.
  211.  
  212. VII. A word on clocks and clockspeed ratings.
  213.  
  214.      No mention has been made of clockspeed ratings of various devices
  215. so far because they are often misleading terms and can be taken in the
  216. wrong context in many cases.  Therefore this subject is placed in a
  217. seperate section of discussion.
  218.      "Clockspeed" ratings of devices are in actuality frequency
  219. measurements.  Almost all digital devices operating in a computer system
  220. today require some sort of timing input to coordinate their internal and
  221. external responses.  Generally, this is provided by a clock signal fed to
  222. that device, and in some cases the device itself may be responsible for
  223. the generation of additional clock outputs to other devices.
  224.      Clock frequency ratings for system components are usually today given
  225. in terms of MegaHertz ( MHz ).  This is a cyclic frequency rating indicating
  226. a the number of cycles per second an oscilating periodic signal undergoes.
  227. As an example, a rating of one MegaHertz indicates a frequency of one
  228. million cycles per second.
  229.      As indicated earlier, almost all digital system components require
  230. some form of clock input.  To see where this is important, take the case
  231. of the CPU.  Generally, instruction execution timing is stated in terms
  232. of the number of clocks a given instruction takes to complete.  A faster
  233. clock means that although an instruction takes the same number of clocks
  234. to finish, more clock input edges occur in a given time frame, and thus
  235. afford a faster response.  In this sense, faster clock rates generally
  236. indicate faster devices.  The system bus, and other devices are also
  237. managed in terms of clock inputs signals.  These may or may not be the
  238. same input as given to the CPU, or the CPU itself may control them itself.
  239. Thus, differences in clock ratings between subsystems can be a source of
  240. bottlenecking, if one faster clocked subsystem is forced to wait to
  241. synchronize with a slower subsystem in order to transfer data and control
  242. signals.
  243.     Let it not be thought that clock input frequency is the sole governing
  244. force in determining component speed, however.  In many cases, other
  245. effects cause similarly clocked devices doing the same task to finish
  246. in differing amounts of time.  One way this can happen is if one device has
  247. been enhanced in such a way as that it's internal operations are more
  248. efficient, thus requiring fewer clocks to complete. Therefore, this factor
  249. must be weighed as well as clockspeed in even single device evaluations.
  250. Device designers are constantly using both increased clock rates, as well
  251. as increased internal efficiency to advance the performance of system
  252. components.
  253.     It should be noted here that the term "bus cycle" is often confused
  254. with the concept of of clockspeed, because of the term cycle.  A bus cycle
  255. is related to the clock cycle rate, but not usually identical.  Bus cycles
  256. are the time required for the CPU or other device to access data and
  257. complete an external bus operation on it.  For example, the MC68000 CPU runs
  258. a 4 clock memory access cycle in general ( asynchronous memory transfers ),
  259. requiring 4 CPU clocks to access a given memory operand.  This is assuming
  260. a no-wait state operation.  Wait states are additional clock periods added
  261. to this cycle time in order for the data to be validly returned from the
  262. accessed device, and are placed in the bus cycle period when a device is
  263. incapable of responding to the data transfer request within the normal 4
  264. clock period.  This is only given as a particular example; other CPUs and
  265. architectures have differing bus cycle timing layouts (i.e, the MC68020,
  266. MC68030, etc... run 3 clock asynchronous bus cycles normally at zero wait
  267. states).
  268.  
  269. VIII. Putting it all together
  270.  
  271.     Many factors are involved in the evaluation of a system's performance.
  272. But just as a computer is the sum of its parts, these factors cannot be
  273. considered alone.  They must be put together and seen in entirety in order
  274. to get a whole picture.  Moreover, the intent of the system in use is
  275. important in weighting these factors towards which are more influencing
  276. for any particular task.
  277.      As an example, consider a system primarily intended for data processing
  278. tasks.  One might expect that it should have a relatively fast CPU in order
  279. to work through the data at a reasonable pace.  However, if the system's
  280. memory resources are such that they require the addition of many wait states
  281. into their accesses, then some of the effect of having a fast CPU is offset.  Even further, what type of data is being processed?
  282. Then again, if the data is of a floating-point varieny, then a very fast
  283. CPU might not necessarily be as effective as a moderately fast Floating
  284. Point coprocessor added to the system.  Another important factor might be
  285. the amount of data which needs to be continously accessed from storage
  286. devices.  In the case where a great deal is being pulled from such devices,
  287. and they are slow in providing the data to the system, then no blazingly
  288. fast component elsewhere is going to be able to make that system setup mark
  289. high in it's environment as the data is only able to get to the 'fast'
  290. devices as fast as the 'slow' storage devices can provide it.
  291.      It is obvious that care must be taken in evaluating any system's
  292. performance in order to properly take into account all factors involved.
  293. This includes determination of the usage of the system, and how individual
  294. components may affect this speed.
  295.  
  296.                           THE COMMODORE AMIGA
  297.  
  298.      The Commodore Amiga is a particularly interesting system as a whole to
  299. evaluate, as it houses a fairly complex architecture for its relative price
  300. range.  It includes aspects of multiprocessing within it's design, as well
  301. as a multitude of different system layouts to consider.  However, only
  302. subsystems relevant to the type of testing performed by AIBB will be
  303. considered here, these being the 'core' elements of the system, discounting
  304. I/O devices and external communications units.  Of primary interest in this
  305. discussion is the system CPU, coprocessing devices, and memory subsystems of
  306. the Amiga.
  307.  
  308.                             I. System Layout
  309.  
  310. A. Primary system processors.
  311.  
  312.       The Motorola M68000 series of microprocessors is utilized as the
  313. main CPU in all Amigas in production today.  Various models of Amigas
  314. exist which utilize all of the primary variants of this microprocessor
  315. family, with third-party add-on accelerator units providing an upgrade
  316. path for many systems originally borne with earlier 68000 series CPUs.
  317. An overview of the various M68000 microprocessors and their main uses in
  318. Amigas is as follows:
  319.  
  320.       MC68000/MC68HC000
  321.               The MC68000 was the CPU the Amiga was born with, utilized in
  322.           the Amiga 1000 first, and subsequently in the A500 and A2000
  323.           stock system models.  This CPU is characterized by a 24-bit
  324.           address bus, giving it a 16 megabyte addressing capability, and
  325.           a 16-bit data bus.  This microprocessor is classified as being
  326.           a 16/32 bit device.  Its external data pathways are 16 bits
  327.           in size, while internally it supports a 32-bit model by
  328.           containing full 32-bit register implementations.
  329.               In all stock Amiga models utilizing this CPU, the device is
  330.           clocked at the rate of the system bus, approximately 7.15 MHz for
  331.           NTSC based systems, and about 7.09 MHz for PAL systems.  Certain
  332.           add-on accelerators do exist which are built around this CPU,
  333.           replacing the stock motherboard component with an add-on board
  334.           which runs the CPU at 14.28 MHz, or in some designs, 16.0 MHz.
  335.               Recently, the MC68HC000 variant of the 68000 has been
  336.           introduced into the Amiga market on an accelerator board.  The
  337.           68HC000 is a standard 68000, but manufactured in CMOS technology.
  338.           This design of the part allows it to run at higher clock rates,
  339.           and with less power consumption than the standard 68000.  Aside
  340.           from this, the 68HC000 is identical to the 68000 stock device.
  341.  
  342.       MC68010
  343.               This CPU has not seen wide use in Amiga systems, although
  344.           it can be found occasionally.  The MC68010 is pin-compatible
  345.           with the MC68000, allowing for simple drop-in replacement in any
  346.           system utilizing the latter.  Most systems do not see a
  347.           tremendous performance boost while utilizing the 68010 as it's
  348.           improvements over the 68000 are not a tremendous leap.
  349.               The MC68010 includes various internal microcode enhancements
  350.           over the MC68000, allowing for faster instruction execution in
  351.           some circumstances, as well as the addition of a specialized
  352.           programmer-transparent 'loop mode' which enhances CPU performance
  353.           in tight program loops by allowing said loops to be latched into
  354.           the CPU instruction prefetch queue where external bus cycles are
  355.           not necessary for the loop code proper.  As indicated earlier
  356.           though, this CPU has not seen a great deal of use in Amiga
  357.           systems, and is mostly found in circumstances where owners of
  358.           68000-based Amigas have chosen to replace their stock CPUs with
  359.           this device directly.
  360.  
  361.       MC68020
  362.               A major upgrade to the line, the MC68020 includes a great
  363.           many advances over the previous members of this microprocessor
  364.           family.  The MC68020 is the first fully 32-bit capable
  365.           microprocessor of the M68000 series, incorporating full 32-bit
  366.           address and data buses, as well as a 256 byte instruction cache,
  367.           in order to keep program code sections used often within a
  368.           fast-access medium.  The MC68020 is a major step above the
  369.           MC68000 or MC68010, with an architecture more capable of handling
  370.           larger demands upon its resources.
  371.               The 68020 is utilized in earlier acclerated Amiga systems,
  372.           including as the main processing engine of the first A2500 series
  373.           of machines which housed the CBM A2620 accelerator unit.  Many
  374.           acclerators using this CPU were produced by third-party
  375.           manufacturers, including low-cost units found in some A500 units,
  376.           as well as in the A2000 line.  In most designs, this CPU is
  377.           clocked at approximately 14.28 - 16.0 MHz, with a few of the
  378.           lower-cost accelerators running the CPU at the ~7.15 MHz (NTSC) /
  379.           ~7.09 MHz (PAL) system clock of the Amiga.
  380.  
  381.       MC68030
  382.               Improvements were made to the MC68020, including the addition
  383.           of a 256-byte data cache to complement the existing instruction
  384.           cache, and the inclusion of an on-board memory management unit
  385.           ( MMU ) in order to produce the MC68030.  Additional improvements
  386.           exist internally to this CPU over the MC68020 to give it a stand
  387.           against its generation of competing microprocessors.  The 68030
  388.           can be viewed as an incremental improvement to the 68020, adding
  389.           additional features but not being a tremendous architectural
  390.           change from its predecessor.
  391.               The MC68030 is found as the accelerated CPU of the later
  392.           A2500 series of Amigas, as well as being the main processor of
  393.           the Amiga 3000 line.  This microprocessor has also been widely
  394.           implemented in accelerator units for all models of Amigas and is
  395.           used at a wide variety of clock frequencies ranging from 16.0 MHz
  396.           to 50.0 MHz.
  397.  
  398.       MC68040
  399.               Currently found in a variety of accelerators, and as the
  400.           main processor for the A4000/040, the 68040 is a generation
  401.           leap over the previous MC68030 model and incorporates a great
  402.           many advances over all previous models in this series of
  403.           microprocessors. Both instruction and data caches found in the
  404.           MC68030 are present, but their size has been increased to 4K
  405.           bytes each.  In addition, the data cache of this processor now
  406.           supports a 'CopyBack' mode of operation, providing for faster
  407.           data access times by allowing memory writes to be deferred to the
  408.           cache until an update of memory contents is absolutely required.
  409.           On-chip MMUs exist for both data and instruction streams within
  410.           the CPU, and the internal pipelines have been further optimized
  411.           for increased performance.  A subset Floating Point Unit (FPU) is
  412.           also included on-chip for floating-point calculations.
  413.               The 68040 is at present found in only 25 and 33 MHz rated
  414.           varieties at this writing, though this will likely change in the
  415.           future.  Unfortunately, it does seem to be a developing trend in
  416.           the Amiga community to somewhat overclock the 68040, an action
  417.           neither sanctioned nor recommended by Motorola.
  418.  
  419.     There are several variants of these primary microprocessor models in
  420. production.  The newest such variants are the Motorola "EC" series of
  421. M680x0 parts, and "LC" series of MC68040 parts.  The "EC" ( Embedded
  422. Controller ) series are characterised by changes from the standard part
  423. ranging from simple packaging to the removal of certain internal features.
  424. This latter option is what has been taken with the MC68020, MC68EC030, and
  425. MC68EC040 parts.  The MC68020 is given by a 24 bit address range, as opposed
  426. to the normal 32 bit address range of the standard 68020 part.  Aside from
  427. this difference, it is identical to the 68020.  The MC68EC030 is
  428. characterized by the lack of an on-chip MMU.  It functions identically to
  429. the standard MC68030 with this exception.  The MC68EC040 and MC68LC040
  430. are similar to each other except that the on-board MMUs of the normal 68040
  431. are preserved, in the LC part, with just the FPU not functional on the unit,
  432. while the EC part removes both the FPU and MMU units from the chip.
  433.     At this point it is of interest to bring up a point of common interest
  434. with accelerated Amiga systems; that of asynchronous vs. synchronous
  435. accelerator designs.
  436.      Synchronous designs were the first accelerators to appear for the
  437. Amiga.  These are generally found in the MC68020 based accelerator units,
  438. and also in many of the low-cost MC68000-based accelerators.  A synchronous
  439. design is one in which the devices present on the accelerator are clocked
  440. at a rate which is absolutely synchronized to the main system clock signals.
  441. For the A500 and A2000, this means the clock rate of such accelerators
  442. must be an even multiple of the ~7.15MHz (NTSC) / ~7.09 MHZ (PAL) system
  443. clock rate.  Because of the difficulties involved in maintaining
  444. synchronicity at high clock rates, generally these accelerator units are
  445. restricted to about 14 MHz, or double the system clock rate.
  446.      Asynchronous designs, on the other hand, have no such restrictions.
  447. These units are somewhat more difficult to design, but in general the
  448. accelerator components may be operated at nearly any clock input, provided
  449. they are themselves capable of performing at the given frequency.  This
  450. operation mode is what all MC68030-based accelerator designs for the A500
  451. and A2000  utilize, thus giving the wide range of clock rates found in these
  452. accelerators.
  453.      It must be noted however that an ambiguity exists in the terms
  454. synchronous and asyncronous.  The 680x0 microprocessor series is characterized
  455. by normally running asyncronous bus cycles.  This simply means the processor
  456. initiates a read/write action, and it is up to the external device to terminate
  457. ( acknowledge ) the cycle, thus completing it.  This behavior is NOT related
  458. to accelerator design as might be confused by the use of the same terms.  In
  459. accelerator design terms, asyncronous and synchronous are designating how the
  460. accelerator state machine relates to the main system clock, and NOT how
  461. individual bus cycles are run by the CPU in general.
  462.  
  463.      Many accelerated Amigas also utilize an FPU for floating-point math
  464. intensive operations.  The main FPUs in use by the various Amigas available,
  465. and the add-on accelerators in use on the Amiga, are manufactured by
  466. Motorola as well, either as seperate coprocessor devices, or as in the
  467. case of the MC68040 are embedded within the main CPU itself.  An overview
  468. of the various FPUs in use is given below:
  469.  
  470.       MC68881
  471.              This is a seperate floating point coprocessor device
  472.          which provides fast hardware-supported floating-point operations
  473.          to any system software which supports it's use.  This unit does
  474.          provide a certain level of concurrancy, giving it the abililty to
  475.          perform certain instructions at the same time the main CPU is
  476.          performing other operations.  Support for this coprocessor is
  477.          provided either by a built-in hardware microcode interface, found
  478.          on the MC68020 and MC68030, or by software trap interfacing for
  479.          the MC68000 and MC68010.  The latter method is used in but a few
  480.          early Amiga accelerator boards, while the preferred interface,
  481.          that to the MC68020 or MC68030, is supported by virtually all
  482.          accelerators utilizing those CPUs.
  483.              The MC68881 may be run asynchronous to the CPU clock input,
  484.          meaning it need not run at the same clockspeed as the CPU itself.
  485.          Thus, a faster FPU may be used to give somewhat of a boost to
  486.          floating-point operations.  The MC68881s in use in Amigas today
  487.          are found mostly running at clock frequencies ranging from
  488.          12-20 MHz.
  489.  
  490.       MC68882
  491.               The successor to the MC68881, this unit incorporates the
  492.          same interface and operations as the former device, but with
  493.          certain internal enhancements.  The microcode for many operations
  494.          has been optimized for faster response, and support for further
  495.          multiple floating point instruction concurrency was added.  In
  496.          general this FPU will perform at about 1.5 times the speed of the
  497.          MC68881 at the same clock input frequency.  The MC68882 is
  498.          primarily operated at clock rates of 12-50 MHz, depending on the
  499.          accelerator or system utilizing it.
  500.  
  501.       MC68040
  502.               The MC68040 CPU incorporates an FPU within the processor
  503.          itself.  This FPU unit is a basic subset FPU of the MC68882,
  504.          eliminating mainly the transcendental (sin, cos, etc...), and
  505.          complex functions found in microcode on the former.  Nevertheless,
  506.          the optimized nature of the existing FPU instructions provided
  507.          allow for emulation of the missing functions in such a way as to
  508.          give faster execution than the MC68882 for almost all operations.
  509.  
  510. B. The custom chips.
  511.  
  512.      In addition to the main processing units, the Amiga also incorporates
  513. a number of custom designed devices, known collectively as the Amiga's
  514. custom chips.  Their primary purposes are varied, but they are generally
  515. in charge of such things as DMA access and arbitration to various memory
  516. areas, and graphics/sound generation and effects.  These custom chips are:
  517.  
  518.       Agnus/Alice
  519.               Probably the most talked about custom chip, Agnus is found
  520.          in a number of flavors, ranging from the original device, to the
  521.          'super' version found in the A3000.  Aside from minor internal
  522.          changes, the main differences between these different versions is
  523.          the amount of memory they can directly access.  Agnus is
  524.          responsible for for control of 25 system DMA channels, generation
  525.          of all system clocks in the A500 and A2000, and provides control
  526.          and addressing for CHIP RAM, which is the memory accessable by
  527.          these custom chips.  The size of this memory region is determined
  528.          by the Agnus in use, and is either 512 KBytes, 1 Megabyte, or
  529.          2 Megabytes in range.  As the custom chips are utilized primarily
  530.          for graphics and sound coprocessing tasks, all such data must be
  531.          located in this CHIP RAM area.
  532.              Agnus also contains within it what is referred to as a
  533.          Blitter.  This internal device is a fast memory copy unit designed
  534.          to move areas of memory as efficiently as possible, and has the
  535.          capability to also perform specific logic manipulations to the
  536.          data in the process.
  537.              Finally, Agnus also contains Copper.  Copper is the system's
  538.          Display Synchronized Coprocessor.  This device assists with screen
  539.          refreshes and display building, and is a major factor in the
  540.          Amiga's graphics engine.
  541.              Alice is the successor to Agnus, and part of the AGA graphics
  542.          chip found in the latest Amiga models.  Containing the same 16 bit
  543.          data bus interface to CHIP RAM, Alice is nonetheless capable of
  544.          directing 32-bit fetches to RAM, as well as take advantage of
  545.          double CAS page mode cycles, providing for a larger bandwidth to
  546.          memory, and increased performance.
  547.  
  548.       Denise/Lisa
  549.              The Denise custom chip is primarily responsible for color
  550.          generation and display resolution modes.  This chip also contains
  551.          the eight hardware display sprite controllers used in the system.
  552.              Lisa, part of the AGA custom chip set, is the replacement
  553.          for the aging Denise.  This new chip is implemented in full CMOS
  554.          technology, and incorporates the ability to handle up to 24-bit
  555.          RGB video, as well as do double 32-bit fetch cycles to memory
  556.          which increase its data bandwidth rate to 64 bits per cycle, or
  557.          four times that of the earlier Denise chip.
  558.  
  559.       Paula
  560.              Paula is a more or less diverse device.  It controls sound
  561.          generation, contains the system floppy disk control circuitry,
  562.          and houses the I/O control circuitry for the disks as well as
  563.          external control ports.  Paula also contains an interrupt control
  564.          system for various system operations.
  565.  
  566.     The custom chips of the Amiga and the coprocessors associated with
  567. them are designed in such a way as to alleviate the main CPU of many
  568. intensive tasks, such as graphics operations and sound generation.  They
  569. support a concurrent level of operation, allowing the main CPU to continue
  570. with non-specific computing tasks while the custom chips handle their
  571. respective operations.  The devices are capable of DMAing directly into
  572. the CHIP RAM area, freeing the CPU completely from task responsibility
  573. in those respects.
  574.  
  575. Bus layout.
  576.  
  577.     The seperation of operations and the definition of the CHIP RAM memory
  578. area is further accentuated by the fact that the Amiga utilizes two buses
  579. along these lines.  The CHIP RAM bus is a seperate entity from the main bus
  580. utilized by the CPU and other devices, but is accessable by the CPU as
  581. well.  The seperation can even be greater given the fact that the CHIP RAM
  582. bus can be decoupled from the CPU bus completely under certain
  583. circumstances.
  584.     The CHIP RAM bus is primarily utilized by the custom chips, with the
  585. CPU being given access to it on an interleaved cycle basis ( every other
  586. bus cycle can be a CPU access cycle ).   The custom chips have priority in
  587. this domain, and this is where the idea of bus contention arises.  If a
  588. great deal of bus activity is in progress by the custom chips, they may
  589. 'lock out' the CPU, forcing it to wait if it needs data or information
  590. from this bus' memory space.  This is where the touted 'FAST RAM' comes in.
  591.     FAST RAM is memory not on the CHIP RAM bus, but rather on the main
  592. system bus or expansion bus.  This memory is not accessable by the custom
  593. chips, and thus no contention for it's access occurs between them and
  594. the CPU.  Due to the seperate nature of the buses, it is possible for the
  595. CPU to be processing instructions and data utilizing FAST RAM while the
  596. custom chips are concurrently operating in the CHIP RAM area.  This
  597. parallel operational status allows the Amiga to perform a great variety
  598. of graphics operations in such a way as to done on a bus which is not
  599. operated at a great speed.
  600.     The CHIP RAM bus on all Amigas is operated at a clock frequency of
  601. approximately 7.15 MHz.  On the A500 and A2000, this is the main system
  602. clock frequency.  For those machines, the CHIP RAM bus is accessed via
  603. a 16-bit wide bus port, while on the later A3000/A4000 systems the bus port
  604. for external accesses is a full 32-bit interface, affording larger data
  605. transfer sizes at the same clock rate.
  606.     Because of bus contention, a system containing only CHIP RAM may very
  607. well have slower operations than one which contains FAST RAM as well.  The
  608. FAST RAM equipped machine will be capable of having the CPU operate
  609. concurrently on information on that bus, while the custom chips operate on
  610. their tasks.  The CHIP RAM only system is going to have circumstances where
  611. the CPU will be forced to wait to access data, as the custom chips may be
  612. utilizing the CHIP RAM bus heavily.
  613.     FAST RAM in the A500 and A2000 series of machines can be located on
  614. many devices, from standard expansion card extenders which exist on the
  615. system expansion bus and operate at the system clock frequency, to other
  616. methods of RAM addition which have been devised that do not directly use
  617. the common Amiga expansion routes.  FAST RAM located along the standard
  618. expansion backplane on these systems operates at the system bus clock
  619. rate ( 7.15 MHz ), and is accessed accordingly.  On A3000 machines, FAST
  620. RAM is generally located on the system motherboard, and is accessed
  621. according to the system clock rate of those machines, which on stock models
  622. may be 16 or 25 MHz.
  623.     It should be noted that some systems utilizing only 512K of CHIP RAM
  624. have in their memory lists a region of RAM which is called FAST, but in
  625. fact is on the same bus as CHIP RAM.  This is generally the memory found
  626. on the A2000 motherboard for 512K CHIP RAM machines, or on the A501
  627. expansion card for A500s.  This memory will suffer from the same bus
  628. contention that CHIP RAM is exposed to, and thus it is generally advisable
  629. to be sure that program code is not put here unless it has to be ( e.g, if
  630. true FAST RAM exists, it should be prioritized ).  The utility program
  631. "FastMemFirst" supplied by CBM is meant to do just that.
  632.     FAST RAM located within the domain of an accelerator is not limited to
  633. the system bus clock rate.  It may be operated at such, but in general can
  634. be accessed at a clock rate much different, usually at the accelerator's
  635. CPU clock.  Systems utilizing accelerators benefit from this setup, as
  636. an accelerator does not change the system clock rate, and therefore in
  637. order for an accelerator's CPU to use system resources, it has to
  638. synchronize with the system clock, and may even have to contend with a
  639. narrower bus interface.  Such is often the case on the A500/A600 or A2000
  640. when utilizing MC68020 or MC68030 based accelerators, which are best suited
  641. for 32-bit bus ports.  Since those processors take a performance hit when
  642. accessing narrower bus ports, as well as a hit from the possibly slower
  643. clock rate of the system bus, accelerators often are equipped with their
  644. own RAM resources which is designed to operate at the CPU clock frequency
  645. and utilizes a more efficient bus port size ( 32-bit ).  The case with the
  646. A3000/A4000 is slightly different.
  647.     The A3000 and A4000 utilize a 32-bit bus for their memory resources
  648. already, therefore this is not a problem with accelerators for those
  649. machines.  However, the bus on the A3000/A4000 is clocked at 16 or 25 MHz
  650. ( depending on the model ), and if a faster CPU is used in an accelerator
  651. it may be profitable for the unit to contain it's own RAM resources in order
  652. to lower access delays to a minimum.  The A3000/A4000 does include
  653. provisions for an accelerator to supply it's own clock signal to the
  654. motherboard, but as of this writing, this has not been employed by any
  655. devices.
  656.  
  657.                         II. Summary and overview.
  658.  
  659.     It can be seen from all this that there is a great deal to be visualized
  660. when trying to make a comparison of system performance levels.  A great
  661. many factors come into play when trying to determine just what system is
  662. best and quickest for the task at hand.  Various factors can determine how
  663. efficient an accelerator is on a particular system, or how efficient a
  664. system is in general.  Interface efficiency, accelerator or general
  665. system design, and intended use all play a part in determining which setup
  666. is the 'winner' in the speed race.  Indeed, there may not be a winner,
  667. except in a particular task category, and this must always be remembered.
  668.     No benchmark or performance test can possibly hope to test all of these
  669. categories, and the others which also play roles.  Thus, it is necessary
  670. to utilize data obtained from any set of benchmarks as only a portion of
  671. the picture to be analyzed, and not as a rock-solid performance indication.
  672. System design has improved to the point where many benchmarks can be fooled
  673. into giving higher performance measures than would be found in any typical
  674. application.  As benchmarks are typically small pieces of code, they must
  675. be evaluated as such.  They can indeed give clues as to the performance
  676. level of a system, but certainly not a definitive answer.
  677.  
  678.  
  679.                            OVERVIEW OF AIBB
  680.  
  681.     Amiga Intuition Based Benchmarks ( AIBB ) is a program primarily
  682. designed to test various aspects of system performance at the CPU and
  683. accompanying device level.  It does not test such things as I/O efficiency
  684. and storage media data retrieval and placement efficiency ( storage I/O ).
  685. The tests contained within AIBB by no means give a complete picture of any
  686. system's performance level, but does provide some basic information and
  687. comparison data for a variety of systems.
  688.     AIBB is divided into a number of sections.  Several are simply
  689. informative in nature and are designed to give a better picture of the
  690. system conditions during the actual testing phases.  Other portions of the
  691. program allow for a certain measure of system control, giving the ability
  692. to somewhat modify the parameters under which tests are performed.  It is
  693. important to try to pay attention to the parameters and information given
  694. by AIBB, as they may in turn give important clues as to the nature of the
  695. test results reported.
  696.     AIBB is set up to allow a user to perform a number of tests on the host
  697. system, and compare those results against a series of other systems.
  698. Comparison data is given in both graphical and numerical form.  AIBB also
  699. allows the entire series of tests to be performed, and the results and
  700. system state stored as a "load module" which may later be loaded and used
  701. as one of the comparison systems against which a possibly different host
  702. will be checked against.  Tests may be manipulated by code type and system
  703. situation in order to allow a better picture of the system performance
  704. criteria being looked at.
  705.  
  706. I. System Requirements.
  707.  
  708.     AIBB may be run on any Amiga system utilizing AmigaOS 1.3 or greater,
  709. but it should be noted that the tests performed are designed primarily for
  710. accelerated systems or fast systems in general.  Therefore, tests may be
  711. exceedingly long on Amigas utilizing slower CPU units, and the general
  712. speed of the program may seem a bit slow on such platforms.
  713.     Users of MC68040 based systems must be utilizing AmigaOS 2.0 or
  714. greater in order to run AIBB.  Modified versions of AmigaOS 1.3 do exist
  715. which are patched to somewhat deal with the problems of that OS version
  716. and the 68040, but as per CBM's official stance, this is not a supported
  717. method of utilizing the 68040 as a system processor.  For this reason,
  718. AIBB will abort if it detects a 68040 and the system OS version is less
  719. than 2.0.
  720.     AmigaOS 1.3 users with accelerators must be sure to be using the latest
  721. SetPatch routines for those OS versions. ( SetPatch v1.34 )  SetPatch
  722. corrects a problem with FPU code with those OS versions, and is necessary
  723. for proper operation of AIBB.  AmigaOS 2.0x also is shipped with a SetPatch
  724. routine which should be executed in the Startup-Sequence to assure any
  725. future OS bug fixes and corrections will be applied.
  726.     When AIBB first starts up, it performs a series of system tests to
  727. determine the type of system it is being operated on, ascertaining such
  728. things as CPU type, FPU type, MMU type, etc.  Unfortunately, some low-cost
  729. accelerator units may experience a problem here...most notably in the
  730. MMU type tests.
  731.     The MMU on systems which house the unit as a seperate device ( such
  732. as 68020 + 688851 systems ) is treated by the CPU as an external
  733. coprocessor...much like the FPU on such systems is.  The MMU or FPU in
  734. such a setup responds to an instruction when the instruction coprocessor
  735. ID field matches the hardware set ID of the device.  This allows more than
  736. one coprocessor in a system ( such as both an MMU and FPU ).  The ID
  737. decoding mechanism is handled in hardware...and this is where the problem
  738. arises with some accelerators.  Such accelerators do not fully decode the
  739. coprocessor ID, and thus the FPU may respond as an MMU, etc.  Most of the
  740. time this causes no problems to the system, but it does for AIBB which is
  741. looking for these devices.  Unfortunately, AIBB will most likely not work
  742. on systems afflicted with this until the hardware bug is corrected by the
  743. manufacturer.  It should be noted that most systems/accelerators do NOT
  744. have this problem, but a few may show up from time to time.
  745.     This program does not absolutely have any absolute requirements other
  746. than those previously mentioned in order to be operated, but it does have
  747. some suggested configurations.  In order to utilize the program's file
  748. functions, AIBB must be able to find one of the following shared libraries
  749. in the libs: directory on your system disk:
  750.  
  751.           1.  asl.library       ( AmigaOS 2.0 systems only )
  752.           2.  kd_freq.library   ( library version 3.0 or greater )
  753.           3.  req.library       ( library version 2.0 or greater )
  754.           4.  reqtools.library
  755.  
  756. AIBB will search for these libraries in this order, and utilize the first
  757. one found.  Primarily, the library need is for file requester utilizing
  758. functions within AIBB.  AIBB will still operate without finding one of
  759. these libraries, but it will block access to the file-requesting functions
  760. it normally provides.
  761.     This will be the last version of AIBB to include support for AmigaOS
  762. versions below 2.0.  At this time, more effort is being placed into
  763. compatibility with later AmigaOS generations, and this will be the mode
  764. of support emphasized.
  765.  
  766. Getting Started.
  767.  
  768.     AIBB may be started from either the CLI/Shell or WorkBench.  If the
  769. latter method is used, it is imperative that the icon used ( if not the
  770. supplied one ) have it's STACK value set to 20000.  AIBB invocations from
  771. the CLI/Shell have no special requirements or stack settings as AIBB will
  772. perform the necessary set-up in this environment.  It is recommended that
  773. careful attention be paid to the existing system memory resources before
  774. starting AIBB.  AIBB is quite large, and if you wish it and it's test code
  775. to be loaded into a certain memory medium ( generally a fast medium if
  776. possible ), then enough contiguous memory must exist in that memory region.
  777. AIBB will give information as to where exactly it's code is located, but
  778. if you are interested in loading AIBB in a certain region, this must be
  779. taken into account BEFORE starting the program.
  780.     Several options are available from the command line when invoking AIBB
  781. from the CLI/Shell, or equivalently through the icon TOOLTYPES array when
  782. starting from the WorkBench. These options are listed below:
  783.  
  784. CLI/Shell Options:  These options must be preceded by a dash ('-'), with
  785.                     no spaces between the dash and the option.  The
  786.                     argument following the option is listed below as <arg>
  787.                     and should be formatted as such: -<option><arg>, such
  788.                     as -m0.
  789.  
  790.           -c<arg>:  Sets the CPU type AIBB will use for the host system.
  791.                     Available arguments are:
  792.  
  793.                                  0  :  68000 CPU
  794.                                  1  :  68010 CPU
  795.                                  2  :  68020 CPU
  796.                                  3  :  68EC020 CPU
  797.                                  4  :  68030 CPU
  798.                                  5  :  68EC030 CPU
  799.                                  7  :  68040 CPU
  800.                                  8  :  68EC040 CPU
  801.                                  9  :  68LC040 CPU
  802.  
  803.                     Any other value will be ignored.
  804.  
  805.           -f<arg>:  Sets the FPU type AIBB will use for the host system.
  806.                     Available arguments are:
  807.  
  808.                                  0  :  NO FPU
  809.                                  1  :  68881 FPU
  810.                                  2  :  68882 FPU
  811.                                  3  :  68040 FPU (Internal)
  812.  
  813.                     Any other value will be ignored.
  814.  
  815.           -m<arg>   Sets the MMU type AIBB will use for the host system.
  816.                     Available arguments are:
  817.  
  818.                                  0  :  NO MMU
  819.                                  1  :  68851 MMU
  820.                                  4  :  68030 MMU (Internal)
  821.                                  7  :  68040 MMU (Internal)
  822.  
  823.                      Other values will be ignored.
  824.  
  825.           -cs<arg>   Sets the CPU clockspeed aibb will show/use for the
  826.                      host system.  The argument field should be a valid
  827.                      clockspeed rating, such as 25.0 for a 25MHz rating.
  828.  
  829.           -fs<arg>   Sets the FPU clockspeed aibb will show/use for the
  830.                      host system.  The argument field should be a valid
  831.                      clockspeed rating, such as 25.0 for a 25MHz rating.
  832.  
  833.           -b         This option accepts no arguments.  Supplying it on
  834.                      the command line turns off the 'Click' sound AIBB
  835.                      makes when a gadget is pressed.
  836.  
  837. WorkBench options:  These options mimic the ones given above for the
  838.                     CLI/Shell, with the exception that they are contained
  839.                     within AIBB's icon TOOLTYPES field.  The options
  840.                     available are:
  841.  
  842.           CPU=<arg>:
  843.                     Sets the CPU type AIBB will use for the host system.
  844.                     The CPU type may be specified as:
  845.  
  846.                                  68000
  847.                                  68010
  848.                                  68020
  849.                                  68EC020
  850.                                  68030
  851.                                  68040
  852.                                  68EC030
  853.                                  68EC040
  854.  
  855.                     For example, to specifiy a 68EC030 CPU, the option
  856.                     to give would be CPU=68EC030.
  857.  
  858.           FPU=<arg>:
  859.                     Sets the FPU type AIBB will use for the host system.
  860.                     The FPU type may be specified as:
  861.  
  862.                                  NONE
  863.                                  68881
  864.                                  68882
  865.                                  68040
  866.  
  867.                     For example, to specifiy no FPU, the option to give
  868.                     would be FPU=NONE.
  869.  
  870.           MMU=<arg>:
  871.                     Sets the MMU type AIBB will use for the host system.
  872.                     The MMU type may be specified as:
  873.  
  874.                                  NONE
  875.                                  68851
  876.                                  68030
  877.                                  68040
  878.  
  879.                     For example, to specifiy no MMU, the option to give
  880.                     would be MMU=NONE.
  881.  
  882.           CPUSPEED=<arg>:
  883.                     Sets the CPU clockspeed aibb will show/use for the
  884.                     host system.  The argument field should be a valid
  885.                     clockspeed rating, such as 25.0 for a 25MHz rating.
  886.                     For example: CPUSPEED=16.0 would set a CPU speed of
  887.                     16.0MHz which AIBB will then use internally.
  888.  
  889.           FPUSPEED=<arg>:
  890.                     Sets the CPU clockspeed aibb will show/use for the
  891.                     host system.  The argument field should be a valid
  892.                     clockspeed rating, such as 25.0 for a 25MHz rating.
  893.                     For example: CPUSPEED=16.0 would set a CPU speed of
  894.                     16.0MHz which AIBB will then use internally.
  895.  
  896.           NOBUTTONBEEP:
  897.                     Using this tooltype option turns off the click sound
  898.                     AIBB uses when a gadget is depressed.
  899.  
  900. IMPORTANT:
  901.     The CPU/FPU/MMU options given above are for special circumstances only!
  902. Normally, AIBB will determine all of the above independently, and tampering
  903. with these values will be detrimental.  However, these options can come in
  904. very handy under certain circumstances.
  905.     Some accelerator models on the market suffer from a hardware bug:  They
  906. do not properly decode the coprocessor ID in hardware for systems with
  907. such devices.  The end result is attempted accesses to an MMU may end up
  908. with the FPU on the system erroneously responding instead.  Now, since AIBB
  909. relies on an 'exception' occuring when no MMU exists in its efforts to ID
  910. the system MMU, this becomes a problem if the FPU responds instead.  The
  911. result of this is that AIBB may fail to function properly on such systems,
  912. and this is where the above options come in.
  913.     When the options above are specified, AIBB will take them at face value.
  914. No further testing of the system is attempted.  Therefore, by specifying
  915. various values, the problem above can be circumvented as AIBB will not
  916. perform the internal checks which may cause errors.  If you suspect your
  917. system is one with such a hardware bug, try manually setting the system
  918. CPU, FPU, and MMU types to see if this cures the problem.  You should not
  919. have to set the device clockspeed ratings manually, as AIBB will still
  920. be able to perform this.
  921.  
  922.                         ------------------------
  923.  
  924.     ONCE AGAIN, do not take the CPU/FPU/MMU command options lightly!  If
  925. false values are given, it may very well result in program errors within
  926. AIBB, or possibly a system failure.  Under most circumstances, you will NOT
  927. need to use these options AT ALL, and can allow AIBB itself to determine the
  928. system configuration.
  929.  
  930.                         ------------------------
  931.  
  932.     Under some circumstances, AIBB may request that the processor type
  933. be supplied manually by the user.  This is primarily in situation where
  934. AIBB can't positively determine whether a 68EC030 or 68030 exists, or in
  935. the case of 68LC040/68EC040 determination.  If AIBB requests this
  936. information, please supply the correct processor type, as failing to do
  937. so can result in serious problems on occasion.  This is especially true
  938. in the case of the 68EC030 vs. the standard 68030.  AIBB may not be able
  939. to determine the exact processor in this case if for some reason the
  940. MMU enabled bit is set in the processor's Translation Control ( TC )
  941. register.  Both the 68EC030 and 68030 have valid TC registers, even if
  942. with the EC part the MMU is non-functional.  Since AIBB attempts to
  943. parse MMU tables if the MMU is active (for locating system structures),
  944. fooling AIBB into thinking that an EC part is a standard 68030 in the
  945. case of a seemingly active MMU can result in AIBB attempting to parse
  946. a non-existant MMU table. This can be very problematic, and in extreme
  947. cases result in a system failure.
  948.  
  949.                         ------------------------
  950.  
  951.     Once AIBB loads, a few moments may be needed by the program while
  952. it evaluates the system it is being operated on, the exact time depending
  953. on the relative speed of the host system in question.  A screen displaying
  954. a message of that sort will be given while this is in progress.  Following
  955. this evaluation, you will be presented with AIBB's main program screen.
  956.  
  957.  
  958.                       III. Operation/Features of AIBB
  959.  
  960. A. Main Screen Description
  961.  
  962.     AIBB's primary screen consists of several informational areas designed
  963. to provide information about test operations and basic system information.
  964. These areas are divided up as follows:
  965.  
  966.     Performance Graph
  967.             The performance graph is a bar graph display of the comparisons
  968.         made after each test is performed.  Ratings are given in reference
  969.         to the base machine for comparisons, with the highest performing
  970.         system having it's bar displayed in RED, while all others are
  971.         in YELLOW.  Note that although numerically two machines may have
  972.         the same results out to 2 decimal places, AIBB may still show one
  973.         in red.  This is due to rounding, and the fact that the one
  974.         highlighted machine does in fact have a higher rating if a few
  975.         more decimal places were shown numerically.  However, such small
  976.         quantities should not be taken literally, as far too many variables
  977.         exist to use such values in accurate comparisons.
  978.  
  979.     Test Result/Information
  980.             This area provides several pieces of data.  First, it gives the
  981.         name of the test last whose information is being displayed
  982.         currently.  The numerical result of the test performed is given
  983.         here, as well as the memory node reference number where the test
  984.         code, and possibly any test data is located.  To reference these
  985.         node numbers, please see the section on the "System Information
  986.         Display".
  987.  
  988.     Base Machine Indication
  989.             Below the Test Result/Information area is a small reference
  990.         which lists the current comparison system being utilized as the
  991.         base for all comparisons performed.
  992.  
  993.     Comparison Information
  994.             This section provides several key pieces of information about
  995.         test performance.  It gives the numerical ratings of all systems
  996.         utilizing the base machine as a reference.  These value are the
  997.         same as those used to generate the performance graph.
  998.             The system headers here which label the machine in each
  999.         row are in fact gadgets that when pressed will move AIBB to its
  1000.         System Information Display, showing data on the system selected.
  1001.             In addition, this area houses the test code type gadgets/
  1002.         indicators.  Selection of code options for the host system causes
  1003.         AIBB to perform any tests utilizing those options.  Selections
  1004.         under the comparison systems result in AIBB using the figures for
  1005.         that code type ( previously obtained when the comparison data was
  1006.         generated ) when making comparisons.  Note that not all options
  1007.         will be available, dependent on system capabilities.
  1008.             The gadgets allow for seperate selection of CPU and floating
  1009.         point code models.  Floating point code selections will only have
  1010.         effect on tests which use such operations, while the CPU code
  1011.         model will be in effect across all tests.  Thus, when performing
  1012.         a non-floating-point test, the current floating point code model
  1013.         selection is ignored.
  1014.             The gadgets are cyclic in nature; repeated selection will move
  1015.         them through all available code models.  The currently available
  1016.         CPU code types are:
  1017.  
  1018.         Standard 68000 Code
  1019.                  Having this item selected sets the code type to that which
  1020.              is compatible with all MC680x0 series microprocessors.  Note
  1021.              that this means no advantage is taken of the capabilities
  1022.              or code optimizations available on later-generation
  1023.              microprocessors of this series, but it is a good base
  1024.              selection as it can be utilized on all existing Amiga systems.
  1025.  
  1026.         68020+ Code
  1027.                  This item selects code compatible with later generation
  1028.              MC680x0 series processors.  It will not be compatible under
  1029.              most circumstances with earlier ( MC68000 or MC68010 ) based
  1030.              systems, but will take advantage of some of the more advanced
  1031.              capabilities of these later processors in the series.
  1032.  
  1033.         The currently available floating point code options are given
  1034.         below.  As indicated earlier, they will affect only tests which
  1035.         utilize floating-point math in nature.
  1036.  
  1037.         Standard Math Code
  1038.                  Using this option sets the code type to use software
  1039.              emulation of floating point routines.  This is compatible with
  1040.              all Amiga systems in use, as it is not hardware specific.
  1041.  
  1042.         In-Line Coprocessor Code
  1043.                  This option sets the test code type to that which uses
  1044.              faster in line FPU instructions for floating point operations.
  1045.              As not all systems will have a coprocessor available, this
  1046.              option is not universally usable on all systems.
  1047.  
  1048.         68040 Enhanced Math Code
  1049.                  For use with 68040-based systems, this option allows the
  1050.              use of FPU code which is more optimized for 68040 processors.
  1051.              Such processors do not have hardware-assisted transcendental
  1052.              functions and this option will set up for in-line emulation of
  1053.              such, alleviating the need for trap-based libraries such as
  1054.              68040.library or similar vendor supplied code.
  1055.  
  1056.     Basic Information
  1057.             Located just below the performance graph, this area provides
  1058.         key pieces of information about the current state of the host
  1059.         system. The system CPU type, FPU type, and MMU type in use are
  1060.         displayed, as well as the current operational status of the MMU.
  1061.         Also displayed are the approximate CPU and FPU clock speed ratings,
  1062.         as calculated when AIBB first evaluated the host system on startup.
  1063.             This area also contains the system cache status indicators/
  1064.         gadgets.  These show the current state of any CPU caches which may
  1065.         exist, and also allow their condition to be changed by selecting
  1066.         the cache parameter desired.  Clicking on a particular parameter
  1067.         toggles it through both its 'ON' and 'OFF' states.
  1068.             A lot of confusion tends to exist about the CPU cache modes,
  1069.         and the MC680x0 cache BURST mode ( supported on the MC68030 and
  1070.         MC68040 ) is often not understood.  BURST mode operations are a
  1071.         special form of cache filling ( updating the contents of the cache ) where an
  1072.         entire 'line' of cache data may be filled sequentially and faster
  1073.         than the single-entry mode of cache filling.  A cache 'line' in
  1074.         this case is a series of 4 longwords ( 32 bits each ) arranged
  1075.         simplistically as:
  1076.  
  1077.                         entry:   1    2    3    4
  1078.  
  1079.                         line 1  ---- ---- ---- ----
  1080.                         line 2  ---- ---- ---- ----
  1081.  
  1082.         where each entry is one longword.  The MC68020 and MC68030 utilize
  1083.         cache sizes of 16 lines, giving 256 bytes of cache storage.  The
  1084.         MC68040 increases this to give a total of 4K of cache space for
  1085.         each of data and instruction cache.
  1086.             BURST mode is essentially a compromise in performance.
  1087.         Average-case CPU performance is enhanced at the cost of worst-case
  1088.         performance.  The latter is true because during BURST mode
  1089.         operations the CPU bus controller is committed to a memory fetch
  1090.         sequence for a longer period of time than with single-entry mode.
  1091.         The mode enhances average and best case performance by allowing the
  1092.         CPU to sequentially fetch 3 additional longwords from memory faster
  1093.         than normally done by the usual asynchronous single-fetch bus cycle.
  1094.         Once it has fetched the first longword, the next 3 are clocked into
  1095.         the cache line utilizing only 2 clocks per fetch, thus filling one
  1096.         cache 'line' in 9 clocks ( assuming a zero-wait state initial
  1097.         fetch ) rather than 15 clocks.  The theory behind this is that the
  1098.         data/operands sequentially surrounding the initial fetch will most
  1099.         likely be needed soon in any case, and placing them in the cache
  1100.         leads to their eventual faster access.
  1101.             BURST mode operations are not universally applicable to all
  1102.         systems however.  Generally, the memory controller on the system
  1103.         ( or particular memory board ) must be capable of supporting BURST
  1104.         mode operations, or the BURST request by the CPU will not be
  1105.         fulfilled.  In systems not capable of these modes, activating them
  1106.         will not be detrimental, but will go unnoticed in performance terms.
  1107.         The CPU will request BURST fills when it deems appropriate, but the
  1108.         memory controller will not acknowledge the request and thus simply
  1109.         force the CPU to do single-entry fetches as in standard operation.
  1110.  
  1111.     Test Activation Gadgets
  1112.             These are located in the lower right-hand corner of the screen
  1113.         and serve several purposes.  Normally, they are utilized to start a
  1114.         test, but this is dependent upon the mode of operation AIBB is
  1115.         currently in.  See the section on "Review Mode" for further
  1116.         information of this nature.
  1117.             Activation of a gadget in standard mode starts a test with the
  1118.         current code parameters and general settings, as detailed in the
  1119.         appropriate sections later.  Tests are divided into two groups:
  1120.         "Standard" and Floating-Point.  Standard test types, denoted with
  1121.         AQUA lettering, are more general to the system, and represent code
  1122.         more often found in operational situations.  Floating-Point tests,
  1123.         given YELLOW lettering, utilize a great deal of floating-point math
  1124.         to test the system's performance across that domain. See the test
  1125.         descriptions for more detailed information on the tests available
  1126.         within AIBB.
  1127.  
  1128. B. Main Screen Menus.
  1129.  
  1130. AIBB's primary screen has attached to it a number of menu items, which
  1131. give even more options and control over program operation.  Those operations
  1132. are described below, in the order of the menus as they appear on the screen.
  1133.  
  1134. Menu 1: General
  1135.  
  1136.         About AIBB
  1137.                 This option presents a requester giving credits and
  1138.             information about this version of AIBB.
  1139.  
  1140.         Load Module Prefs
  1141.                 AIBB allows the use of alternate systems than those
  1142.             contained internally in order to make comparisons against
  1143.             the host system.  This menu item will bring up a requester-like
  1144.             arrangement which will allow the paths to load modules to be
  1145.             used in place of the internal defaults to be specified.  To
  1146.             replace an internal module at startup for comparisons, simply
  1147.             enter the full path name to the alternate load module in the
  1148.             respective entry in this requester.  Leaving an entry blank
  1149.             informs AIBB to use it's internal default for that system.
  1150.             Note that this configuration will take effect when AIBB is
  1151.             next started, and the the next menu item, "Save Configuration"
  1152.             as detailed below, must be selected to save the choices made
  1153.             here.
  1154.  
  1155.         Color Settings
  1156.                 The colors AIBB uses for its main screen displays are
  1157.             user selectable, and may be changed if personal taste desires.
  1158.             This menu option will bring up a color requester which will
  1159.             allow AIBB's palette to be modified to suit.  This may be
  1160.             particularly useful for users of monochrome monitors which can
  1161.             only display levels of grey, rather than color.  Under such
  1162.             circumstances some of AIBB's normal colors may map to grey
  1163.             shades so similar as to be indistinguishable on the screen.
  1164.             Use of this option can correct such a situation.
  1165.                 Use of the "Save Configuration" menu item will save the
  1166.             color palette chosen with this option to file, and AIBB will
  1167.             use that palette in subsequent invocations.
  1168.  
  1169.         Save Configuration
  1170.                 This saves the current state of AIBB's menu item selections,
  1171.             as well as the current order of the comparison machines as they
  1172.             are placed.  For more information on these regards, see the
  1173.             section on loading new comparison modules from the default
  1174.             systems within AIBB.  AIBB currently saves this data to a file
  1175.             called "aibb.prefs", which may be located in an assigned
  1176.             directory called AIBB:, or your system S: directory.  This
  1177.             file will be searched for, in that order, when AIBB is first
  1178.             invoked, and the values contained within will set AIBB's
  1179.             startup options.  If AIBB cannot locate a preferences
  1180.             configuration file, it will notify you and use internal
  1181.             default values.
  1182.  
  1183.         QUIT
  1184.             This item forces termination of AIBB.
  1185.  
  1186. Menu 2: Systems
  1187.  
  1188.         AIBB Task Priority
  1189.                  A submenu-endowed item, this selection allows for the
  1190.              changing of AIBB's task priority.  This is primarily for
  1191.              running tests while still allowing multitasking to occur,
  1192.              while examining the effects of different task priority levels.
  1193.              For information on disabling multitasking during test
  1194.              operations, see the "Disable Multitasking" entry under the
  1195.              Test Options menu descriptions.
  1196.  
  1197. Menu 3: Test Options
  1198.  
  1199.         Disable Multitasking
  1200.                  When this item is selected, it indicates AIBB should
  1201.              perform all tests in such a way as to disable all system
  1202.              multitasking during the run of any test.  This allows a figure
  1203.              to be generated which indicates the system performance FOR
  1204.              THAT TEST more accurately, as there is no task context
  1205.              switching during the test runs.  Note that all comparison
  1206.              system figures are generated with this option enabled, so this
  1207.              should be selected in order to compare the systems on an even
  1208.              par.  When this item is utilized, the previously mentioned
  1209.              ability to set AIBB's task priority will have no impact on
  1210.              test performance, as no task switching will occur, and thus
  1211.              the task priority level becomes meaningless.
  1212.                  It should be noted that when using this option, it is a
  1213.              good idea NOT to be running much in the background.  The
  1214.              Amiga's operating system is a near-real-time setup, requiring
  1215.              in many cases fast response to system conditions.  Use of this
  1216.              option can affect certain other operations adversely, most
  1217.              notably that of serial communications and the like.
  1218.  
  1219.         Screen Overlay
  1220.                  Using this option results in AIBB putting a one bitplane
  1221.              ( two color ) low-resolution screen over it's main screen
  1222.              during every test.  AIBB's normal screen is a high-resolution
  1223.              4 bitplane ( 16 color ) screen, and on CHIP RAM only systems,
  1224.              and for some tests even on FAST RAM equipped systems this may
  1225.              result in a great deal of bus contention on the CHIP RAM
  1226.              bus.  Subsequently, performance levels may be adversely
  1227.              affected for the test.  The use of this option attempts to
  1228.              alleviate some of this problem by utilizing a screen overlay
  1229.              which minimizes bus contention on the CHIP RAM bus by limiting
  1230.              the required DMA activity by the custom chips to display it
  1231.              while it is the topmost screen.  Again, all comparison data
  1232.              for the other systems is obtained with this option enabled,
  1233.              so in order to keep comparisons on par this option should be
  1234.              enabled, which it is by default values.
  1235.                  Note that for graphics-related tests this option will not
  1236.              be activated as it would be detrimental to what those tests are
  1237.              indeed trying to analyze.  It is advised that if this option
  1238.              is enabled while multitasking is permitted that screens not
  1239.              be shuffled while a test is in progress.  The uppermost screen
  1240.              is the cause of the CHIP RAM bus display DMA effects, and to
  1241.              shuffle to another screen during a test could nullify the
  1242.              advantage of using this option.
  1243.  
  1244.         Set Gfx Test Display Mode
  1245.                  AIBB allows all graphics tests to be run on any system
  1246.              supported display mode, and this option allows the user to
  1247.              select the display resolution and depth (number of colors)
  1248.              to use when running such tests.  Selection of this menu item
  1249.              brings up a screen mode requester via the asl.library
  1250.              requester functions.  As versions of asl.library which support
  1251.              the screen mode requester are required for this to function,
  1252.              the host system must be running AmigaOS 2.1 or greater.
  1253.                  Once a particular screen mode is selected, any graphics
  1254.              tests run will be done in that mode.  This is particularly
  1255.              useful for comparing the effects of differing resolutions and
  1256.              display depths on graphics performance levels.  One must be
  1257.              careful to take note of the modes used for the other systems
  1258.              as well, else improper conclusions as to how well a system
  1259.              does in these tests could be drawn.  For this reason, AIBB
  1260.              will post a warning if the screen mode of either the host
  1261.              system, or a comparison system does not match the modes in use
  1262.              on the other machines.  If simple, fair and straightforward
  1263.              checks are desired, all systems should be compared using
  1264.              the same screen mode.
  1265.  
  1266.         View Comparison System Gfx Modes
  1267.                  As AIBB does allow differing screen modes to be used for
  1268.              graphics tests, through this function it also allows browsing
  1269.              though the various modes in use on the host/comparison systems.
  1270.              Selection of this item brings up an interactive requester
  1271.              which allows movement through various systems, and comparison
  1272.              of the various display parameters in each.
  1273.  
  1274.         Set Comparison Base
  1275.                  This item contains the names of the comparison systems in
  1276.              a submenu area.  Selecting one of these submenu items sets
  1277.              the current comparison base system to that machine.  The
  1278.              comparison base is the system utilized as the 'base' value for
  1279.              test results when computing performance ratings.  All
  1280.              percentages shown are given as percentages of the base system,
  1281.              with a 1.0 value for a system indicating a performance
  1282.              equal to the base system.
  1283.  
  1284. Menu 4: Special
  1285.  
  1286.         Enter/Exit Review Mode
  1287.                  Entering Review Mode gives a method for reviewing
  1288.              previously performed tests and their comparisons.  When this
  1289.              mode is active, selecting a test gadget, or setting a
  1290.              comparison option ( code type, etc ), will result in the
  1291.              display of the results last obtained for that test.  If no
  1292.              test results for the host system are available, the
  1293.              information for the comparison systems currently in use will
  1294.              be shown, and the host system will data will be marked with a
  1295.              "N/A" indicating the information is not available.  The
  1296.              ability to display the comparison system data without running
  1297.              the actual test on the host system is provided to allow a
  1298.              quick view of the performance of said comparison machines
  1299.              before running the test(s) on the host.
  1300.                  Code type options may be manipulated here, and if a test
  1301.              result is available for those settings, it will be displayed.
  1302.              For example, if you were to have the Matrix test as the
  1303.              current test you are viewing, and you want to see the results
  1304.              of the test under 68020+ code, selecting that item under the
  1305.              "This Machine" code type selection will show the Matrix test
  1306.              results utilizing this code type ( if they were previously
  1307.              performed, making the data available ).
  1308.  
  1309.         Start/Stop Log File
  1310.                  AIBB has the ability to keep a "log file" of test
  1311.              activities.  This option allows you to start this logging
  1312.              operation, or stop it once in progress.  The log files contain
  1313.              basic information, in text form, about each test as it is
  1314.              performed, as well as essential system information.
  1315.                  Starting a log file involves selecting a file name to
  1316.              which AIBB will save this data.  If the file is an existing
  1317.              one, AIBB will check for the words "AIBBLogFile" at the start
  1318.              of the file.  If this is not found, you will be warned and
  1319.              given the option of aborting the use of this file as a log
  1320.              file.  Heed this...AIBB WILL write into any file if told it
  1321.              is acceptable, including executable load files.  This checking
  1322.              is done in order to prevent accidental file damage or
  1323.              destruction.
  1324.  
  1325.         All Tests | Make Module
  1326.                  This is a rather important option.  As indicated earlier,
  1327.              AIBB has the ability to create a "load module" of comparison
  1328.              results in order to utilize them later in other runs as a
  1329.              comparison system.  This selection allows the generation of
  1330.              just such a load module.  Selecting this menu item will result
  1331.              in a requester being displayed which warns that this option
  1332.              may take considerable time, and that multitasking will not be
  1333.              functional during it's operation.  At this point, the
  1334.              operation may be cancelled if it is not desired at that time.
  1335.                  When performing all the tests, the options "Disable
  1336.              Multitasking", and "Screen Overlay" previously mentioned are
  1337.              automatically enabled in order to give consistancy to all
  1338.              such generated modules which may be utilized in AIBB.  Using
  1339.              this option, all tests are performed in all possible code
  1340.              combinations available on the host system configuration, in
  1341.              order that later comparisons will have as much data to go by
  1342.              as possible.
  1343.                  Upon completion of all the tests, a requester will be
  1344.              displayed informing you if the tests completed successfully,
  1345.              and asking if you wish to create such a load module at that
  1346.              time.  If you choose to do so, a file requester will appear
  1347.              asking for the name of the file to save the module under.
  1348.              Following this, a smaller requester will appear asking for
  1349.              the name to use with the module under the graph display for
  1350.              it.  This defaults to the first 8 characters of the filename,
  1351.              but may be changed as desired.  Note that only names of up
  1352.              to 8 characters are supported at this time.
  1353.                  If "Cancel" is selected in reference to the module
  1354.              creation requester, AIBB will go back to it's normal
  1355.              operations, and other tests may be performed.  In this manner,
  1356.              it is possible to use this option simply to perform all
  1357.              possible test combinations for later review.  If you wish to
  1358.              review the tests done before making a module, this is
  1359.              possible by not saving the module at the time, and entering
  1360.              "Review Mode" upon finishing.  If no further tests are
  1361.              performed ( which would invalidate the consistancy of the
  1362.              module's data ), then selecting "All Tests | Make Module"
  1363.              again after reviewing the data will result in a requester
  1364.              informing you that the data for a module is still valid and
  1365.              will ask you if you wish to create one now.
  1366.                  It should be noted that comparison options and settings
  1367.              are not in effect during the performance of the tests with
  1368.              this option.  AIBB will merely do all tests with all code
  1369.              types possible, and keep the results ( if desired ).
  1370.              Comparison options are only effective ( and necessary ) when
  1371.              viewing the information present, and are not important when
  1372.              generating a load module.
  1373.                  Once all module options are completed, AIBB will present
  1374.              an analysis of the overall system performance with respect to
  1375.              the various comparison modules currently in use.  This analysis
  1376.              consists of averages in Integer, Graphics, and Floating-Point
  1377.              performance when put against each comparison machine in turn.
  1378.              This average gives somewhat of an "all around" look at the
  1379.              host system's performance levels.
  1380.  
  1381.         Show Aggregate Results
  1382.                  Once a load module has been performed on the host system,
  1383.              this item becomes available for selection.  When activated, a
  1384.              requester displaying combined totals for the host system in
  1385.              terms of Grapics, Integer, and Floating Point performance will
  1386.              be shown.  These totals are given as figures against the
  1387.              currently loaded comparison systems.  Additional tests may
  1388.              be run after the original load module creation to see any
  1389.              effects may take place in different configurations (cache,
  1390.              etc...).  Rerunning tests under the same situations as the
  1391.              module run uses will most likely not affect these figures
  1392.              significantly.
  1393.  
  1394.  
  1395. C. System Information Display
  1396.  
  1397.     The System Information Display is a seperate display which is brought
  1398. up when the Main Display menu option "Systems Information" is selected.
  1399. This display gives various information about the state of the system
  1400. selected, and is also the location from which other load modules to enter
  1401. as comparison systems may be selected.
  1402.     The display here is broken into several sections, giving modular
  1403. information areas pertaining to various system data.  If the host system
  1404. is the system being viewed, the data represents the current state of the
  1405. host system.  If a comparison system's information is being viewed, then
  1406. the data is representative of the system state when that machine's module
  1407. was created for further comparisons.
  1408.     The upper portion of the display consists primarily of CPU/FPU/MMU
  1409. data and state information which is fairly self-explanatory.  Other
  1410. information given in this section includes the display type in use, Agnus
  1411. and Denise custom chip revisions of the system, and several items of
  1412. particular interest:
  1413.  
  1414.     System Stack Memory Location
  1415.             The system stack ( or "Supervisor Stack" ) is the memory region
  1416.         reserved for use by the processor while operating in what is known
  1417.         in M680x0 terms as "Supervisor Mode".  Supervisor mode is the CPU
  1418.         mode of operation most often associated with operating system
  1419.         use, and various system maintenance operations.  Supervisor mode
  1420.         is characterized primarily by the fact that it allows unhindered
  1421.         access to certain CPU operations which are of primary interest only
  1422.         to system-level operating system functions.  User Mode is the
  1423.         operational status in which almost all applications function, and
  1424.         said CPU operations are considered "off limits" in this mode.  This
  1425.         is to protect the integrity of the system from runaway programs and
  1426.         the like, and to more easily facilitate multiprocessor/multiuser
  1427.         system environments.  It is a characteristic of the M68000
  1428.         microprocessor series and serves to allow a seperation between
  1429.         operating system priviledges and user program priviledges.
  1430.             The system stack is where much CPU state information is stored
  1431.         during operating system activities, and thus it is important to
  1432.         recognize it's location in memory.  Depending on the memory type
  1433.         where this stack is located, it may affect certain operation speeds,
  1434.         and it's location is thus given here to allow this to be taken into
  1435.         account when evaluating system performance.  It should be noted
  1436.         that although this is an important item of interest, it is
  1437.         generally not going to have much effect on the greater majority of
  1438.         AIBB's operational modes and testing.
  1439.  
  1440.     AIBB Process Stack Memory Location
  1441.             This item is probably of more interest than the System Stack
  1442.         location.  AIBB's process stack is a memory region which is
  1443.         assigned to AIBB ( and any user program ) when it is invoked.
  1444.         Certain program variables and data are stored on the stack during
  1445.         operations, and thus it's location can affect performance levels.
  1446.         This should be taken into account carefully, as some of the testing
  1447.         AIBB does utilizes this stack for data, and thus results will be
  1448.         affected if it is located in a slower memory medium than optimal
  1449.         for the system configuration.
  1450.  
  1451.     Operating System Version
  1452.             This field identifies the operating system version in use on
  1453.         the system in question.  Certain versions may have different
  1454.         features, and may affect certain of the test performance levels.
  1455.  
  1456.     Operating System Location
  1457.             On certain MMU equipped accelerated systems, or on such system
  1458.         with special hardware setups, the operating system ROM image may
  1459.         be relocated to a faster memory medium.  ROM access times are
  1460.         generally slower than that of RAM resources, and in the case of an
  1461.         A500 or A2000 with an accelerator which is more at home with a
  1462.         32-bit data bus than those systems' normal 16-bit 7.15 MHz bus,
  1463.         it is extremely advantageous to move the operating system kernel
  1464.         code to such a faster accessed memory region.  Often times, this
  1465.         relocation is done by using a system's MMU ( Memory Management
  1466.         Unit ), which allows for address translation of memory "pages".
  1467.             Translation occurs by mapping a certain memory region such that
  1468.         accesses to it are rediverted to an alternate location in this
  1469.         kind of setup.  Programs such as Dave Haynie's SetCPU and the
  1470.         CPU program which comes with AmigaOS 2.0 and above allow this type
  1471.         of operation.  AIBB is capable of determining the actual memory
  1472.         location of the ROM code image by checking through the MMU
  1473.         translation tables, and will report where the code resides.
  1474.             Some accelerators allow for translation of the ROM image
  1475.         without utilizing an MMU.  Such units utilize a custom hardware
  1476.         arrangement, and at this time AIBB cannot accurately determine the
  1477.         memory location of the ROM image for these systems.  In these cases, it
  1478.         is recommended that such translations be noted for further
  1479.         reference if comparisons are to be made against other systems
  1480.         utilizing a module or log file results so that no confusion about
  1481.         the system setup occurs.
  1482.  
  1483.     The lower portion of the System Information Display contains provisions
  1484. for examining system memory node, expansion board, or pertinent sytem
  1485. library information.  Three gadgets to the right of this area provide the
  1486. means to select the desired display.  The list of nodes or boards can be
  1487. moved through using the 'Next' and 'Previous' gadgets located below
  1488. the selection gadgets, while the library information is static.  The
  1489. information given for memory nodes is:
  1490.  
  1491.     Memory Node Index
  1492.             This is an index value corresponding to which node is currently
  1493.         being viewed, and how many total nodes exist.  This value
  1494.         directly relates to the main screen's "Code Loc" and "Data Loc"
  1495.         test information values and can be used to determine where AIBB's
  1496.         test code and data is located.
  1497.  
  1498.     Memory Node Name
  1499.             This is simply the name of the given memory node.
  1500.  
  1501.     Memory Node Address Range
  1502.             The address range for the current memory node is displayed here
  1503.         in a hexadecimal form.  Both the starting address, and ending
  1504.         address are given.
  1505.  
  1506.     Memory Node Total Size
  1507.             The total usable memory within the given node is displayed here.
  1508.  
  1509.     Memory Node Priority
  1510.             Memory on the Amiga is prioritized for allocation.  This means
  1511.         that memory of a higher priority is given precendence over other
  1512.         memory regions when an allocation request is attempted.  For
  1513.         example, a memory region of priority 5 will be scanned first for
  1514.         a suitable memory chunk for a given allocation request before
  1515.         attempting other regions.  If there is not enough memory in this
  1516.         region, the next priority region is tried, and so on.  The main
  1517.         item of note otherwise is that this is true for GENERAL memory
  1518.         requests.  Memory requests which specifically ask for CHIP memory
  1519.         will have the allocation attempted there, regardless of priority.
  1520.  
  1521.     Memory Node Bus Port Width
  1522.             This is the bus width of a given memory region.  A 16 bit bus
  1523.         corresponds to a data path width of 16 bits, 32 meaning a 32 bit
  1524.         data path width, etc.  For 68020+ systems, memory port widths of
  1525.         32 bits will have the advantage over 16 bit ports for efficiency
  1526.         reasons, as the 68020 and above have 32 bit data paths, whereas
  1527.         the 68000/68010 have 16 bit data paths.
  1528.  
  1529.     Memory Node Type
  1530.             Whether the given node is FAST memory or CHIP memory is
  1531.         displayed here.
  1532.  
  1533.     Custom Chip Bandwidth
  1534.             This will only be seen when examining a CHIP memory node, and
  1535.         only under AmigaOS 3.0 or greater, and indicates the bandwidth
  1536.         specified for CHIP memory on the system.  Note that at present
  1537.         the only differences here will be seen between AGA chipset
  1538.         equipped systems and non-AGA equipped machines.
  1539.  
  1540.     CPU/Memory Access Latency Index
  1541.             This figure represents the latency between a memory cycle, and
  1542.         when another cycle can be performed.  Lower ratings indicate better
  1543.         response times for a particular memory node, with the unattainable
  1544.         goal of 0.0 indicating that no latency occured at all.  Basically,
  1545.         this gives information as to the relative efficiency of various
  1546.         memory nodes (eg, one with a rating of 5.0 would be more efficient,
  1547.         and hence faster than one with a rating of 7.0.).  Note that this
  1548.         can only be used as a valid comparison across different systems if
  1549.         other factors such as processor type, clockspeed, and bus width are
  1550.         also taken into account.  This figure is most useful in comparing
  1551.         two different memory regions on similar systems, such as two memory
  1552.         boards on a 68030 based system against each other for relative
  1553.         efficiency.  Note that this figure will only be given for
  1554.         FAST RAM memory regions.
  1555.  
  1556.     When Expansion Board information is selected, information about the
  1557. system AutoConfig® boards will be shown.  The given fields will be as
  1558. follows:
  1559.  
  1560.     Board Index
  1561.             The index value for this board, and the total number of
  1562.         expansion boards for which information is available is shown here.
  1563.  
  1564.     Board Address
  1565.             This is the configuration address of the given board.  For
  1566.         memory boards, this will generally reflect the starting address of
  1567.         the memory region it occupies.
  1568.  
  1569.     Board Size
  1570.             The total byte size reqirements for the board will be displayed
  1571.         here.  This shows the amount of memory this board will take up
  1572.         when configured onto the system.  Note that with memory boards,
  1573.         this will generally reflect the size of the memory available on
  1574.         the expansion board.
  1575.  
  1576.     Board Manufacturer ID
  1577.             Commodore-Amiga assigns all valid AutoConfig® board
  1578.         manufacturers a unique ID code.  This field contains the ID of the
  1579.         manufacturer of the given board being shown.
  1580.  
  1581.     Board Product ID
  1582.             Manufacturers have the option of assigning a product ID to
  1583.         their boards.  This shows the product ID given to a particular
  1584.         expansion board.
  1585.  
  1586.     Board Type
  1587.             At this time, this field will simply designate whether the
  1588.         given board is a memory board, or some other type of peripheral
  1589.         expansion.
  1590.  
  1591.     Board Attributes
  1592.             This field basically gives information as to whether the
  1593.         expansion device is configured as a valid Zorro-II or Zorro-III
  1594.         setup.
  1595.  
  1596.     Ident
  1597.             AIBB contains a number of expansion board identifications
  1598.         internally, and will attempt to match the board found with one of
  1599.         these in the lists.  If no match is found, the statement "No
  1600.         Information Available" will be given to indicate this.  If you see
  1601.         this message, and wish the board in question to be listed in
  1602.         AIBB's lookup tables, please let me know by way of providing me
  1603.         with the expansion board Product ID, Manufacturer ID, and
  1604.         the identity of the device.
  1605.  
  1606.     When Library node information is selected, information about pertinent
  1607. system libraries will be shown.  Note that not all system libraries
  1608. currently in use are displayed.  Only selected ones which are of interest
  1609. when determining performance factors are recorded.  Currently these
  1610. are:
  1611.  
  1612.                              exec.library
  1613.                             graphics.library
  1614.                            intuition.library
  1615.                             layers.library
  1616.                            expansion.library
  1617.  
  1618. The information given is of the following form:
  1619.  
  1620.     Library Name
  1621.             This is simply the name of the library in question.
  1622.  
  1623.     Library Version
  1624.             This field gives the version and revision of the system
  1625.         library being displayed.  This may be important when looking at
  1626.         performance statistics of tests which make use of system kernel
  1627.         calls (such as graphics tests).
  1628.  
  1629.     Library Base:
  1630.             This is the base address of the library, and indicates where
  1631.         in memory it is located.  Again, this may be of interest when
  1632.         examining the performance of tests which make use of system
  1633.         kernel calls.
  1634.  
  1635.  
  1636.     The System Information Display also includes a number of menu options
  1637. which are explained below:
  1638.  
  1639.     Select Other:
  1640.             A submenu attached to this item allows you to switch to viewing
  1641.         another system's attributes from within this display.
  1642.  
  1643.     Load New:
  1644.             This is the option to utilize if you wish to load a comparison
  1645.         module in place of the ones alread in use.  The loaded module
  1646.         will replace the currently displayed system's location in the
  1647.         comparison systems.  This option is not available when viewing
  1648.         the host system's data.  Subitems attached to this menu item
  1649.         allow you to select the type of module to load.  These are:
  1650.  
  1651.         From File:
  1652.                 This should be selected if you wish to load a previously
  1653.             saved module in file form.  A requester will be displayed
  1654.             asking for the file name to load.  AIBB will attempt to load
  1655.             the module, and if all data consistancy checks are valid, it
  1656.             will place this data in the location of the previously
  1657.             displayed system.
  1658.  
  1659.             Under this option is a list of the internal default modules
  1660.         AIBB contains.  This allows the rearranging of the order of the
  1661.         default systems as they appear on the graph in the Main Display,
  1662.         and also allows a default system's values to be re-loaded if one
  1663.         is superseded by a file-based module at an earlier time.  Note that
  1664.         the order of the system default modules is one of the items saved
  1665.         in the AIBB.prefs file, so you may choose any ordering of the
  1666.         internal startup default systems which suits you best.
  1667.  
  1668.     Return to Main:
  1669.         Returns you to the Main Display portion of AIBB.
  1670.  
  1671.                      AIBB's Default Comparison Systems
  1672.  
  1673.    AIBB's internal default comparison systems were selected to give a
  1674. broad overview of a number of system configurations and hardware types.
  1675. These systems are:
  1676.  
  1677.     A600-NF
  1678.            An Amiga 600 system with no FAST RAM ( NF ) complement.  This
  1679.         is an all CHIP RAM based machine, and is provided here to give a
  1680.         comparison towards systems utilizing only CHIP RAM.  This is a
  1681.         stock machine, with accelerator devices or other additional
  1682.         enhancements.  AmigaOS 2.x was the operating system used and was
  1683.         located in ROM.
  1684.  
  1685.     A1200-NF
  1686.            Commodore's low-end AGA machine, the Amiga 1200, was used to
  1687.         gather the data for this system.  No FAST RAM was used in this
  1688.         machine, and AmigaOS 3.0 ( V39.106 ) in ROM was the operating
  1689.         system present
  1690.  
  1691.     A3000-25
  1692.             The comparison data here was obtained from a 25 MHz CPU rated
  1693.         system, which utilizes the MC68030 CPU and MC68882 FPU as it's
  1694.         processing engines, and equipped with static-column (BURST mode
  1695.         capable) FAST RAM.  AmigaOS 2.x was the operating system in use,
  1696.         and was located in ROM on the system A3000's motherboard.
  1697.  
  1698.     A4000-25
  1699.         An Amiga 4000 utilizing a 25 MHz 68040 CPU (stock configuration)
  1700.         was utilized to obtain comparison data.  AmigaOS 3.0 was utilized
  1701.         as the system OS ( V39.106 ) and was located in ROM on the
  1702.         motherboard.
  1703.  
  1704.         It should be kept in mind that all parameters for each system should
  1705.     be noted when making comparisons by checking the statistics located
  1706.     on AIBB's System Information Display.  Small items such as the system
  1707.     stack location, cache settings, OS version and image location, etc...,
  1708.     could play a part in any apparent discrepency.  Making note of these is
  1709.     important to fully understand the figures being provided.
  1710.         One important aspect of performance regarding the Amiga which has
  1711.     come more seriously to light is the question of display parameter
  1712.     effects on test results.  With the advent AGA, and the new
  1713.     display modes it contains, a great deal more care must be taken when
  1714.     making system comparisons because of the system bus bandwidth limiting
  1715.     effects some modes may have.  Please do make sure to note the display
  1716.     mode used on the default A4000 contained here (AIBB will show if Mode
  1717.     Promotion was in effect (DBLModes)) when comparing systems.  Also, when
  1718.     making modules or test result notes, it is wise to carefully monitor
  1719.     what types of screens are currently in use and displayed when AIBB is
  1720.     performing tests.
  1721.         In all the systems above, all tests performed were done with AIBB's
  1722.     test code and data located in the fastest memory medium located on each
  1723.     system.
  1724.         No third-party accelerated machines were included in the lineup as
  1725.     this would leave an unfair advantage/disadvantage to any particular
  1726.     manufacturer.  Comparisons of that sort can still be carried out
  1727.     utilizing AIBB's load-module capability to bring in data from such
  1728.     systems for direct comparisons.
  1729.  
  1730.  
  1731.                        OVERVIEW OF INCLUDED TESTS
  1732.  
  1733.    The tests AIBB incorporates are described below.  The type of test,
  1734. and it's basic operations are given in the descriptions, as well as the
  1735. amount of memory each test may need to allocate external to AIBB itself.
  1736. The "standard" tests are as follows:
  1737.  
  1738.      A. WritePixel
  1739.             The WritePixel benchmark will open a screen/window combination
  1740.         and fill it completely with a given color pattern.  The work is
  1741.         done one pixel at a time, utilizing the operating system routines
  1742.         SetAPen() ( sets the current RastPort primary pen color ) and
  1743.         WritePixel() ( which sets a pixel to the current primary pen
  1744.         color).
  1745.             The test is basically a benchmark of the time needed to call
  1746.         these routines, and for them to execute. For the most part, this
  1747.         it will be primarily useful for evaluating the effective ROM
  1748.         image access time for systems which differ from the conventional
  1749.         ROM access method found on the Amiga 500/600 and 2000, namely
  1750.         accessing the ROM over those systems' normal 16 bit bus.  As these
  1751.         routines also result in many accesses to the CHIP RAM bus, it can
  1752.         also give a hint as to the efficiency of a system's CHIP RAM bus
  1753.         interface.
  1754.             WritePixel reports its results in pixels per second drawn.
  1755.         Please note that this is NOT the maximum pixel rate of any
  1756.         particular system, as there are more efficient methods of doing
  1757.         this kind of work.  This is the effective pixel rate of the system
  1758.         when the methods and routines used by this test are employed.
  1759.  
  1760.         Memory Usage: No direct memory resources external to AIBB are
  1761.                       allocated.  CHIP memory is utilized for the screen
  1762.                       and window.
  1763.  
  1764.      B. Dhrystone
  1765.             This test should be fairly familiar to most people, as it has
  1766.         been utilized on many different system for benchmarking purposes.
  1767.         It is a test which attempts to put conditions upon the system
  1768.         which more closely simulates a possible applications program
  1769.         section.  It returns, not run-time in seconds, but rather a rating
  1770.         of Dhrystones per second, where in this case, the larger number
  1771.         indicates better performance.
  1772.  
  1773.         Memory Usage: No memory resources external to AIBB are allocated.
  1774.  
  1775.      C. Matrix
  1776.             A matrix manipulation benchmark utilizing 3 50x50 integer
  1777.         matrices.  The test simply performs a series of matrix operations
  1778.         (addition/subtraction, multiplication, transposition, etc) upon
  1779.         these matrices.  The test is set up in such a way that a great
  1780.         amount of time is spent moving data, as well as performing
  1781.         arithmetic operations upon it.  Therefore, this could be thought
  1782.         of as also testing memory manipulation efficiency.  The test
  1783.         is an indicator of how well a processor/memory combination handles
  1784.         memory accesses to data and operations on such, as the test does
  1785.         not allow the processor to simply perform the data operations
  1786.         solely within it's registers.
  1787.  
  1788.         Memory Usage: 30,000 ( 29.3K ) bytes external to AIBB are allocated.
  1789.  
  1790.      D. MemTest
  1791.             This test is memory-bound, as its name implies.  In essence,
  1792.         it is a memory block movement test, timing the efficiency of memory
  1793.         accesses and transfers using longword (32 bit) sizes.  It should be
  1794.         noted that the Data Loc portion of the test result information
  1795.         will supply the node location of the RAM being tested. Systems
  1796.         with FAST RAM will show higher results, as the test will execute
  1797.         quicker, and as can be expected, 32-bit ported FAST RAM will
  1798.         perform better than its 16-bit ported counterpart.  Note that this
  1799.         test will use FAST RAM as a memory medium if available, and
  1800.         will report its results in megabytes transferred per second.
  1801.  
  1802.         Memory Usage: 32,768 ( 32K ) bytes external to AIBB are used.
  1803.  
  1804.      E. Sieve
  1805.             Another test which should be familiar to most, the Sieve of
  1806.         Erathosthenes.  It uses a fairly simple algorithm to determine
  1807.         prime numbers within a range of numbers.  This test simply times
  1808.         your system when implementing this algorithm, which is decribed
  1809.         fully in many textbooks, or one can simply look at BYTE Magazine's
  1810.         benchmarks, which use a similar Sieve test.
  1811.  
  1812.         Memory Usage: No memory resources external to AIBB are allocated.
  1813.  
  1814.      F. Sort
  1815.             A series of 30,000 16-bit integers is sorted from a pseudo-
  1816.         random setup, and the procedure is timed.  "Pseudo-random" meaning
  1817.         that the number arrangement is not created in a random fashion, but
  1818.         rather in a mixed fashion so that on each invocation of the test
  1819.         the numbers will be created in the SAME mixed fashion.  This is
  1820.         because the sorting algorithm is sensitive to the mixing, and if
  1821.         each time the test was run a different group of values was used,
  1822.         no two tests results could be compared well.  The mixing method I
  1823.         used was to insure that the algorithm would be forced to do the
  1824.         most work for each test.
  1825.  
  1826.         Memory Usage: 60,000 ( 58.6K ) bytes external to AIBB are allocated.
  1827.  
  1828.      G. IMath
  1829.             Integer Math.  This test performs a wide variety of integer
  1830.         math functions.  Included among these operations are the standard
  1831.         functions, such as addition, subtraction, multiplication, division,
  1832.         and a few additional bitwise functions, such as ANDing, ORing, and
  1833.         XORing.
  1834.  
  1835.         Memory Usage: No memory resources external to AIBB are allocated.
  1836.  
  1837.      H. TGTest
  1838.             Text/Graphics test.  This test is another one which is
  1839.         dependent upon the efficiency of the system graphics routines'
  1840.         execution speed, as well as the efficiency of the CHIP RAM bus
  1841.         interface on the system.
  1842.  
  1843.         Memory Usage: No direct memory resources external to AIBB are
  1844.                       allocated.  CHIP RAM is used indirectly for the
  1845.                       screen/window creation.
  1846.  
  1847.      I. EmuTest
  1848.             This test is basically a small CPU emulator core running an
  1849.         instruction set simulation (basically a small program).  The Amiga
  1850.         seems to have gained a bit of a precedence in CPU emulation, and
  1851.         this test was developed for the purpose of showing various systems'
  1852.         ability to perform such emulation efficiently and speedily.  The
  1853.         simulated CPU is a standard 68000, though the results from this can
  1854.         be taken as indicative of other CPU emulators as the basic principle
  1855.         is the same.  All instructions and internal operations are
  1856.         completely software emulated.  The results for this test are given
  1857.         in Simulated MegaHertz, basically a rating showing how fast the
  1858.         emulation is towards an equivalent hardware-based CPU.
  1859.  
  1860.         Memory Usage: No memory resources external to AIBB are allocated.
  1861.  
  1862.      J. InstTest
  1863.             This test is not affected by the code settings given for any
  1864.         system. It performs a series of the most common CPU instructions in
  1865.         a 6K loop, and times their execution.  It then does a percentage
  1866.         average of the instruction makeup, and gives a result in
  1867.         Instructions per Second.  THIS IS NOT A STANDARD "MIPS" TEST!  Most
  1868.         tests using the "MIPS" scale are very simplistic and for the most
  1869.         part are not very useful whatsoever.  A standard "MIPS" scale test
  1870.         will most likely give you numbers much larger than AIBB will.  AIBB
  1871.         attempts to make an even spread of 680x0 instruction execution, thus
  1872.         showing a somewhat more even look at things.  This test is basically
  1873.         to determine the raw speed of code execution on any given system.
  1874.  
  1875.         Memory Usage: No memory resources external to AIBB are allocated.
  1876.  
  1877.      K. EllipseTest
  1878.             This is a test of an applied graphics operation.  The test
  1879.         draws a series of filled, anti-aliased ellipses and times the
  1880.         operation.  Anti-aliasing is the technique of "blending" line
  1881.         curves so as to soften their sharper edges.
  1882.  
  1883.         Memory Usage: No direct memory resources external to AIBB are
  1884.                       allocated.  CHIP memory is utilized for the screen
  1885.                       and window.
  1886.  
  1887.      L. LineTest
  1888.             A test of line-drawing primitives.  LineTest opens a screen/
  1889.         window combination and draws a series of lines throughout them.
  1890.         The lines are drawn in horizontal, vertical, and diagonal fashion,
  1891.         with emphasis being on the former two.  This test reports its
  1892.         results in terms of lines drawn per second.
  1893.  
  1894.         Memory Usage: No direct memory resources external to AIBB are
  1895.                       allocated.  CHIP memory is utilized for the screen
  1896.                       and window.
  1897.  
  1898.  
  1899.          The floating-point specific tests implemented by AIBB are given
  1900.      below.  Note that these tests are also dependent on any standard code
  1901.      type selections which may be made, as well as the type of floating-
  1902.      point code utilized.
  1903.          Tests are marked as to their usage of transcendental functions
  1904.      ( sin(), cos(), log(), etc... ) for record keeping and comparisons by
  1905.      68040 users, who should see the appropriate notes in this documentation
  1906.      concerning the built-in 68040 FPU and transcendental functions.  The
  1907.      rating scale used below for such usage corresponds to this table:
  1908.  
  1909.           Level                             Meaning
  1910.      -----------------------------------------------------------------------
  1911.           NONE     |         No transcendental functions are used
  1912.           LIGHT    |  5-20% of calculations are transcendental in nature.
  1913.          MODERATE  |  21-50% of calculations are transcendental in nature.
  1914.           HEAVY    |  Greater than 50% of calculations are transcendental.
  1915.      -----------------------------------------------------------------------
  1916.  
  1917.      M. FMath
  1918.             Floating Point Math.  Similar to the IMath test, with the
  1919.         exeception that Floating Point values and operations are utilized.
  1920.         With this test, no bitwise operations are performed.  Single
  1921.         precision floating point operations/values are used here.
  1922.  
  1923.         Transcendental Usage: NONE.
  1924.         Memory Usage: No memory resources external to AIBB are allocated.
  1925.  
  1926.      N. Savage
  1927.             This is another of the "probably familiar" tests.  It is a
  1928.         standard implementation of the Savage test, which makes nested
  1929.         calls to transcendental functions to create a single value.
  1930.         Double precision floating point operations/values are used.
  1931.  
  1932.         Transcendental Usage: HEAVY; this test is almost exclusively
  1933.                               transcendental in nature.
  1934.         Memory Usage: No memory resources external to AIBB are allocated.
  1935.  
  1936.      O. FMatrix
  1937.             The FMatrix test is similar in concept to the Integer Matrix
  1938.         test outlined above.  Again, a great deal of data movement is
  1939.         performed, in addition to the operations involved, which are
  1940.         floating point operations in this case.  With the matrix
  1941.         operations, the results under Floating Point coprocessor equipped
  1942.         systems can be interesting to note, as the system is not able to
  1943.         keep the data within fast-access FPU registers, and thus must make
  1944.         frequent bus accesses for the data it needs.  Double-precision
  1945.         floating point math is used for this test.
  1946.  
  1947.         Transcendental Usage: NONE.
  1948.         Memory Usage: 38,400 ( 37.5K ) bytes external to AIBB are allocated.
  1949.  
  1950.      P. Flops
  1951.             A common rating of floating-point operations, the term
  1952.         'Flops' denotes Floating point operations per second.  This test
  1953.         takes a composite of operations and reports its results in terms
  1954.         of scalar MFlops, where 1 MFlop is one million floating point
  1955.         operations per second.
  1956.  
  1957.         Transcendental Usage: NONE.
  1958.         Memory Usage: No memory resources external to AIBB are allocated.
  1959.  
  1960.      Q. TranTest
  1961.             This is a test which is solely transcendental in nature.  A
  1962.         series of transcendental functions are performed in a large loop,
  1963.         and timed for speed of operation.  This test will tend to show
  1964.         the relative efficiency of a system in performing more complex
  1965.         mathematical functions.
  1966.  
  1967.         Transcendental Usage: HEAVY ( Completely transcendental ).
  1968.         Memory Usage: No memory resources external to AIBB are allocated.
  1969.  
  1970.      R. BeachBall:
  1971.             The BeachBall test was originally written by Bruce Holloway of
  1972.         Weitek, and published in the March 1988 issue of Byte Magazine.
  1973.         It is essentially a very math-intensive operation which draws a
  1974.         beachball on the screen, complete with shading.  The test opens a
  1975.         640x400 interlaced 16-color screen, and proceeds to render the
  1976.         picture.  This test is closer to a true "application" test, in that
  1977.         it actually does something visible, and produces an output.  The
  1978.         system will end up being tested in both the floating point arena,
  1979.         and in CHIP RAM access performance, which is done through standard
  1980.         operating system graphics handling calls ( thus will be affected by
  1981.         the speed of such, which in turn can be affected by ROM image
  1982.         re-mapping, etc ).
  1983.  
  1984.         Transcendental Usage: LIGHT.
  1985.         Memory Usage: No direct memory resources external to AIBB are
  1986.                       allocated.  CHIP RAM is used indirectly for the
  1987.                       screen creation.
  1988.  
  1989.      S. FTrace:
  1990.             Another applications-type test.  FTrace implements a subset of
  1991.         the calculating functions which are used to perform ray-tracing
  1992.         operations.  Ray-tracing is a particularly floating-point intensive
  1993.         art, and this test gives some indication of a system's performance
  1994.         in this type of operation.  No visible result is produced, so in
  1995.         that matter it is not an 'ideal' test, but it can be used to give
  1996.         some indications in this arena.
  1997.  
  1998.         Transcendental Usage: LIGHT; Calculations are performed in such
  1999.                               a way that transcendental usage is minimized.
  2000.         Memory Usage: No memory resources external to AIBB are allocated.
  2001.  
  2002.      T. CplxTest:
  2003.             This test implements a series of complex-number operations and
  2004.         times their execution.  Complex number applications are important
  2005.         in many of the sciences, and are particularly prevalent in such
  2006.         areas as electrical engineering ( circuit analysis ) and vector
  2007.         analysis to some degree ( not specifically "complex numbers" in
  2008.         that case, but the operations are similar ).  This test utilizes
  2009.         a lot of quick, small memory moves, as well as performing a
  2010.         variety of floating-point operations.
  2011.  
  2012.         Transcendental Usage: LIGHT TO MODERATE.
  2013.         Memory Usage: No memory resources external to AIBB are allocated.
  2014.  
  2015.  
  2016.                               NOTES AND SUMMARY
  2017.  
  2018.     It has been indicated before, but it should again be emphasized that
  2019. no benchmark or even suite of benchmarks can hope to give a complete picture
  2020. of system performance alone.  A full picture of the system resources, as
  2021. well as an understanding of just what the system in question is being used
  2022. for is necessary to make any type of evalution.  AIBB is merely one small
  2023. tool which may be used to try to gather a sampling of data when making
  2024. a performance determination.
  2025.     When performing tests, it is very important to keep track of just
  2026. where test code and data is being placed in the system by using the
  2027. information provided by AIBB, and by using other methods if need be.  For
  2028. example, if you have a 512K CHIP RAM machine, and some SLOW-FAST RAM
  2029. ( sometimes mistakenly thought of as true FAST RAM ), this could affect
  2030. test results in ways not expected.  Keeping careful track of these
  2031. variables can help in determining just what is occuring in the system
  2032. during performance analysis.
  2033.     Of some interest in terms of FPU performance is the MC68040's
  2034. built-in FPU unit.  This FPU is a subset of Motorola's previous MC68881
  2035. and MC68882 coprocessors, and does not include all functions on-chip
  2036. which were supported by the previous FPUs.  Most notably, the transcendental
  2037. function such as sine and cosine, etc... are not hardware supported.
  2038. Rather, the simpler functions such as floating-point multiplication,
  2039. addition, division, etc.. have been greatly optimized and enhanced.  The
  2040. MC68040 FPU relies on software emulation of the complex functions, and
  2041. most accelerator vendors, as well as CBM itself, supply a function library
  2042. to emulate these routines in the form of software 'traps'.  Since the
  2043. complex functions utilize the simpler functions to derive their actions,
  2044. in theory all functions should still execute faster than on previous
  2045. coprocessors.  However, this may not be the case.
  2046.     Trap functions such as those supplied in the aforementioned libraries
  2047. are routines executed when the coprocessor indicates an unsupported
  2048. function routine is being called.  This is a form of 'exception' routine,
  2049. requireing CPU/FPU internal context saving, and other related actions.
  2050. This is because the CPU/FPU treats the function call as an error, and
  2051. calls the error routine appropriate to it.  In this case, it will be
  2052. the math support library, which will execute the proper function and return
  2053. the value needed.  Unfortunately, all this activity results in a
  2054. performance hit, resulting in timings which are longer than that of the
  2055. previous coprocessors which emulated these functions in their hardware.
  2056.     All this might imply that the 68040 is crippled in this respect. However,
  2057. this is not the case.  Applications written to take advantage of of
  2058. 68040's FPU will function much faster, as they will emulate the required
  2059. complex functions in forms not requiring the trap functions.  The trap
  2060. functions are there for programs which are using FPU code set up for the
  2061. MC68881 or MC68882, which are at this time the more common FPU units.
  2062.     AIBB includes an option, specified earlier, for more efficient 68040
  2063. FPU code.  This code emulates the transcendental functions an other
  2064. functions unsupported by the 68040 within AIBB itself.  This will alleviate
  2065. the overhead involved with trap-based emulation methods if selected.
  2066.  
  2067.  
  2068.                        CREDITS AND ACKNOWLEDGEMENTS
  2069.  
  2070.     As with all large projects, nothing is accomplished entirely by one
  2071. person.  I have many people to thank for their assistance in the
  2072. development of AIBB.  A few of the more influential people who have
  2073. contributed greatly to this effort are:
  2074.  
  2075.     Kimberly Polglase
  2076.             For putting up with me throughout this ordeal :)
  2077.  
  2078.     Redmond Simonsen
  2079.             One heck of a nice guy and thought provoking fellow.  His help
  2080.         with interface ideas was very much appreciated, and are still
  2081.         instrumental in any upcoming future versions of AIBB.
  2082.  
  2083.     Dr. J. Scott Thayer
  2084.             Sysop of AmigaFriends BBS, and a dedicated beta tester
  2085.         extraordinaire.  His comments and testing data were key to much
  2086.         of what was done with this program over the course of it's
  2087.         development.
  2088.  
  2089.     Mathew Rouch
  2090.             A good friend of mine, and a computer science student at
  2091.         present.  His help in several algorithmic coding problems allowed
  2092.         me to solve some difficulties which would have taken a great deal
  2093.         longer to overcome than they did.
  2094.  
  2095.    Unfortunately, I cannot list everyone who has been of assistance with
  2096. this project, but to all of them, listed and unlisted, I wish to express
  2097. my deepest thanks and appreciation.
  2098.    Comments and suggestions about this program are always welcomed, as I
  2099. hope to be able to continue its development.  Please feel free to make
  2100. any suggestion you see fit, but do try to be constructive in any
  2101. criticism so that I may improve AIBB.  Bug reports are certainly wanted,
  2102. and I will do my best to locate and correct such problems.
  2103.    I can be reached electronically many ways, but the following are probably
  2104. the easiest methods for those with internet access:
  2105.  
  2106.               lkoop@tigger.stcloud.msus.edu     ( GP Acct )
  2107.               f00012@kanga.stcloud.msus.edu ( Engineering Acct )
  2108.  
  2109.                           ( Pick your paths :) )
  2110.  
  2111. I can also be found on BIX as "lkoop", and can be reached there easily
  2112. as well.  For those wishing to correspond by mail, comments may be sent to:
  2113.  
  2114.                              LaMonte Koop
  2115.                       1001 Summit Ave. North  #125
  2116.                          Sauk Rapids, MN  56379
  2117.  
  2118.    As for me, well, I'm an Electrical/Computer Engineering student
  2119. ( currently just a wee bit from done )  with an added major in Physics,
  2120. and an emphasis in systems architecture design.  AIBB was originally
  2121. started as a bit of a hobby, and as time went on became a long-standing
  2122. project.  This particular version is almost a year in the making, and I
  2123. do intend to continue enhancing the package as long as interest remains in
  2124. it.  Enjoy the program; I hope you find it useful, and that it serves
  2125. whatever purpose you may need of it.
  2126.  
  2127.