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