home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 637b.lha / AIBB_v4.3 / documentation / AIBB.doc.pp / AIBB.doc
Encoding:
Text File  |  1992-05-29  |  104.1 KB  |  1,776 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 4.3
  7.                      Copyright 1991,1992 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.  
  34.                              INTRODUCTION
  35.  
  36.      AIBB is a utility primarily designed to assist in the evaluation of
  37. system performance on a basic level.  It consists of a series of system
  38. "benchmark" tests, the results of which are put against other systems
  39. and the results displayed for comparison purposes.  It should be noted that
  40. care must be taken when making a definitive evaluation of the performance
  41. of any system, as much more is involved in making a thorough determination
  42. than the data which can be provided by AIBB alone.
  43.      System performance evaluation, commonly referred to as "benchmarking",
  44. is the rather dubious science of trying to determine which system or
  45. system architechture is "fastest".  Unfortunately, all to often it is not
  46. completely clear what is meant by which system is "fast".
  47.      Computer systems in general usually consist of a number of devices
  48. interconnected to form a whole.  These individual devices can be on one
  49. circuit board, such as the case with certain coprocessor devices, etc...
  50. or even as seperate entities completely, physically connected in some
  51. external fashion, such as with expansion boards.  All of these devices will
  52. have certain advantages and disadvantages in performance levels.  Combined
  53. together, it is generally the use of the system in general which determines
  54. how much of an effect is seen in these factors when observing overall system
  55. performance.  Before delving into these factors further, it is necessary to
  56. first clarify a few of the key components which are main players in the
  57. performance game.
  58.  
  59. I. The system CPU.
  60.  
  61.      The CPU ( Central Processing Unit ) of a computer is often the focus
  62. of most performance discussion.  This unit is generally responsible for the
  63. non-specific portion of any computing task.  It's duties involve general
  64. program instruction execution, and in many cases it is the device
  65. responsible for 'mastering' the system and coordinating the system effort
  66. as a whole.  Note that this is a generalization.  Systems do exists which
  67. are distributed; their CPU is not as readily defined, or consists of multiple
  68. CPU units each coordinated as a whole.  However, in the context of this
  69. discussion a single device will be assumed.
  70.      Since the CPU of any system does often recieve a great deal of the
  71. overall responsibility for program execution and task organization, it is
  72. thus a very key part in the overall performance of the system as a whole.
  73. However, often times it is considered solely as the factor which determines
  74. the "speed" a computer can perform a particular operation.  This assumption
  75. is not always valid, and must be thought out carefully.  Many other factors
  76. may affect the efficiency of the CPU itself in performing it's operations,
  77. which is why the system as a whole must be evaluated towards a particular
  78. job which it is to be given.  But before this relationship becomes clear,
  79. the other components which are factors must first be recognized.
  80.  
  81. II. Coprocessor Devices
  82.  
  83.      A coprocessor is any system processing unit which works in conjunction
  84. with the primary processor (CPU) in the actions of the system.  Such devices
  85. are often subsystem-specific, and are responsible for a particular set of
  86. computing tasks.  For example, a system may include a FPU, or Floating
  87. Point Unit to take on the task of floating point computations.  These
  88. processors are generally fine-tuned to that specific task, and thus are
  89. more efficient at it than the main processor would be if it were to do the
  90. same job.
  91.     Thus, the primary use of coprocessors is to alleviate some of the total
  92. system computing load from the CPU.  These devices may be directly coupled
  93. to the CPU, thus being closely tied to the performance of the master
  94. processor, or may be of a loosly coupled variety.  This latter type of
  95. coprocessing unit is tied to the CPU only when it requires data and
  96. information from the main processor, and in some situations may be capable
  97. of accessing and modifying system memory without going through the
  98. CPU at all.  Although this concept is not unique to coprocessors alone,
  99. it is relevant, and thus will be explained here.  Such memory accessing
  100. capabilities denote a Direct Memory Access device (DMA).  These devices
  101. do not necessarily rely on the CPU to transfer data to them, and thus are
  102. often 'decoupled' from the CPU in such a way as to have a different
  103. performance ratio from the CPU itself.  Even non-DMA devices are often
  104. afforded a level of concurrent, or simultaneous operation with the main
  105. CPU, so as to provide a more efficient method of task completion.  However,
  106. DMA devices are more closely tied with another set of subsystems to be
  107. considered when dealing with system performance.
  108.  
  109. III. Bus interfaces.
  110.  
  111.      This is often a confusing topic.  The term 'bus' is used a great deal,
  112. but all to often it is not clear what is meant by it.  As stated before,
  113. a computer system consists of a number of devices integrated together to
  114. form the whole.  A bus is, simply put, a communications pathway between
  115. devices.  Over these pathways control, address, and data signals are
  116. transferred to devices which are required to perform a portion of any
  117. particular task.  Most systems contain more than one bus in which this
  118. communication takes place.  Usually, a primary bus or combination of
  119. specific primary buses is responsible for the majority of data transfer and
  120. communications between all devices in general, which lesser buses used as
  121. specific pathways between certain devices.  Buses are often 'sized', or
  122. given in terms of bit-bandwidth.  Basically, this is a determination of the
  123. maximum size of simultaeous data transfer across the pathway between devices.
  124. For example, an 8-bit bus can transfer an 8-bit quantity of data across
  125. it at once, while a 32-bit bus can transfer 32 bits at a single time
  126. ( Where a bit is defined as an electrical signal value representing a binary
  127. number, either 0 or 1 [ Logical FALSE or TRUE, which orientation depending
  128. upon the design of the system ] for each bit ).  Although there are other
  129. sizing factors which come into play, this is a general idea, and suitable
  130. for the discussion at hand.
  131.      As any system relies on the coordinated efforts of all its components,
  132. the efficiency and effectiveness of communication between each device is
  133. of importance when considering the overall performace of the computer.  A
  134. bus which is not up to par with the capabilities of the devices it
  135. interconnects will hinder the system while one which is capable of handling
  136. the individual components will allow for a more efficient setup.  More of
  137. this relationship will be given later after the other component members are
  138. introduced.
  139.  
  140. IV. Input and Output ( I/O ) Devices.
  141.  
  142.     This is a lose subset of devices collectively describing such units as
  143. storage media devices ( disk/tape drives, etc... ), external communications
  144. devices ( serial and parallel communications to external units ), and
  145. specific control input units, such as keyboards and other data input means.
  146. While the latter of these devices is generally not considered to be of much
  147. influence in system performance, the former members, such as storage devices,
  148. can have a great impact on performance levels.
  149.      Storage devices are in general the slowest of data transfer devices
  150. on any system.  For this reason they are often considered to be a
  151. 'bottleneck' in system performance evaluation.  However, many advances have
  152. been made in the design of such units, including the use of DMA access from
  153. storage device control units to the system main memory, which helps by
  154. alleviating the CPU's responsibility in data transfer from these devices.
  155.     Generally, I/O devices are more important to systems requiring a great
  156. deal of access to large quantities of data, or ones involved in data
  157. transfer as their primary mechanism of use.
  158.  
  159. V. System Memory.
  160.  
  161.      This subsystem has been mentioned in passing previously, but until
  162. this section not given full attention.  System memory resources also play
  163. a big part in overally system performance evaluation.  Memory can affect
  164. a system's performance in many ways.  Depending on the speed of other
  165. devices, utilizing memory subsystems which are slower (requiring the
  166. addition of 'wait states - periods of time in which the data requesting
  167. device waits for the data to be available - to properly interface to the
  168. system) can cause any data accesses to occur at a slower rate than the rest
  169. of the system could otherwise handle them.  Many memory subsystems do
  170. indeed utilize wait states, as other devices are too fast for such memory and
  171. the memory access speeds required for zero-wait-state access would make for
  172. prohibitively expensive systems.  Although a completely zero-wait state
  173. system is often not feasible, methods are available to system designers to
  174. try and reduce the overall memory latency periods.  One widely used method
  175. is the use of cache memory.
  176.  
  177. VI. Cache Memory.
  178.  
  179.      Cache memory is a memory storage medium which is usually designed for
  180. the fastest possible access to frequently used resources, usually
  181. microprocessor instructions and/or data.  This area is generally small compared
  182. to the size of an entire memory complement, and thus can be implemented at a
  183. cost lower than that of employing very fast components for all of the system
  184. memory.  The general operation of most memory caches is to store the most
  185. recently accessed instructions or data within the cache, then make a check for
  186. them there upon the next memory access call.  In this sense, if the instruction
  187. or data is in the cache, it can be accessed almost immediately, rather than
  188. having the processor fetch the required data from the system's main memory
  189. resources.  A cache 'hit' is the term used to indicate the processor did indeed
  190. find the data within the cache, and did not have to fetch from main memory,
  191. whereas a 'miss' denotes when the processor was forced to get the needed data or
  192. instructions from the main system memory.  When a miss occurs, the cache will
  193. usually be updated with this new data, in the case it is called for again, thus
  194. keeping the data in the cache fresh.
  195.      The main theory behind such caches is that many programs spend a great deal
  196. of time within the confines of a loop.  Therefore, depending on the size of the
  197. cache, part or all of such a loop can be held within the cache, decreasing
  198. execution time.  Caches can be found both external to the microprocessor or,
  199. increasingly, within the microprocessor itself.  These caches may be seperated
  200. such that they only hold instructions or data individually, or may be set up
  201. such that both types of memory accesses are kept within one cache.  There are
  202. tradeoffs to both types of design, but in general the cache in any form is a
  203. useful mechanism for increasing system performance.  One must be cautioned,
  204. however, as the cache can also lead to a misrepresentation of system performance
  205. comparisons.  Benchmarking tools are often small segments of programs, and as
  206. such may be easily cached on systems equipped with such.  Thus, a benchmark
  207. result may not accurately depict the true system performance with a real-world
  208. application which would not be entirely housed within a system cache.
  209.  
  210. A word on clocks and clockspeed ratings.
  211.  
  212.      No mention has been made of clockspeed ratings of various devices
  213. so far because they are often misleading terms and can be taken in the
  214. wrong context in many cases.  Therefore this subject is placed in a seperate
  215. section of discussion.
  216.      "Clockspeed" ratings of devices are in actuality frequency measurements.
  217. Almost all digital devices operating in a computer system require some sort
  218. of timing input to coordinate their internal and external responses.
  219. Generally, this is provided by a clock signal fed to that device, and in
  220. some cases the device itself may be responsible for the generation of
  221. additional clock outputs to other devices.
  222.      Clock frequency ratings for system components are usually today given
  223. in terms of MegaHertz ( MHz ).  This is a cyclic frequency rating indicating
  224. a the number of cycles per second an oscilating periodic signal undergoes.
  225. As an example, a rating of one MegaHertz indicates a rate of one million
  226. cycles per second.
  227.      As indicated earlier, almost all digital system components require some
  228. form of clock input.  To see where this is important, take the case of the
  229. CPU.  Generally, instruction execution timing is stated in terms of the
  230. number of clocks a given instruction takes to complete.  A faster clock means
  231. that although an instruction takes the same number of clocks to finish, more
  232. clock input edges occur in a given time frame, and thus afford a faster
  233. response.  In this sense, faster clock rates generally indicate faster
  234. devices.  The system bus, and other devices are also managed in terms of clock
  235. inputs signals.  These may or may not be the same input as given to the CPU,
  236. or the CPU itself may control said clock rates.  Thus, differences in clock
  237. ratings between subsystems can be a source of bottlenecking, if one faster
  238. clocked subsystem is forced to wait to synchronize with a slower subsystem in
  239. order to transfer data and control signals.
  240.     Let it not be thought that clock input frequency is the sole governing
  241. force in determining component speed, however.  In many cases, other effects
  242. can cause similarly clocked devices which do the same task to finish in
  243. differing amounts of time.  One way this can happen is if one device has
  244. been enhanced in such a way as that it's internal operations are more
  245. efficient, thus requiring fewer clocks to complete a given operation.
  246. Therefore, this factor must be weighed as well as clockspeed in even single
  247. device evaluations.
  248.     It should be noted that the term "bus cycle" is often confused with
  249. the concept of of clockspeed, because of the term cycle.  A bus cycle
  250. is related to the clock cycle rate, but not usually identical.  Bus cycles
  251. are the time required for the CPU or other device to access data and
  252. complete an external bus operation on it.  For example, the MC68000 CPU runs
  253. a 4 clock memory access cycle in general ( asynchronous memory transfers ),
  254. requiring 4 CPU clocks to access a given memory operand.  This is assuming a
  255. no-wait state operation.  Wait states are additional clock periods added to
  256. this cycle time in order for the data to be validly returned from the
  257. accessed device, and are placed in the bus cycle period when a device is
  258. incapable of responding to the data transfer request within the normal 4 clock
  259. period.  This is only given as a particular example; other CPUs and
  260. architectures have differing bus cycle timing layouts (i.e, the MC68020,
  261. MC68030, etc... run normal 3 clock asynchronous bus cycles ).
  262.  
  263. Putting it all together
  264.  
  265.      These by all means do not represent the entire array of factors
  266. involved in effectively evalution performance issues in computer systems,
  267. but they are a good example assortment.  These factors cannot be considered
  268. alone, but rather must be put together in order to get a whole picture.
  269. Moreover, the intent of the system in use is important in weighting these
  270. factors towards which are more influencing for any particular task.
  271.      As an example, consider a system primarily intented for data processing
  272. tasks.  One might expect that it should have a relatively fast CPU in order
  273. to work through the data at a reasonable pace.  However, if the system's
  274. memory resources are such that they require the addition of many wait states
  275. into their accesses, then some of the effect of having a fast CPU is offset.  Even further, what type of data is being processed?
  276. Is it of a floating-point variety?  If so, then a very fast CPU might not
  277. necessarily be as effective as a moderately fast Floating Point coprocessor
  278. added to the system.  Another important factor might be the amount of
  279. data which needs to be continously accessed from storage devices.  In
  280. the case where a great deal is being pulled from such devices, and they
  281. are slow in providing the data to the system, then no blazingly fast
  282. component elsewhere is going to be able to make that system setup mark
  283. high in it's environment as the data is only able to get to the 'fast'
  284. devices as fast as the 'slow' storage devices can provide it.
  285.      Thus, care must be taken in evaluating any system's performance
  286. in order to properly take into account all factors involved.  This includes
  287. determination of the usage of the system, and how individual components
  288. may affect this speed.
  289.  
  290.                Specific performance aspects to the Amiga
  291.  
  292.      Until now, the discussion of system performance has been left fairly
  293. general.  But when dealing with performance issues, the system architecture
  294. in question must be looked at specifically to make any kind of fair
  295. determination.  As AIBB is a utility for comparisons between various
  296. Amiga computer systems, this will be the focus of this section.
  297.      The Amiga is a particularly interesting system as a whole to evaluate,
  298. as it is a very complex architecture for its relative price range.  It
  299. includes aspects of multiprocessing within it's design, as well as a
  300. multitude of different system layouts to consider.  However, only subsystems
  301. relevant to the type of testing performed by AIBB will be considered here,
  302. these being the 'core' elements of the system, discounting I/O devices and
  303. external communications units.  Of primary interest in this discussion is
  304. the system CPU, coprocessing devices, and memory subsystems of the Amiga.
  305.  
  306.                           Layout of the Amiga
  307.  
  308. Primary system processors.
  309.  
  310.       The Motorola M68000 series of microprocessors is utilized as the
  311. main CPU in all Amigas in production today.  Various models of Amigas
  312. exist which utilize most of the main variants of this microprocessor family,
  313. with third-party add-on accelerator units providing an upgrade path for
  314. many systems originally borne with earlier 68000 series CPUs.  An overview
  315. of the various M68000 microprocessors and their main uses in Amigas is
  316. as follows:
  317.  
  318.       MC68000 : This was the CPU the Amiga was born with, utilized in
  319.                 the Amiga 1000 first, and subsequently in the A500 and
  320.                 A2000 stock system models.  This CPU is characterized
  321.                 by a 24-bit address bus, giving it a 16 megabyte addressing
  322.                 capability, and a 16-bit data bus.  In all stock Amiga
  323.                 models utilizing this CPU, the device is clocked at the
  324.                 clock rate of the system bus, approximately 7.15 MHz.
  325.                 Certain add-on accelerators do exist for this CPU, replacing
  326.                 the stock motherboard component with an add-on board which
  327.                 runs the CPU at 14.28 MHz, or in some accelerators, 16.0 MHz.
  328.  
  329.       MC68010 : This CPU has not seen wide use in Amiga systems, although
  330.                 it's use does exist.  The MC68010 is pin-compatible with
  331.                 the MC68000, allowing for simple drop-in replacement in
  332.                 any system utilizing the latter.  Most systems do not see
  333.                 a tremendous performance boost while utilizing this CPU,
  334.                 however, as it's improvements over the MC68000 are not
  335.                 a tremendous leap.  The MC68010 does include various
  336.                 microcode enhancements over the MC68000, allowing for
  337.                 faster instruction execution in some circumstances, as
  338.                 well as the addition of a specialized transparent 'loop mode'
  339.                 which enhances CPU performance in tight program loops by
  340.                 allowing tight code loops to be latched into the CPU
  341.                 instruction prefetch queue where external bus cycles are not
  342.                 necessary for the loop code proper.  As indicated earlier
  343.                 though, this CPU has not seen a great deal of use in Amiga
  344.                 systems, and is not of primary focus here.
  345.  
  346.       MC68020 : A major upgrade to the line, the MC68020 includes a great
  347.                 many advances over the previous members of this
  348.                 microprocessor line.  The MC68020 is the first fully
  349.                 32-bit capable microprocessor of the M68000 series,
  350.                 incorporating full 32-bit address and data buses.
  351.                 This microprocessor also incorporates a 256 byte
  352.                 instruction cache, in order to cache program code sections
  353.                 used often within a fast-access medium.  The MC68020 is
  354.                 a large step above the MC68000 or MC68010, with an
  355.                 architecture more capable of handling larger demands upon
  356.                 its resources.  The MC68020 is utilized in earlier
  357.                 acclerated Amiga systems, including as the main processing
  358.                 engine of the first A2500 series of machines which utilized
  359.                 the CBM A2620 accelerator unit.  Many acclerators utilizing
  360.                 this CPU were produced by third-party manufacturers,
  361.                 including many low-cost units found in some A500 units, as
  362.                 well as the A2000 line.  In most units, this CPU is clocked
  363.                 at approximately 14.28 MHz, with a few of the low-cost
  364.                 accelerators running the CPU at the 7.14 MHz system clock
  365.                 of the Amiga.
  366.  
  367.       MC68030 : Improvements were made to the MC68020, including the
  368.                 addition of a 256-byte data cache to complement the
  369.                 existing instruction cache, and the inclusion of an
  370.                 on-board memory management unit ( MMU ) in order to
  371.                 produce the MC68030.  Additional improvements exist
  372.                 internally to this CPU over the MC68020 to give this
  373.                 CPU a stand against its generation of competing
  374.                 microprocessors.  The MC68030 is found as the accelerated
  375.                 CPU of the later A2500 series of Amigas, as well as being
  376.                 the main processor of the Amiga 3000 line.  This
  377.                 microprocessor has also been widely implemented in
  378.                 accelerator units for all models of Amigas and is used at
  379.                 a wide variety of clock frequencies, ranging from 16.0 MHz
  380.                 to 50.0 MHz.
  381.  
  382.       MC68040 : This microprocessor is a next-generation leap over the
  383.                 previous MC68030 model incorporating a great many advances
  384.                 over all previous models in this series of microprocessors.
  385.                 Both instruction and data caches found in the MC68030 are
  386.                 present, but their size is increased to 4K bytes each.  In
  387.                 addition, the data cache of this processor now supports a
  388.                 'CopyBack' mode of operation, providing for faster data
  389.                 access times.  On-chip MMUs exist for both data and
  390.                 instruction pipelines within the CPU, and internal
  391.                 pipelining has been streamlined for increased performance.
  392.                 A subset Floating Point Unit (FPU) is also included on-chip
  393.                 for floating-point calculations.  This CPU is this found in
  394.                 only 25-28 MHz rated varieties at this writing, though this
  395.                 will likely change in the near future.
  396.  
  397. There are several variants of these primary microprocessor models in
  398. production.  The newest such variants are the Motorola "EC" series of
  399. M680x0 parts.  The "EC" ( Embedded Controller ) series are characterised
  400. by changes from the standard part ranging from simple packaging to the
  401. removal of certain internal features.  This latter option is what has
  402. been taken with the MC68EC030 and MC68EC040 parts.  The MC68EC030 is
  403. characterized by the lack of an on-chip MMU.  Other than this change, it
  404. functions identically to the standard MC68030.  This microprocessor has
  405. found some use in the Amiga by "economy" accelerator units, as the MMU
  406. is not used often by applications programs, and these processors are less
  407. expensive than the standard parts in general.  The MC68EC040 has not yet
  408. made it's appearance, but perportedly will not include the on-board MMUs
  409. or FPU of the MC68040.
  410.     At this point it is of interest to bring up a point of common interest
  411. with accelerated Amiga systems; that of asynchronous vs. synchronous
  412. accelerator designs.
  413.      Synchronous designs were the first accelerators to appear for the Amiga.
  414. These designs are generally found in the MC68020 based accelerator units,
  415. and also in many of the low-cost MC68000-based accelerators.  A synchronous
  416. design is one in which the devices present on the accelerator are clocked at
  417. a rate which is absolutely synchronized to the main system clock signals.
  418. For the A500 and A2000, this means the clock rate of such accelerators
  419. must be an even multiple of the 7.15MHz system clock rate.  Because of the
  420. difficulties involved in maintaining synchronicity at high clock rates,
  421. generally these accelerator units are restricted to about 14.3 MHz, or double
  422. the system clock rate.
  423.      Asynchronous designs, on the other hand, have no such restrictions.
  424. These units are somewhat more difficult to design, but in general the
  425. accelerator components may be operated at nearly any clock input, provided
  426. they are themselves capable of performing at the given frequency.  This
  427. operation mode is what all MC68030-based accelerator designs for the A500
  428. and A2000  utilize, thus giving the wide range of clock rates found in these
  429. accelerators.
  430.      It must be noted however that an ambiguity exists in the terms
  431. synchronous and asyncronous.  The 680x0 microprocessor series is characterized
  432. by normally running asyncronous bus cycles.  This simply means the processor
  433. initiates a read/write action, and it is up to the external device to terminate
  434. ( acknowledge ) the cycle, thus completing it.  This behavior is NOT related
  435. to accelerator design as might be confused by the use of the same terms.  In
  436. accelerator design terms, asyncronous and synchronous are designating how the
  437. accelerator state machine relates to the main system clock, and NOT how
  438. individual bus cycles are run by the CPU in general.
  439.  
  440.      Many accelerated Amigas also utilize an FPU for floating-point math
  441. intensive operations.  The main FPUs in use by the various Amigas available,
  442. and there add-on accelerators, are manufactured by Motorola as well, either
  443. as seperate coprocessor devices, or as in the case of the MC68040 are embedded
  444. within the main CPU itself.  An overview of the various FPUs in use is given
  445. below:
  446.  
  447.       MC68881 : This is a seperate floating point coprocessor device
  448.                 which provides fast hardware-supported floating-point
  449.                 operations to any system software which supports it's
  450.                 use.  This unit does provide a certain level of
  451.                 concurrancy, giving it the abililty to perform certain
  452.                 instructions at the same time the main CPU is performing
  453.                 other operations.  Support for this coprocessor is
  454.                 provided either by a built-in hardware microcode interface,
  455.                 found on the MC68020 and MC68030, or by software trap
  456.                 interfacing for the MC68000 and MC68010.  The latter
  457.                 method is used in but a few early Amiga accelerator boards,
  458.                 while the preferred interface, that to the MC68020 or
  459.                 MC68030, is supported by virtually all accelerators
  460.                 utilizing those CPUs.  The MC68881 may be run asynchronous
  461.                 to the CPU clock input, meaning it need not run at the
  462.                 same clockspeed as the CPU itself.  Thus, a faster FPU
  463.                 may be used to give somewhat of a boost to floating-point
  464.                 operations.  The MC68881 is found mostly running at
  465.                 clock frequencies ranging from 12-20 MHz.
  466.  
  467.       MC68882 : The successor to the MC68881, this unit incorporates
  468.                 the same interface and operations as the former device,
  469.                 but with certain internal enhancements.  The microcode
  470.                 for many operations was optimized for faster response, and
  471.                 support for further instruction concurrency was added.  In
  472.                 general this FPU will perform at about 1.5 times the speed
  473.                 of the MC68881 at the same clock input frequency.  The
  474.                 MC68882 is primarily operated at clock rates of 12-50 MHz,
  475.                 depending on the accelerator or system utilizing it.
  476.  
  477.       MC68040 : The MC68040 CPU incorporates an FPU within the CPU itself.
  478.                 This FPU unit is a basic subset FPU to the MC68882,
  479.                 eliminating mainly the transcendental (sin, cos, etc...),
  480.                 and complex functions found in hardware microcode on the
  481.                 former.  Nevertheless, the optimized nature of the existing
  482.                 FPU instructions provided allow for emulation of the
  483.                 eliminated functions in such a was as to allow for faster
  484.                 execution than the MC68882 for almost all operations,
  485.                 including those that are software emulated.
  486.  
  487. The custom chips.
  488.  
  489.      In addition to these main processing units, the Amiga also incorporates
  490. a number of custom designed devices, known collectively as the Amiga's
  491. custom chips.  Their primary purposes are varied, but they are generally
  492. in charge of such things as DMA access and arbitration to various memory
  493. areas, graphics generation and effects, and sound generation and effects.
  494. The custom chips utilized within the Amiga are:
  495.  
  496.       Agnus   : Probably the most talked about custom chip, Agnus is found
  497.                 in a number of flavors, ranging from the original device,
  498.                 to the 'super' version found in the A3000.  Aside from minor
  499.                 internal changes, the main differences between these
  500.                 different versions is the amount of memory they can directly
  501.                 access.  Agnus is responsible for for control of 25 system
  502.                 DMA channels, generation of all system clocks in the A500
  503.                 and A2000, and provides control and addressing for CHIP RAM,
  504.                 or the memory accessable by these custom chips.  The size
  505.                 of this memory region is determined by the Agnus in use,
  506.                 and is either 512 KBytes, 1 Megabyte, or 2 Megabytes in
  507.                 range.  As the custom chips are utilized for graphics and
  508.                 sound coprocessing tasks, all such data must be located in
  509.                 this CHIP RAM area.  Agnus also contains within it what is
  510.                 referred to as a Bit Blitter.  This internal device is
  511.                 a fast memory copy unit designed to move areas of memory
  512.                 as efficiently as possible, and has the capability to also
  513.                 perform specific manipulations of said data in the process.
  514.                 Finally, Agnus also contains Copper.  Copper is the system's
  515.                 Display Synchronized Coprocessor.  This device assists with
  516.                 screen refreshes and display building.
  517.  
  518.       Denise  : The Denise custom chip is responsible for color generation,
  519.                 and display resolution modes.  This chip also contains the
  520.                 eight hardware display sprite controllers used in the system.
  521.  
  522.       Paula   : Paula is more or less a diverse device.  It controls sound
  523.                 generation, contains the system floppy disk control
  524.                 circuitry, and I/O control circuitry for the disks as well
  525.                 as external control ports.  Paula also contains an
  526.                 interrupt control system within for various system
  527.                 operations.
  528.  
  529.       Gary    : This custom chip is not heard about much, primarily because
  530.                 it's role is not as forbearing as the other chips.  In
  531.                 fact, Gary is not present on the A1000 series of Amigas.
  532.                 Gary is basically a 'glue' chip, responsible for smoothly
  533.                 holding things in line.  It does handle a certain amount
  534.                 of the floppy drive signals, but is primarily utilized for
  535.                 bus control and address decoding along the system bus.
  536.  
  537.     The custom chips of the Amiga, and the coprocessors associated with
  538. them are designed in such a way as to alleviate the main CPU from many
  539. intensive tasks, such as graphics operations and sound generation.  They
  540. support a concurrent level of operations, allowing the main CPU to continue
  541. with non-specific computing tasks while the custom chips handle their
  542. specific operations.  The custom chips are capable of DMAing directly
  543. into the CHIP RAM area, freeing the CPU completely from task responsibility
  544. in those respects.
  545.  
  546. Bus layout.
  547.  
  548.     The seperation of operations, and the denotion of the memory area
  549. of CHIP RAM is further accentuated by the fact that the Amiga utilizes
  550. two buses along these areas.  The CHIP RAM bus is a seperate entity from
  551. the main bus utilized by the CPU and other devices, but is accessable by
  552. the CPU as well.  The seperation can even be greater given the fact that
  553. the CHIP RAM bus can be decoupled from the CPU bus completely under
  554. certain circumstances.
  555.     The CHIP RAM bus is the bus primarily utilized by the custom chips,
  556. with the CPU also have access to it on an interleaved cycle basis.
  557. ( every other bus cycle can be a CPU access cycle ).   The custom chips
  558. have priority in this domain, and this is where the idea of bus contention
  559. arises.  If a great deal of bus activity is in progress by the custom chips,
  560. they may 'lock out' the CPU, forcing it to wait if it needs data or
  561. information from this bus and it's memory area.  This is where the touted
  562. 'FAST RAM' comes in.
  563.     FAST RAM is memory not on the CHIP RAM bus, but rather on the main
  564. system CPU bus or expansion bus.  This memory is not accessable by the
  565. custom chips, thus no contention for it's access occurs between them and
  566. the CPU.  Due to the seperate nature of the buses, it is possible for the
  567. CPU to be processing instructions and data utilizing FAST RAM while the
  568. custom chips are concurrently operating in the CHIP RAM area.  This
  569. concurrent operational status allows the Amiga to perform a great variety
  570. of graphics operations in such a way as to be usable on a bus which is
  571. not operated at a great speed.
  572.     The CHIP RAM bus on all Amigas is operated at a clock frequency of
  573. approximately 7.15 MHz.  On the A500 and A2000, this is the main system
  574. clock frequency.  For those machines, the CHIP RAM bus is accessed via
  575. a 16-bit wide bus port, while on the later A3000 systems the bus port
  576. for external accesses is a full 32-bit interface, affording larger data
  577. transfer sizes at the same clock rate.
  578.     Because of bus contention, a system containing only CHIP RAM may very
  579. well have slower operations than one which contains FAST RAM as well.  The
  580. FAST RAM equipped machine will be capable of having the CPU operate
  581. concurrently on information on that bus, while the custom chips operate on
  582. their tasks.  The CHIP RAM only system is going to have circumstances where
  583. the CPU will be forced to wait to access data, as the custom chips may be
  584. utilizing the CHIP RAM bus heavily.
  585.     FAST RAM in the A500 and A2000 series of machines can be located on
  586. many devices, from standard expansion card extenders which exist on the
  587. system expansion bus and operate at the system clock frequency, to other
  588. methods of RAM addition which have been devised that do not directly use
  589. the common Amiga expansion routes.  FAST RAM located along the standard
  590. expansion backplane on these systems operates at the system bus clock
  591. rate ( 7.15 MHz ), and is accessed accordingly.  On A3000 machines, FAST
  592. RAM is generally located on the system motherboard, and is accessed
  593. according to the system clock rate of those machines, which on stock models
  594. may be 16 or 25 MHz.  It should be noted that some systems utilizing only
  595. 512K of CHIP RAM have in their memory lists a region of RAM which is called
  596. FAST, but in fact is on the same bus as CHIP RAM.  This is generally the
  597. memory found on the A2000 motherboard for 512K CHIP RAM machines, or on the
  598. A501 expansion card for A500s.  This memory may suffer from the same bus
  599. contention that CHIP RAM is exposed to, and thus it is generally advisable
  600. to be sure that program code is not put here unless it has to be ( e.g, if
  601. true FAST RAM exists, it should be prioritized ).  The program FastMemFirst,
  602. which is supplied by CBM is meant to do just that.
  603.     FAST RAM located within the domain of an accelerator is not limited to
  604. the system bus clock rate.  It may be operated at such, but in general can
  605. be accessed at a clock rate much different, usually at the accelerator's
  606. CPU clock rate.  Systems utilizing accelerators benefit from this setup, as
  607. an accelerator does not change the system clock rate, and therefore in order
  608. for an accelertor's CPU to use system resources, it has to synchronize with
  609. the system clock, and may even have to contend with a narrower bus interface.
  610. Such is often the case on the A500 or A2000 when utilizing accelerators
  611. which employ the MC68020 or MC68030 microprocessors, which are best suited
  612. for 32-bit bus ports.  Since those processors take a performance hit when
  613. accessing narrower bus ports, as well as a hit from the possibly slower
  614. clock rate of the system bus, accelerators often are equipped with their
  615. own RAM resources which is designed to operate at the CPU clock frequency
  616. and utilizes a more efficient bus port size ( 32-bit ).  The case with the
  617. A3000 is slightly different.
  618.     The A3000 utilizes a 32-bit bus across it's memory resources already,
  619. therefore this is not a problem with accelerators for those machines.
  620. However, the bus on the A3000 is clocked at 16 or 25 MHz ( depending on
  621. the model ), and if a faster CPU is used in an accelerator it may be
  622. profitable for the unit to contain it's own RAM resources in order to
  623. lower access delays to a minimum.  The A3000 does include provisions for
  624. an accelerator to supply it's own clock signal to the motherboard, but
  625. as of this writing, this has not been employed by any devices.
  626.  
  627. Summary and overview.
  628.  
  629.     It can be seen from all this that there is a great deal to be visualized
  630. when trying to make a comparison of system performance levels.  A great
  631. many factors come into play when trying to determine just what system is
  632. best and quickest for the task at hand.  Various factors can determine how
  633. efficient an accelerator is on a particular system, or how efficient a
  634. system is in general.  System interface efficiency, accelerator or general
  635. system design, and intended use all play a part in determining which setup
  636. is the 'winner' in the speed race.  Indeed, there may not be a winner,
  637. except in a particular task category, and this must always be remembered.
  638. No benchmark or performance test can possibly hope to test all of these
  639. categories, and the others which also play roles.  Thus, it is necessary
  640. to utilize data obtained from any set of benchmarks as only a portion of
  641. the picture to be analyzed, and not as a rock-solid performance indication.
  642. System design has improved to the point where many benchmarks can be fooled
  643. into giving higher performance measures than would be found in any typical
  644. application.  As benchmarks are typically small pieces of code, they must
  645. be evaluated as such.  They can indeed give clues as to the performance
  646. level of a system, but certainly not a definitive answer.
  647.  
  648.  
  649.                            OVERVIEW OF AIBB
  650.  
  651.     Given the introduction just had, it seems that it is in order to bring
  652. in the topic of this entire discussion.  AIBB is a program primarily
  653. designed to test various aspects of system performance at the CPU and
  654. accompanying device level.  It does not test such things as I/O efficiency
  655. and storage media data retrieval and placement efficiency ( storage I/O ).
  656. The tests contained within AIBB by no means give a complete picture of any
  657. system's performance level, but does provide some basic information and
  658. comparison data for a variety of systems.
  659.     AIBB is divided into a number of sections.  Several are simply
  660. informative in nature, and designed to give a better picture of the system
  661. conditions during the actual testing phases.  Other portions of the program
  662. allow for a certain measure of system control, to give the ability to
  663. somewhat modify parameters under which tests are performed.  It is important
  664. to try to pay attention to the parameters and information given by AIBB,
  665. as they may in turn give important clues as to the nature of the test
  666. results reported.
  667.     AIBB is set up to allow a user to perform a series of tests on the host
  668. system, and compare those results against a series of other systems.
  669. Comparison data is given in both graphical and numerical form.  AIBB also
  670. allows the entire series of tests to be performed, and the results and
  671. system state stored as a "load module" which may later be loaded and used
  672. as one of the comparison systems against which a possibly different host
  673. will be compared to.  Tests may be manipulated by code type and system
  674. situation in order to allow a better picture of system performance to be
  675. visualized.
  676.  
  677. System Requirements.
  678.  
  679.     AIBB may be run on any Amiga system utilizing AmigaOS 1.3 or greater,
  680. but it should be noted that the tests performed are designed primarily for
  681. accelerated systems or fast systems in general.  Therefore, tests may be
  682. exceedingly long on Amigas utilizing slower CPU units, and the general
  683. speed of the program may seem a bit slow on unaccelerated platforms.
  684.     Users of MC68040 based systems must be utilizing AmigaOS 2.0 or
  685. greater in order to run AIBB.  Modified versions of AmigaOS 1.3 do exist
  686. which are patched to somewhat deal with the problems of that OS version
  687. and the 68040, but as per CBM's official stance, this is not a supported
  688. method of utilizing the MC68040 as a system processor.  For this reason,
  689. AIBB will abort if it detects a 68040 and the system OS version is less
  690. than 2.0.
  691.     AmigaOS 1.3 users with accelerators must be sure to be using the latest
  692. SetPatch routines for those OS versions. ( SetPatch v1.34 )  SetPatch
  693. corrects a problem with FPU code with those OS versions, and is necessary
  694. for proper operation of AIBB.  AmigaOS 2.0x also is shipped with a SetPatch
  695. routine which should be executed in the Startup-Sequence to assure any
  696. future OS bug fixes and corrections will be applied.
  697.     This program does not absolutely have any absolute requirements other
  698. than those previously mentioned in order to be operated, but it does have
  699. some suggested configurations.  In order to utilize the program's file
  700. functions, AIBB must be able to find one of the following shared libraries
  701. in the libs: directory on your system disk:
  702.  
  703.           1.  kd_freq.library   ( library version 3.0 or greater )
  704.           2.  req.library       ( library version 2.0 or greater )
  705.           3.  asl.library       ( AmigaOS 2.0 systems only )
  706.           4.  reqtools.library
  707.  
  708. AIBB will search for these libraries in this order, and utilize the first
  709. one found.  Primarily, the library need is for file requester utilizing
  710. functions within AIBB.  AIBB will still operate without finding one of
  711. these libraries, but it will block access to the file-requesting functions
  712. it normally provides.
  713.     This will be the last version of AIBB to include support for AmigaOS
  714. versions below 2.0.  At this time, more effort is being placed into
  715. compatibility with later AmigaOS generations, and this will be the mode
  716. of support emphasized.
  717.  
  718. Getting Started.
  719.  
  720.     AIBB may be started from either the CLI/Shell, or WorkBench.  If the
  721. latter method is used, it is imperative that the icon used ( if not the
  722. supplied one ) has it's STACK value set to 20000.  AIBB invocations from
  723. the CLI/Shell have no special requirements or stack settings as AIBB will
  724. perform the necessary set-up in this environment.  It is recommended that
  725. careful attention be paid to the existing system memory resources before
  726. starting AIBB.  AIBB is quite large, and if you wish it and it's test code
  727. to be loaded into a certain memory medium ( generally a fast medium if
  728. possible ), then enough contiguous memory must exist in that memory region.
  729. AIBB will give information as to where exactly it's code is located, but
  730. if you are interested in loading AIBB in a certain region, this must be
  731. taken into account BEFORE starting the program.
  732.     AIBB will not start if it detects the presence of the debugging tool
  733. "Enforcer" when first invoked.  This is because the way AIBB examines the
  734. system causes Enforcer to complain loudly, although the "hits" it detects
  735. are not problematic, and are non-damaging.  Enforcer was designed
  736. primarily as a debugging tool.  It should NOT be used as a "protective
  737. measure" for everday use.  As this example illustrates, Enforcer cannot
  738. be sure of what it is reporting as a problem, and if it is indeed actually
  739. a problem.  However, for those who desire, Enforcer MAY be run once AIBB is
  740. up and running.
  741.     Upon starting AIBB, a few moments may be needed by the program while
  742. it evaluates the system it is being operated on, the exact time depending
  743. on the relative speed of the host system in question.  A screen displaying
  744. a message of that sort will be given while this is in progress.  Following
  745. this evaluation, you will be presented with AIBB's main program screen.
  746.  
  747. Section 1: The Main Screen.
  748.  
  749.     AIBB's primary screen consists of several informational areas designed
  750. to provide information about test operations and basic system information.
  751. These areas are divided up as follows:
  752.  
  753.     Performance Graph
  754.         The performance graph is a bar graph display of the comparisons
  755.         made after each test is performed.  Ratings are given in reference
  756.         to the base machine for comparisons, with the highest performing
  757.         system having it's bar displayed in RED, while all others are
  758.         in YELLOW.  Note that although numerically two machines may have
  759.         the same results out to 2 decimal places, AIBB may still show one
  760.         in red.  This is due to rounding, and the fact that the one
  761.         highlighted machine does in fact have a higher rating if a few
  762.         more decimal places were shown numerically.  However, such small
  763.         quantities should not be taken literally, as far too many variables
  764.         exist to use such small values in accurate comparisons.
  765.  
  766.     Test Result/Information
  767.         This area provides several pieces of data.  First, it gives the
  768.         name of the test last whose information is being displayed
  769.         currently.  The numerical result of the test performed is given
  770.         here, as well as the memory node reference number where the test
  771.         code, and possibly any test data is located.  To reference these
  772.         node numbers, please see the section on the "System Information
  773.         Display".
  774.  
  775.     Base Machine Indication
  776.         Below the Test Result/Information area is a small reference which
  777.         lists the current comparison system being utilized as the base for
  778.         all comparisons performed.
  779.  
  780.     Comparison Information
  781.         This section provides several key pieces of information about test
  782.         performance.  It gives the numerical ratings of all systems
  783.         utilizing the base machine as a reference.  These value are the
  784.         same as those used to generate the performance graph.  In addition,
  785.         the type of code used for the host system when performing the test,
  786.         as well as the code type of the comparison systems' result
  787.         references is displayed for ratings calculations is displayed.
  788.  
  789.     Basic Information
  790.         Located just below the performance graph, this area provides key
  791.         pieces of information about the current state of the host system.
  792.         The system CPU type, FPU type, and MMU type in use are displayed,
  793.         as well as the current operational status of the MMU, and any
  794.         CPU caches which may exist.  Also displayed is the approximate
  795.         CPU and FPU clock speed ratings, as calculated when AIBB first
  796.         evaluated the host system on startup.
  797.  
  798.    Test Activation Gadgets
  799.         These are located in the lower right-hand corner of the screen and
  800.         serve several purposes.  Normally, they are utilized to start a
  801.         test, but this is dependent upon the mode of operation AIBB is
  802.         currently in.  See the section on "Review Mode" for further
  803.         information of this nature.  Activation of a gadget in standard
  804.         mode starts a test with the given code parameters and general
  805.         settings, as detailed in the appropriate sections later.  Tests
  806.         are divided into two groups: "Standard" and Floating-Point.
  807.         Standard test types are more general to the system, and represent
  808.         code more often found in operational situations.  Floating-Point
  809.         tests utilize a great deal of floating-point math to test the
  810.         system's performance across that domain.  Standard tests are
  811.         denoted in AQUA lettering, while floating-point specific tests
  812.         are given in YELLOW lettering.  See the test descriptions for
  813.         more information on the tests available from AIBB.
  814.  
  815. Main Screen Menus.
  816.  
  817. AIBB's primary screen has attached to it a number of menu items, which
  818. give even more options and control over program operation.  Those operations
  819. are described below, in the order of the menus as they appear on the screen.
  820.  
  821. Menu 1: General
  822.  
  823.         About AIBB
  824.             This option presents a requester giving credits and information
  825.             about this version of AIBB.
  826.  
  827.         Enter/Exit Help Mode
  828.             Toggling this menu item enters or exits AIBB from Help Mode.
  829.             While in Help Mode, choosing menu options and screen gadgets
  830.             will result in a requester giving information about the item
  831.             just selected.  After a help requester for a certain item has
  832.             been selected, it will not be displayed again during that
  833.             invocation of the help option.  Toggling help off and
  834.             reactivating it will result in the requesters being displayed
  835.             again for all items.
  836.  
  837.             Each requester for help shown will allow either the continuation
  838.             of the selected function, or will allow it to be cancelled in
  839.             the event that it was selected only for determining what its
  840.             action would be.
  841.  
  842.         Load Module Prefs
  843.             This version of AIBB allows the use of alternate systems than
  844.             those contained internally in order to make comparisons against
  845.             the host system.  This menu item will bring up a requester-like
  846.             arrangement which will allow the paths to load modules to be
  847.             used in place of the internal defaults to be specified.  To
  848.             replace an internal module at startup for comparisons, simply
  849.             enter the full path name to the alternate load module in the
  850.             respective entry in this requester.  Leaving an entry blank
  851.             informs AIBB to use it's internal default for that system.
  852.             Note that this configuration will take effect when AIBB is
  853.             next started, and the the next menu item, "Save Configuration"
  854.             as detailed below, must be selected to save the choices made
  855.             here.
  856.  
  857.         Save Configuration
  858.             This saves the current state of AIBB's menu item selections, as
  859.             well as the current order of the comparison machines as they
  860.             are placed.  For more information on these regards, see the
  861.             section on loading new comparison modules from the default
  862.             systems within AIBB.  AIBB currently saves this data to a file
  863.             called "aibb.prefs", which may be located in an assigned
  864.             directory called AIBB:, or your system S: directory.  This
  865.             file will be searched for, in that order, when AIBB is first
  866.             invoked, and the values contained within will set AIBB's
  867.             startup options.  If AIBB cannot locate a preferences
  868.             configuration file, it will notify you and use internal
  869.             default values.
  870.  
  871.         QUIT
  872.             This item forces termination of AIBB.
  873.  
  874. Menu 2: Systems
  875.  
  876.         Systems Information
  877.              Selecting this menu item produces a submenu which lists the
  878.              current comparison machines, as well as a selection for the
  879.              host system.  Selection of one of these submenus moves AIBB
  880.              to a systems information display, which will show pertinent
  881.              information about that system's state during test operations.
  882.              For a complete description of the data shown here, see the
  883.              section "The System Information Display".
  884.  
  885.         AIBB Task Priority
  886.              Another submenu-endowed item, this selection allows for the
  887.              selection of AIBB's task priority.  This is primarily for
  888.              running tests while still allowing multitasking to occur,
  889.              while examining the effects of different task priority levels.
  890.              For information on disabling multitasking during test
  891.              operations, see the "Disable Multitasking" entry under the
  892.              Test Options menu descriptions.
  893.  
  894.         The next entries in this menu will be available only if the
  895.         host system's CPU type has support for their use.  Otherwise, they
  896.         will be disabled from operation.  These options are provided to
  897.         allow some flexibility in global systems operations, and to provide
  898.         a method of determining the effect of use or non-use of these
  899.         CPU-related items on system performance.
  900.  
  901.         Switch Instruction Cache
  902.              Toggles the activation or disabling of the CPU instruction
  903.              cache.  The state of this cache will be reflected in the
  904.              Basic Information area of the display.
  905.  
  906.         Switch Data Cache
  907.              Toggles the CPU data cache operation state.  The status of
  908.              this CPU cache is also reflected in the Basic Information area
  909.              of the display.
  910.  
  911.         The cache-influencing items below toggle certain modes associated with
  912.         the caches in question.  A lot of confusion exists about such modes,
  913.         and the MC680x0 cache BURST mode ( supported on the MC68030 and
  914.         MC68040 ) is often not understood.  BURST mode operations are a special
  915.         form of cache filling ( updating the contents of the cache ) where an
  916.         entire 'line' of cache data may be filled sequentially and faster than
  917.         the single-entry mode of cache filling.  A cache 'line' in this case is
  918.         a series of 4 longwords ( 32 bits each ) arranged simplistically as:
  919.  
  920.                         entry:   1    2    3    4
  921.  
  922.                         line 1  ---- ---- ---- ----
  923.                         line 2  ---- ---- ---- ----
  924.  
  925.         where each entry is one longword.  The MC68020 and MC68030 utilize
  926.         cache sizes of 16 lines, giving 256 bytes of cache storage.  The
  927.         MC68040 increases this to give a total of 4K of cache space for each of
  928.         data and instruction cache.
  929.             BURST mode is essentially a compromise in performance.  Average-
  930.         case CPU performance is enhanced at the cost of worst-case performance.
  931.         The latter is true because during BURST mode operations, the CPU bus
  932.         controller is committed to a memory fetch sequence for a longer period
  933.         of time than with single-entry mode.  The mode enhances average and
  934.         best case performance by allowing the CPU to sequentially fetch 3
  935.         additional longwords from memory faster than normally done by the usual
  936.         asynchronous single-fetch bus cycle.  Once it has fetched the first
  937.         longword, the next 3 are clocked into the cache line utilizing only 2
  938.         clocks per fetch, thus filling one cache 'line' in 9 clocks ( assuming
  939.         a zero-wait state fetch ) rather than 15 clocks.  The theory behind
  940.         this is that the data/operands sequentially surrounding the initial
  941.         fetch will most likely be needed soon in any case, and placing them in
  942.         the cache leads to their eventual faster access.
  943.             BURST mode operations are not universally applicable to all
  944.         systems however.  Generally, the memory controller on the system ( or
  945.         particular memory board ) must be capable of supporting BURST mode
  946.         operations, or the BURST request by the CPU will not be fulfilled.  In
  947.         systems not capable of these modes, activating them will not be
  948.         detrimental, but will go unnoticed in performance terms.  The CPU will
  949.         request BURST fills when it deems appropriate, but the memory
  950.         controller will not acknowledge the request and thus simply force the
  951.         CPU to do single-entry fetches as in standard operation.
  952.             AIBB allows toggling of the following cache modes on 68030 CPUs
  953.         ( The MC68040 implicitly requests BURST mode transfers, and does not
  954.         have a cache BURST disable option except in hardware response from the
  955.         memory device, thus the cache BURST toggle options are not available
  956.         for 68040 systems...this is evident by the cache status display showing
  957.         this mode to be ON at all times on these platforms ):
  958.  
  959.         Switch I-Cache Burst Mode
  960.              This activates or deactivates the CPU instruction cache BURST
  961.              mode of operation.  Note that not all memory subsystems will
  962.              support the utilization of the cache mode, but the state of
  963.              this cache setting will not harm the system either way.
  964.  
  965.         Switch D-Cache Burst Mode
  966.              Works the same as Switch I-Cache Burst Mode, but operates on
  967.              the CPU data cache BURST mode setting.  Note again that
  968.              not all memory configurations support this mode, and setting
  969.              this cache operation mode may not have any effect.
  970.  
  971.         Switch 040 Copyback Mode
  972.              The MC68040 data cache is capable of being operated in a
  973.              special mode known as Copyback, and this item will toggle its
  974.              setting.  Copyback mode does not immediately write data through
  975.              to main memory during write operations, but only to the cache
  976.              until such time as the cache is or particular entries/lines are
  977.              'flushed'.  This increases performance on data writes as main
  978.              memory bus cycles do not have to be run for cache hit situations.
  979.              However, some applications may have difficulty with this mode, as
  980.              it is possible for memory to be altered without the cache being
  981.              updated properly.  Some DMA devices are affected by this, and even
  982.              the normal unmodified 1.3 version of the Amiga's operating system
  983.              and below are not compatible with Copyback mode.  Please refer to
  984.              your accelerator or system documentation before utilizing Copyback
  985.              mode.
  986.  
  987. Menu 3: Test Options
  988.  
  989.         Disable Multitasking
  990.              When this item is selected, it indicates AIBB should perform
  991.              all tests in such a way as to disable all system multitasking
  992.              during the run of any test.  This allows a figure to be
  993.              generated which indicates the system performance FOR THAT TEST
  994.              more accurately, as there is no task context switching during
  995.              the test runs.  Note that all comparison system figures are
  996.              generated with this option enabled, so this should be selected
  997.              in order to compare the systems on an even par.  When this
  998.              item is utilized, the previously mentioned ability to set AIBB's
  999.              task priority will have no impact on test performance, as no
  1000.              task switching will occur, and thus the task priority level
  1001.              becomes meaningless.
  1002.  
  1003.              It should be noted that when using this option, it is a good
  1004.              idea NOT to be running much in the background.  The Amiga's
  1005.              operating system is a near-real-time setup, requiring in many
  1006.              cases fast response to system conditions.  Use of this option
  1007.              can affect certain other operations adversely, most notably
  1008.              that of serial communications and the like.
  1009.  
  1010.         Screen Overlay
  1011.              Using this option results in AIBB putting a one bitplane
  1012.              ( two color ) low-resolution screen over it's main screen
  1013.              during every test.  AIBB's normal screen is a high-resolution
  1014.              4 bitplane ( 16 color ) screen, and on CHIP RAM only systems,
  1015.              and for some tests even on FAST RAM equipped systems this may
  1016.              result in a great deal of bus contention on the CHIP RAM
  1017.              bus.  Subsequently, performance levels may be adversely
  1018.              affected by such bus contention.  The use of this option
  1019.              attempts to alleviate some of this problem by utilizing a
  1020.              screen overlay which minimizes bus contention on the CHIP RAM
  1021.              bus, by limiting the required DMA activity by the custom chips
  1022.              to display it while it is the topmost screen.  Again, all
  1023.              comparison data for the other systems is obtained with this
  1024.              option enabled, so in order to keep comparisons on par this
  1025.              option should be enabled, which it is by default values.
  1026.              Note that for graphics-related tests this option will not be
  1027.              activated as it would be detrimental to what those tests are
  1028.              indeed trying to analyze.  It is advised that if this option
  1029.              is enabled while multitasking is permitted that screens not
  1030.              be shuffled while a test is in progress.  The uppermost screen
  1031.              is the cause of the CHIP RAM bus display DMA effects, and to
  1032.              shuffle to another screen during a test could nullify the
  1033.              advantage of using this option.
  1034.  
  1035.         Set Comparison Base
  1036.              This item contains the names of the comparison systems in a
  1037.              submenu area.  Selecting one of these submenu items sets
  1038.              the current comparison base system to that machine.  The
  1039.              comparison base is the system utilized as the 'base' value for
  1040.              test results when computing performance ratings.  All
  1041.              percentages shown are given as percentages of the base system,
  1042.              with a 1.0 value for a system indicating a performance
  1043.              equal to the base system.
  1044.  
  1045.         The next items in this menu allow code type options to be selected
  1046.         for the host system ( and subsequently the tests which are
  1047.         performed ), and the comparison systems.  Selection of a code option
  1048.         for the host system causes AIBB to perform any tests utilizing that
  1049.         option or options.  Selections under the comparison systems result
  1050.         in AIBB using the figures for that code type ( previously obtained
  1051.         when the comparison data was generated ) when making comparisons.
  1052.         Note that not all options will be available.  This is dependent on
  1053.         the system capabilities.  Each selection contains the following
  1054.         options within a submenu, the first options in each submenu selecting
  1055.         options for the type of "standard", or non-floating point specific
  1056.         code used.  The selections here affect the general code type
  1057.         utilized for all test types.
  1058.  
  1059.         Standard 68000 Code
  1060.              Having this item selected sets the code type to code which is
  1061.              compatible with all MC680x0 series microprocessors.  Note
  1062.              that this means no advantage is taken of the capabilities or
  1063.              code optimizations available on later-generation
  1064.              microprocessors of this series, but it is a good base selection
  1065.              as it can be utilized on all existing Amiga systems.
  1066.  
  1067.         68020+ Code
  1068.              This item selects code compatible with later generation
  1069.              MC680x0 series processors.  It will not be compatible under
  1070.              most circumstances with earlier ( MC68000 or MC68010 ) based
  1071.              systems, but will take advantage of some of the more advanced
  1072.              capabilities of these later processors of the series.
  1073.  
  1074.         The next options available are for floating-point code type utilized.
  1075.         It will affect only tests which utilize floating-point math in
  1076.         nature.
  1077.  
  1078.         Standard Math Code
  1079.              Using this option sets the code type to use software emulation
  1080.              of floating point routines.  This is compatible with all
  1081.              Amiga systems in use, as it is not hardware specific.
  1082.  
  1083.         In-Line Coprocessor Code
  1084.              This option sets the test code type to that which uses in line
  1085.              coprocessor instructions for floating point operations.  As not
  1086.              all systems will have a coprocessor available, this option is
  1087.              not universally usable on all systems, as is not the code type
  1088.              used itself.
  1089.  
  1090.         A note must be made here about the code types available.  The
  1091.         math-specific code selections will ONLY affect tests which utilize
  1092.         floating point routines, while the "standard" code selections will
  1093.         be effective across all tests, INCLUDING floating-point tests.
  1094.         Again, not all code options will be available on all systems, due
  1095.         to the various configurations which may exist, and the lack of
  1096.         certain hardware therein.
  1097.  
  1098. Menu 4: Special
  1099.  
  1100.         Enter/Exit Review Mode
  1101.                  Entering Review Mode gives a method for reviewing previously
  1102.              performed tests and their comparisons.  When this mode is
  1103.              active, selecting a test gadget, or setting a comparison option
  1104.              ( code type, etc ), will result in the display of the results
  1105.              last obtained for that test.  If no test results for the host
  1106.              system are available, the information for the comparison
  1107.              systems currently in use will be shown, and the host system
  1108.              will data will be marked with a 'N/A' indicating the
  1109.              information is not available.  The ability to display the
  1110.              comparison system data without running the actual test on the
  1111.              host system is provided to allow a quick view of the performance
  1112.              of said comparison machines before running the test(s) on the
  1113.              host.
  1114.                  Code type options may be manipulated here, and if a test
  1115.              result is available for those settings, it will be displayed.
  1116.              For example, if you were to have the Matrix test as the current
  1117.              test you are viewing, and you want to see the results of the
  1118.              test under 68020+ code, selecting that item under the
  1119.              "This Machine" code type selection will show the Matrix test
  1120.              results utilizing this code type ( if they were previously
  1121.              performed, making the data available ).
  1122.  
  1123.         Start/Stop Log File
  1124.                  AIBB has the ability to keep a "log file" of test
  1125.              activities.  This option allows you to start this logging
  1126.              operation, or stop it once in progress.  The log files contain
  1127.              basic information, in text form, about each test as it is
  1128.              performed, as well as essential system information.
  1129.                  Starting a log file involves selecting a file name to which
  1130.              AIBB will save this data.  If the file is an existing one, AIBB
  1131.              will check for the words "AIBBLogFile" at the start of the file.
  1132.              If this is not found, you will be warned and given the option of
  1133.              aborting the use of this file as a log file.  Heed this...AIBB
  1134.              WILL write into any file if told it is acceptable, including
  1135.              executable load files.  This checking is done in order to
  1136.              prevent accidental file damage or destruction.
  1137.  
  1138.         All Tests | Make Module
  1139.                  This is a rather important option.  As indicated earlier,
  1140.              AIBB has the ability to create a "load module" of comparison
  1141.              results in order to utilize them later in other runs as a
  1142.              comparison system.  This selection allows the generation of just
  1143.              such a load module.  Selecting this menu item will result in a
  1144.              requester being displayed which warns that this option may
  1145.              take considerable time, and that multitasking will not be
  1146.              functional during it's operation.  At this point, the operation
  1147.              may be cancelled if it is not desired at that time.  When
  1148.              performing all the tests, the options "Disable Multitasking",
  1149.              and "Screen Overlay" previously mentioned are automatically
  1150.              enabled in order to give consistancy to all such generated
  1151.              modules which may be utilized in AIBB.  Using this option,
  1152.              all tests are performed in all possible code combinations
  1153.              available on the host system configuration, in order that
  1154.              later comparisons will have as much data to go by as possible.
  1155.                  Upon completion of all the tests, a requester will be
  1156.              displayed informing you if the tests completed successfully, and
  1157.              asking if you wish to create such a load module at that time.
  1158.              If you choose to do so, a file requester will appear asking for
  1159.              the name of the file to save the module under.  Following this,
  1160.              a smaller requester will appear asking for the name to use with
  1161.              the module under the graph display for it.  This defaults to
  1162.              the first 8 characters of the filename, but may be changed as
  1163.              desired.  Note that only names of up to 8 characters are
  1164.              supported at this time.
  1165.                  If "Cancel" is selected in reference to the module creation
  1166.              requester, AIBB will go back to it's normal operations, and
  1167.              other tests may be performed.  In this manner, it is possible
  1168.              to use this option simply to perform all possible test
  1169.              combinations for later review.  If you wish to review the tests
  1170.              done before making a module, this is possible by not saving the
  1171.              module at the time, and entering "Review Mode" upon finishing.
  1172.              If no further tests are performed ( which would invalidate the
  1173.              consistancy of the module's data ), then selecting "All Tests |
  1174.              Make Module" again after reviewing the data will result in a
  1175.              requester informing you that the data for a module is still
  1176.              valid and will ask you if you wish to create one now.
  1177.                  It should be noted that comparison options and settings are
  1178.              not in effect during the performance of the tests with this
  1179.              option.  AIBB will merely do all tests with all code types
  1180.              possible, and keep the results ( if desired ).  Comparison
  1181.              options are only effective ( and necessary ) when viewing
  1182.              information present, and are not important when generating
  1183.              a load module.
  1184.  
  1185. Section 2: System Information Display
  1186.  
  1187.     The System Information Display is a seperate display which is brought
  1188. up when the Main Display menu option "Systems Information" is selected.
  1189. This display gives various information about the state of the system
  1190. selected, and is also the location from which other load modules to enter
  1191. as comparison systems may be selected.
  1192.     The display here is broken into several sections, giving modular
  1193. information areas pertaining to various system data.  If the host system
  1194. is the system being viewed, the data represents the current state of the
  1195. host system.  If a comparison system's information is being viewed, then
  1196. the data is representative of the system state when that machine's module
  1197. was created for further comparisons.
  1198.     The upper portion of the display consists primarily of CPU/FPU/MMU
  1199. data and state information which is fairly self-explanatory.  Other
  1200. information given in this section includes the display type in use, Agnus
  1201. and Denise custom chip revisions of the sytstem, and two items of
  1202. particular interest:
  1203.  
  1204.     System Stack Memory Location
  1205.         The system stack ( or "Supervisor Stack" ) is the memory region
  1206.         reserved for use by the processor while operating in what is known
  1207.         in M680x0 terms as "Supervisor Mode".  Supervisor mode is the CPU
  1208.         mode of operation most often associated with operating system
  1209.         use, and various system maintenance operations.  Supervisor mode
  1210.         is characterized primarily by the fact that it allows unhindered
  1211.         access to certain CPU operations which are of primary interest only
  1212.         to system-level operating system functions.  User Mode is the
  1213.         operational status in which almost all applications function, and
  1214.         said CPU operations are considered "off limits" in this mode.  This
  1215.         is to protect the integrity of the system from runaway programs and
  1216.         the like, and to more easily facilitate multiprocessor/multiuser
  1217.         system environments.  It is a characteristic of the M68000
  1218.         microprocessor series and serves to allow a seperation between
  1219.         operating system priviledges and user program priviledges.
  1220.             The system stack is where much CPU state information is stored
  1221.         during operating system activities, and thus it is important to
  1222.         recognize it's location in memory.  Depending on the memory type
  1223.         where this stack is located, it may affect certain operation speeds,
  1224.         and it's location is thus given here to allow this to be taken into
  1225.         account when evaluating system performance.  It should be noted
  1226.         that although this is an important item of interest, it is generally
  1227.         not going to have much effect on the greater majority of AIBB's
  1228.         operational modes and testing.
  1229.  
  1230.     AIBB Process Stack Memory Location
  1231.         This item is probably of more interest than the System Stack
  1232.         location.  AIBB's process stack is a memory region which is assigned
  1233.         to AIBB ( and any user program ) when it is invoked.  Certain
  1234.         program variables and data are stored on the stack during operations,
  1235.         and thus it's location can affect performance levels.  This
  1236.         should be taken into account carefully, as some of the testing
  1237.         AIBB does utilizes this stack for data, and thus will be affected
  1238.         if it is located in a slower memory medium than optimal for the
  1239.         system configuration.
  1240.  
  1241.     Operating System Version
  1242.         This field identifies the operating system version in use on the
  1243.         system in question.  Certain versions may have different features,
  1244.         and may affect certain of the test performance levels.
  1245.  
  1246.     Operating System Location
  1247.         On certain MMU equipped accelerated systems, or on such system with
  1248.         special hardware setups, the operating system ROM image may be
  1249.         relocated to a faster memory medium.  ROM access times are generally
  1250.         slower than that of RAM resources, and in the case of an A500 or
  1251.         A2000 with an accelerator which is more at home with a 32-bit bus
  1252.         than those system's normal 16-bit 7.15 MHz bus, it is extremely
  1253.         advantageous to move the operating system kernel code to a faster
  1254.         accessed memory region.  Often times, this relocation is done by
  1255.         using a system's MMU ( Memory Management Unit ), which allows for
  1256.         address translation of memory "pages".  Translation occurs by
  1257.         mapping a certain memory region such that accesses to it are
  1258.         rediverted to an alternate location in this kind of setup.  Programs
  1259.         such as Dave Haynie's SetCPU and the CPU program which comes with
  1260.         AmigaOS 2.0 allow this type of operation.  AIBB is capable of
  1261.         determining the actual memory location of the ROM code image by
  1262.         checking through the MMU translation tables, and will report where
  1263.         the code resides.
  1264.             Some accelerators allow for translation of the ROM image without
  1265.         utilizing an MMU.  Such units utilize a custom hardware arrangement,
  1266.         and at this time AIBB cannot accurately determine the memory
  1267.         location of the ROM image for these systems.  In these cases, it
  1268.         is recommended that such translations be noted for further
  1269.         reference if comparisons are to be made against other systems
  1270.         utilizing a module or log file results so that no confusion about
  1271.         the system setup occurs.
  1272.  
  1273.     The bottom portion of the System Information Display contains a
  1274. list of the system memory node regions, and data about them.  The node
  1275. number listed as the first field for each region is the number which is
  1276. referenced by the earlier mentioned Test Code and Data locations field
  1277. on the Main Display under Test Result/Information.  Pertinent information
  1278. about each memory region is given as follows:
  1279.  
  1280.     Node Name
  1281.         This is simply the text name which identifies the memory node,
  1282.         and is generally set by the manufacturer's initialization setup.
  1283.  
  1284.     Address Range
  1285.         This is the physical addressing range which this memory region
  1286.         occupies in the M68000 flat linear memory model.  The range
  1287.         given is the hexadecimal number format addressing range which is
  1288.         utilized to access the memory in this region.
  1289.  
  1290.     Priority
  1291.         The Amiga's memory resources are arranged in a priority-based
  1292.         fashion.  Regions with higher priority are checked first for
  1293.         suitable locations whenever a general memory allocation request
  1294.         is issued by a program.  Thus, this priority can affect the location
  1295.         where program code and data will be located.  Generally, CHIP RAM
  1296.         will be given the lowest priority on the system in order to prevent
  1297.         memory from being allocated there unless it is specifically
  1298.         requested to go there, preventing it's use unless necessary.
  1299.  
  1300.     Port Size
  1301.         This is the width of the bus interface to this memory region from
  1302.         the main CPU.  Generally, it will be either 16 or 32 bits in width.
  1303.         A 16 bit interface is ideal for a 16-bit data bused CPU such as the
  1304.         MC68000 or MC68010, while a 32-bit ported interface is more suited
  1305.         for a 32-bit data bused CPU such as the more advanced Motorola CPUs.
  1306.         While an 8-bit memory port size is not impossible, nor infeasible
  1307.         for the MC680x0, and thus the Amiga, it is not practical, and thus
  1308.         it is not likely this port size will be seen.
  1309.  
  1310.     Node Size
  1311.         The size of the memory node's maximum usable memory is
  1312.         given here for reference purposes.  Note that although a memory
  1313.         board may be given at having 2 megabytes of memory on the board
  1314.         ( as an example ), not all of this will be usable.  A small number
  1315.         of bytes will be used by the operating system to tag the board's
  1316.         memory region.
  1317.  
  1318. The System Information Display also includes a number of menu options which
  1319. are explained below:
  1320.  
  1321.     Select Other
  1322.         A submenu attached to this item allows you to switch to viewing
  1323.         another system's attributes from within this display.
  1324.  
  1325.     Load New
  1326.         This is the option to utilize if you wish to load a comparison
  1327.         module in place of the ones alread in use.  The loaded module
  1328.         will replace the currently displayed system's location in the
  1329.         comparison systems.  This option is not available when viewing
  1330.         the host system's data.  Subitems attached to this menu item
  1331.         allow you to select the type of module to load.  These are:
  1332.  
  1333.         From File
  1334.             This should be selected if you wish to load a previously saved
  1335.             module in file form.  A requester will be displayed asking
  1336.             for the file name to load.  AIBB will attempt to load the
  1337.             module, and if all data consistancy checks are valid, it will
  1338.             place this data in the location of the previously displayed
  1339.             system.
  1340.  
  1341.         Under this option is a list of the internal default modules AIBB
  1342.         contains.  This allows the rearranging of the order of the default
  1343.         systems as they appear on the graph in the Main Display, and also
  1344.         allows a default system's values to be re-loaded if one is
  1345.         superseded by a file-based module at an earlier time.  Note that
  1346.         the order of the system default modules is one of the items saved
  1347.         in the AIBB.prefs file, so you may choose any ordering of the
  1348.         internal startup default systems which suits you best.
  1349.  
  1350.     Return to Main
  1351.         Returns you to the Main Display portion of AIBB.
  1352.  
  1353.  
  1354.    AIBB's internal default comparison systems were selected to give a
  1355. broad overview of a number of system configurations and hardware types.
  1356. These systems are:
  1357.  
  1358.     A500-NFR
  1359.         An Amiga 500 system with no FAST RAM ( NFR ) complement.  This is
  1360.         an all CHIP RAM based machine, and is provided here to give a
  1361.         comparison towards systems utilizing only CHIP RAM.  This is a
  1362.         stock machine, with accelerator devices or other additional
  1363.         enhancements.
  1364.  
  1365.     A2000-FR
  1366.         This system is an Amiga 2000 equipped with FAST RAM ( FR ) as well
  1367.         as the normal CHIP RAM complement.  No acceleration of the system
  1368.         was performed, and other than the addition of FAST RAM this system
  1369.         is basically stock.
  1370.  
  1371.     A2500-20
  1372.         An Amiga 2500 of the earlier MC68020-based variety comprises this
  1373.         system.  It utilizes an MC68020 microprocessor running at 14.3 MHz,
  1374.         and includes an MC68881 floating point coprocessor unit ( FPU )
  1375.         running at that same clock frequency, as well as an MC68851 Memory
  1376.         Management Unit ( MMU ).  Four megabytes of 32-bit ported FAST RAM
  1377.         equipped the accelerator ( a CBM A2620 ).  All comparison data was
  1378.         obtained with the ROM image translated by way of the MMU into the
  1379.         32-bit ported accelerator RAM area.
  1380.  
  1381.     A3000-25
  1382.         This is currently CBM's top of the line Amiga model: The Amiga 3000.
  1383.         The comparison data here was obtained from a 25 MHz CPU rated
  1384.         system, which utilizes the MC68030 CPU and MC68882 FPU as it's
  1385.         processing engines.  Sixteen megabytes of FAST RAM were included
  1386.         on the motherboard, ( Static-Column type ) as well as a normal 2
  1387.         megabyte CHIP RAM complement.  The A3000 used for these comparisons
  1388.         was utilizing AmigaOS 2.04 as a RAM based image instead of a ROM.
  1389.         This is noted for reference against A3000 systems which may utilize
  1390.         a ROM based operating system image, as ROM access times are slower
  1391.         than for a RAM-based image.
  1392.  
  1393.     A2500-30
  1394.         This is CBM's later offering of the Amiga 2500 line, utilizing the
  1395.         A2630 MC68030-based accelerator.  The MC68030 and included MC68882
  1396.         FPU of this system are operated at a 25.0 MHz clock rate.  This
  1397.         comparison system was equipped with 4 megabytes of 32-bit ported
  1398.         FAST RAM located on the accelerator, as well as 2 megabytes of
  1399.         16-bit FAST RAM and 1 megabyte of CHIP RAM on the system motherboard.
  1400.         All tests were performed with the system OS image translated into
  1401.         the 32-bit accelerator RAM by way of MMU translation.
  1402.  
  1403.         It should be kept in mind that all parameters for each system should
  1404.     be noted when making comparisons by checking the statistics located
  1405.     on AIBB's System Information Display.  Small items such as the system
  1406.     stack location, cache settings, OS version and image location, etc...,
  1407.     could play a part in any apparent discrepency.  Making note of these is
  1408.     important to fully understand the figures being provided.
  1409.         In all the systems above, all tests performed were done with AIBB's
  1410.     test code and data located in the fastest memory medium located on each
  1411.     system.
  1412.         No third-party accelerated machines were included in the lineup as
  1413.     this would leave an unfair advantage/disadvantage to any particular
  1414.     manufacturer.  Comparisons of that sort can still be carried out
  1415.     utilizing AIBB's load-module capability to bring in data from such
  1416.     systems for direct comparisons.
  1417.  
  1418.                        OVERVIEW OF INCLUDED TESTS
  1419.  
  1420.    The tests AIBB incorporates are described below.  The type of test,
  1421. and it's basic operations are given in the descriptions, as well as the
  1422. amount of memory each test may need to allocate external to AIBB itself.
  1423. The "standard" tests are as follows:
  1424.  
  1425.      WritePixel
  1426.          The WritePixel benchmark will open a low-resolution screen
  1427.          and fill it completely with a given color.  The filling is done
  1428.          one pixel at a time, utilizing the operating system routines
  1429.          SetAPen() [set the current RastPort primary pen color] and
  1430.          WritePixel() [which sets a pixel to the given primary pen color].
  1431.          The test is basically a benchmark of the time needed to call these
  1432.          routines, and for them to execute. For the most part, this test
  1433.          will be primarily useful for evaluating the effective ROM image
  1434.          access time for systems which differ from the conventional ROM
  1435.          access method found on the Amiga 500 and 2000, namely accessing
  1436.          the ROM over those systems' normal 16 bit bus.  As these routines
  1437.          also result in many accesses to the CHIP RAM bus, it can also
  1438.          give a hint as to the efficiency of a system's CHIP RAM bus
  1439.          interface.
  1440.  
  1441.          Memory Usage: No memory resources external to AIBB are allocated.
  1442.  
  1443.      Dhrystone
  1444.          This test should be fairly familiar to most people, as it has
  1445.          been utilized on many different system for benchmarking purposes.
  1446.          It is a test which attempts to put conditions upon the system
  1447.          which more closely simulates a possible applications program
  1448.          section.  It returns, not run-time in seconds, but rather a rating
  1449.          of Dhrystones per second, where in this case, the larger number
  1450.          indicates better performance.
  1451.  
  1452.          Memory Usage: No memory resources external to AIBB are allocated.
  1453.  
  1454.      Matrix
  1455.          A matrix manipulation benchmark utilizing 3 50x50 integer matrices.
  1456.          The test simply performs a series of matrix operations
  1457.          (addition/subtraction, multiplication, transposition, etc) upon
  1458.          these matrices.  The test is set up in such a way that a great
  1459.          amount of time is spent moving data, as well as performing
  1460.          arithmetic operations upon it.  Therefore, this could be thought
  1461.          of as also testing memory manipulation efficiency.  The test
  1462.          is an indicator of how well a processor/memory combination handles
  1463.          memory accesses to data and operations on such, as the test does
  1464.          not allow the processor to simply perform the data operations
  1465.          solely within it's registers.
  1466.  
  1467.          Memory Usage: 30,000 ( 29.3K ) bytes external to AIBB are allocated.
  1468.  
  1469.      MemTest:
  1470.          This test is memory-bound, as the name implies.  In essence, it it
  1471.          a memory block movement test, timing the efficiency of memory
  1472.          accesses and transfers.  Memory from both CHIP and FAST RAM is
  1473.          utilized, with transfers occuring from FAST RAM to FAST RAM, FAST
  1474.          RAM to CHIP RAM, and CHIP RAM to CHIP RAM.  This gives an overall
  1475.          look at the memory efficiency of both the system's FAST RAM and
  1476.          CHIP RAM complements.  It should be noted that the Data Loc portion
  1477.          of the test result information will supply the node location of the
  1478.          FAST RAM portion, as the CHIP RAM portion is contiguous and known.
  1479.          The results given here will be a composite showing overall how the
  1480.          system is performing in terms of memory accesses.  Systems with FAST
  1481.          RAM will show higher results, as those portions of the test will
  1482.          execute quicker, and as can be expected, 32-bit ported FAST RAM will
  1483.          perform better than its 16-bit ported cousin, also resulting in
  1484.          better overall performance.  The test does report weighted results,
  1485.          with more emphasis being placed on FAST RAM-only operations, followed
  1486.          by CHIP to FAST RAM, then CHIP to CHIP RAM operations.  This is to
  1487.          take into account that most CPU operations do not operate entirely
  1488.          within CHIP RAM, or even at all utilize CHIP RAM.  Thus, FAST RAM
  1489.          performance will have a larger weight on the results than CHIP RAM
  1490.          performance.  However, a very slow CHIP RAM interface will
  1491.          necessarily affect the test greatly as well.
  1492.  
  1493.          Memory Usage: 32,768 ( 32K ) bytes of FAST RAM external to AIBB are
  1494.                        used.  The same amount of CHIP RAM is also allocated.
  1495.                        Note that you must have 32K of contiguous free space
  1496.                        in BOTH CHIP and FAST RAM for this test to execute.
  1497.  
  1498.      Sieve:
  1499.          Another test which should be familiar to most, the Sieve of
  1500.          Erathosthenes.  It uses a fairly simple algorithm to determine
  1501.          prime numbers within a range of numbers.  This test simply times
  1502.          your system when implementing this algorithm, which is decribed
  1503.          fully in many textbooks, or one can simply look at BYTE Magazine's
  1504.          benchmarks, which use a similar Sieve test.
  1505.  
  1506.          Memory Usage: No memory resources external to AIBB are allocated.
  1507.  
  1508.      Sort:
  1509.          A series of 30,000 16-bit integers is sorted from a pseudo-random
  1510.          setup, and the procedure is timed.  "Pseudo-random" meaning that
  1511.          the number arranement is not created in a random fashion, but
  1512.          rather in a mixed fashion so that on each invocation of the test
  1513.          the numbers will be created in the SAME mixed fashion.  This is
  1514.          because the sorting algorithm is sensitive to the mixing, and if
  1515.          each time the test was run a different group of values was used,
  1516.          no two tests results could be compared well.  The mixing method I
  1517.          used was to insure that the algorithm would be forced to do the
  1518.          most work for each test.
  1519.  
  1520.          Memory Usage: 60,000 ( 58.6K ) bytes external to AIBB are allocated.
  1521.  
  1522.      IMath:
  1523.          Integer Math.  This test performs a wide variety of integer math
  1524.          functions.  Included in these functions are the standard functions,
  1525.          such as addition, subtraction, multiplication, division, and a
  1526.          few additional bitwise functions, such as ANDing, ORing, and XORing.
  1527.  
  1528.          Memory Usage: No memory resources external to AIBB are allocated.
  1529.  
  1530.      TGTest:
  1531.          Text/Graphics test.  This test is another one which is dependent
  1532.          upon the efficiency of the system graphics routines' execution
  1533.          speed, as well as the efficiency of the CHIP RAM bus interface
  1534.          on the system.  Text is ouput to the screen in a repeated pattern,
  1535.          and scrolled in order to maintain it's visibility on the screen.
  1536.  
  1537.          Memory Usage: No memory resources external to AIBB are allocated.
  1538.  
  1539.      The floating-point specific tests implemented by AIBB are given below.
  1540.      Note that these tests are also dependent on any standard code type
  1541.      selections which may be made, as well as the type of floating-point
  1542.      code utilized.  Tests are marked as to their usage of transcendental
  1543.      functions ( sin(), cos(), log(), etc... ) for record keeping and
  1544.      comparsions by 68040 users, who should see the appropriate notes in
  1545.      this documentation concerning the built-in 68040 FPU and
  1546.      transcendental functions.  The rating scale used below for such usage
  1547.      coresponds to this table:
  1548.  
  1549.           Level                             Meaning
  1550.      ------------------------------------------------------------------------
  1551.           NONE     |          No transcendental functions are used
  1552.           LIGHT    |  5-20% of calculations are transcendental in nature.
  1553.          MODERATE  |  21-50% of calculations are transendental in nature.
  1554.           HEAVY    |  Greater than 50% of calculations are transcendental.
  1555.      ------------------------------------------------------------------------
  1556.  
  1557.      FMath:
  1558.          Floating Point Math.  Similar to the IMath test, with the exeception
  1559.          that Floating Point values and operations are utilized.  With this
  1560.          test, no bitwise operations are performed.  Single precision
  1561.          floating point operations/values are used here.
  1562.  
  1563.          Transcendental Usage: NONE.
  1564.          Memory Usage: No memory resources external to AIBB are allocated.
  1565.  
  1566.      Savage:
  1567.          This is another of the "probably familiar" tests.  It is a standard
  1568.          implementation of the Savage test, which makes nested calls to
  1569.          transcendental functions to create a single value.  Double
  1570.          precision floating point operations/values are used.
  1571.  
  1572.          Transcendental Usage: HEAVY; this test is almost exclusively
  1573.                                transcendental in nature.
  1574.          Memory Usage: No memory resources external to AIBB are allocated.
  1575.  
  1576.      FMatrix:
  1577.          The FMatrix test is similar in concept to the Integer Matrix test
  1578.          outlined above.  Again, a great deal of data movement is performed,
  1579.          in addition to the operations involved, which are floating point
  1580.          operations in this case.  With the matrix operations, the results
  1581.          under Floating Point coprocessor equipped systems can be interesting
  1582.          to note, as the system is not able to keep the data within
  1583.          fast-access FPU registers, and thus must make many bus accesses for
  1584.          the data it needs.  Double-precision floating point math is used
  1585.          for this test.
  1586.  
  1587.          Transcendental Usage: NONE.
  1588.          Memory Usage: 38,400 ( 37.5K ) bytes external to AIBB are allocated.
  1589.  
  1590.      SWhetstone and DWhetstone:
  1591.          These tests are identical, save that the SWhetstone utilizes
  1592.          single-precision floating point operations and data, while the
  1593.          DWhetstone is double precision in nature.  The Whetstone test
  1594.          is yet another of the many "standard" types of benchmarks which
  1595.          have been used to test system performance.  It tests various
  1596.          circumstances, including floating point math, function calls,
  1597.          etc.  Integer math is also tested to an extent, but since this
  1598.          test does rely on floating point math as well it is kept in this
  1599.          section.  The test returns values in Whetstones per second, where
  1600.          like the Dhrystone, higher values indicate better performance.
  1601.  
  1602.          Transcendental Usage: MODERATE.
  1603.          Memory Usage: No memory resources external to AIBB are allocated.
  1604.  
  1605.      BeachBall:
  1606.          The BeachBall test was originally written by Bruce Holloway of
  1607.          Weitek, and published in the March 1988 issue of Byte Magazine.
  1608.          It is essentially a very math-intensive operation which draws a
  1609.          beachball on the screen, complete with shading.  The test opens a
  1610.          640x400 interlaced 16-color screen, and proceeds to render the
  1611.          picture.  This test is closer to a true "application" test, in that
  1612.          it actually does something visible, and produces an output.  The
  1613.          system will end up being tested in both the floating point arena,
  1614.          and in CHIP RAM access performance, which is done through standard
  1615.          operating system graphics handling calls ( thus will be affected by
  1616.          the speed of such, which in turn can be affected by ROM image
  1617.          re-mapping, etc ).
  1618.  
  1619.          Transcendental Usage: LIGHT.
  1620.          Memory Usage: No memory resources external to AIBB are allocated.
  1621.  
  1622.      FTrace:
  1623.          Another applications-type test.  FTrace implements a subset of the
  1624.          calculating functions which are used to perform ray-tracing
  1625.          operations.  Ray-tracing is a particularly floating-point intensive
  1626.          art, and this test gives some indication of a system's performance
  1627.          in this type of operation.  No visible result is produced, so in
  1628.          that matter it is not an 'ideal' test, but it can be used to give
  1629.          some indications in this arena.
  1630.  
  1631.          Transcendental Usage: LIGHT; Calculations are performed in such
  1632.                                a way that transcendental usage is minimized.
  1633.          Memory Usage: No memory resources external to AIBB are allocated.
  1634.  
  1635.      CplxTest:
  1636.          This test implements a series of complex-number operations and
  1637.          times their execution.  Complex number applications are important
  1638.          in many of the sciences, and are particularly prevalent in such
  1639.          areas as electrical engineering ( circuit analysis ) and vector
  1640.          analysis to some degree ( not specifically "complex numbers" in
  1641.          that case, but the operations are similar ).  This test utilizes
  1642.          a lot of quick, small memory moves, as well as performing a
  1643.          variety of floating-point operations.
  1644.  
  1645.          Transcendental Usage: LIGHT TO MODERATE.
  1646.          Memory Usage: No memory resources external to AIBB are allocated.
  1647.  
  1648.  
  1649.                               NOTES AND SUMMARY
  1650.  
  1651.     It has been indicated before, but it should again be emphasized that
  1652. no benchmark or even suite of benchmarks can hope to give a complete picture
  1653. of system performance alone.  A full picture of the system resources, as
  1654. well as an understanding of just what the system in question is being used
  1655. for is necessary to make any type of evalution.  AIBB is merely one small
  1656. tool which may be used to try to gather a sampling of data when making
  1657. a performance determination.
  1658.     When performing tests, it is very important to keep track of just
  1659. where test code and data is being placed in the system by using the
  1660. information provided by AIBB, and by using other methods if need be.  For
  1661. example, if you have a 512K CHIP RAM machine, and some SLOW-FAST RAM
  1662. ( sometimes mistakenly thought of as true FAST RAM ), this could affect
  1663. test results in ways not expected.  Keeping careful track of these
  1664. variables can help in determining just what is occuring in the system
  1665. during performance analysis.
  1666.     Of some interest in terms of FPU performance is the MC68040's
  1667. built-in FPU unit.  This FPU is a subset of Motorola's previous MC68881
  1668. and MC68882 coprocessors, and does not include all functions on-chip
  1669. which were supported by the previous FPUs.  Most notably, the transcendental
  1670. function such as sine and cosine, etc... are not hardware supported.
  1671. Rather, the simpler functions such as floating-point multiplication,
  1672. addition, division, etc.. have been greatly optimized and enhanced.  The
  1673. MC68040 FPU relies on software emulation of the complex functions, and
  1674. most accelerator vendors, as well as CBM itself, supply a function library
  1675. to emulate these routines in the form of software 'traps'.  Since the
  1676. complex functions utilize the simpler functions to derive their actions,
  1677. in theory all functions should still execute faster than on previous
  1678. coprocessors.  However, this may not be the case.
  1679.     Trap functions such as those supplied in the aforementioned libraries
  1680. are routines executed when the coprocessor indicates an unsupported
  1681. function routine is being called.  This is a form of 'exception' routine,
  1682. requireing CPU/FPU internal context saving, and other related actions.
  1683. This is because the CPU/FPU treats the function call as an error, and
  1684. calls the error routine appropriate to it.  In this case, it will be
  1685. the math support library, which will execute the proper function and return
  1686. the value needed.  Unfortunately, all this activity results in a
  1687. performance hit, resulting in timings which are longer than that of the
  1688. previous coprocessors which emulated these functions in their hardware.
  1689.     All this might imply that the 68040 is crippled in this respect. However,
  1690. this is not the case.  Applications written to take advantage of of
  1691. 68040's FPU will function much faster, as they will emulate the required
  1692. complex functions in forms not requiring the trap functions.  The trap
  1693. functions are there for programs which are using FPU code set up for the
  1694. MC68881 or MC68882, which are at this time the more common FPU units.
  1695.     AIBB's FPU code is indeed MC68881 or MC68882 style, and the results
  1696. of some of the FPU tests using many complex type functions will show this.
  1697. At some future time, AIBB will offer an option to allow for the use of
  1698. in-line FPU code which will take advantage of the 68040 FPU specifically.
  1699.  
  1700.  
  1701.                        CREDITS AND ACKNOWLEDGEMENTS
  1702.  
  1703.     As with all large projects, nothing is accomplished entirely by one
  1704. person.  I have many people to thank for their assistance in the
  1705. development of AIBB.  A few of the more influential people who have
  1706. contributed greatly to this effort are:
  1707.  
  1708. Dr. J. Scott Thayer - Sysop of AmigaFriends BBS, and a dedicated beta
  1709.                       tester extraordinaire.  His comments and testing
  1710.                       data were key to much of what was done with this
  1711.                       program over the course of it's development.
  1712.  
  1713. Redmond Simonsen - One heck of a nice guy and thought provoking fellow.
  1714.                    His help with interface ideas were very much appreciated,
  1715.                    and are still instrumental in any upcoming future
  1716.                    versions of AIBB.  By providing me with processor data
  1717.                    books I had not been able to get a hold of, Redmond was
  1718.                    also instrumental in the addition of many functions
  1719.                    within AIBB which would have gone unimplemented.
  1720.  
  1721. Mathew Rouch - A good friend of mine, and a computer science student at
  1722.                present.  His help in several algorithmic coding problems
  1723.                helped me solve some bottlenecks which would have taken a
  1724.                great deal longer to overcome than they did.
  1725.  
  1726. Greg Tibbs - For finding one SERIOUSLY obscure bug, and helping me to
  1727.              track it down, despite the difficulty.  Also thanks to
  1728.              him for his help with specific aspects of the Motorola
  1729.              MC68040 microprocessor.
  1730.  
  1731.    Unfortunately, I cannot list everyone who has been of assistance with
  1732. this project, but to all of them, listed and unlisted, I wish to express
  1733. my deepest thanks and appreciation.
  1734.  
  1735.    Comments and suggestions about this program are always welcomed, as I
  1736. hope to be able to continue its development.  Please feel free to make
  1737. any suggestion you see fit, but do try to be constructive in any
  1738. criticism so that I may improve AIBB.  Bug reports are certainly wanted,
  1739. and I will do my best to locate and correct such problems.
  1740.    I can be reached electronically many ways, but the following are probably
  1741. the easiest methods:
  1742.  
  1743.    Safe Harbor BBS: (414) 548-8140 ( 16 lines rollover ).  I can be
  1744.                     reached here almost always by name, or by addressing
  1745.                     mail to the HARDWARE SIGOP in the hardware special
  1746.                     interest group.
  1747.  
  1748.    Amiga Friends BBS: (714) 870-4754 or (714) 870-6594 ( 2 lines ).  I
  1749.                       also frequent this BBS, and mail may be addressed
  1750.                       to me here by name.
  1751.  
  1752. If you have internet access, there are two methods to reach me.  The
  1753. Internet addresses I can be found at are:
  1754.  
  1755.               lkoop@tigger.stcloud.msus.edu     ( GP Acct )
  1756.               f00012@kanga.stcloud.msus.edu ( Engineering Acct )
  1757.  
  1758.                           ( Pick your paths :) )
  1759.  
  1760. I can also be found on BIX as lkoop, and can be reached there easily
  1761. as well.  For those wishing to correspond by mail, comments may be sent to:
  1762.  
  1763.                              LaMonte Koop
  1764.                        565 Park Meadows Dr. #302
  1765.                          Waite Park, MN  56387
  1766.  
  1767.    As for me, well, I'm an Electrical/Computer Engineering student
  1768. ( currently 4th year in school ), with an added minor in Computer Science,
  1769. and an emphasis in systems architecture design.  AIBB was originally
  1770. started as a bit of a hobby, and as time went on became a long-standing
  1771. project.  This particular version is almost a year in the making, and I
  1772. do intend to continue enhancing the package as long as interest remains in
  1773. it.  Enjoy the program; I hope you find it useful, and that it serves
  1774. whatever purpose you may need of it.
  1775.  
  1776.