A.I.B.B. Amiga Intuition Based Benchmarks Program Release Version 4.65 Copyright 1991,1992 LaMonte Koop Version Change Information Version series 4.x of AIBB is a complete re-write from the original code used for the previous versions 1-3. Being that this is the case, it is quite important that the documentation be read thoroughly in order to completely understand all aspects of the program performance. The changes to this version series are detailed below. Changes to version 4.65 -- AIBB will now request the user to identify whether a 68EC030 or standard 68030 exists on such systems, or between a 68LC040 and 68EC040 if conditions warrant. Previous releases simply made a processor assumption if situations did not allow for a full internal test for the processor type. As of this version, the user will be prompted for the correct processor type if this situation arises. This was added for accuracy, and some safety considerations. -- The memory port width testing code AIBB uses has been changed. The new code used is more accurate, and better able to handle a wide variety of memory response configurations. -- Proper identification of the new custom chips is not done within AIBB. Both the new Alice and Lisa devices will be detected and shown on the System Information Display portion of AIBB. -- Under V39 (3.0) of AmigaOS and above, certain CHIP RAM characteristics will be recorded and displayed in the System Information Display in the memory node information area. These include CAS characteristics of CHIP memory, and other related bandwidth information. -- Several "safety measure" improvements have been made internally to AIBB to close several holes which could cause user problems. -- AIBB will now copy the paths of load file modules to the load file preferences when they are first called up. This allows user selection of available modules from the standard requester used when gathering such modules. Changes to version 4.58-4.61 -- Some display bugs were discovered and corrected in these interim releases. Also, some additional work was done on AIBB's 68030/68EC030 detection. Version 4.61 corrected a problem with 4.60's erroneous display of the system's graphics and display chips. Changes to version 4.57 -- A rather nasty bug cropped up in version 4.56 pertaining to the way AIBB tested for an MMU on the system. This led to AIBB hanging on startup with certain system configurations. The bug is now corrected in this version. Changes to version 4.56 -- Minor changes made to AIBB's 68EC030 testing to improve memory usage. A number of small changes were also made elsewhere to this effect as well. -- Specific time-dependent routines within the interface have been downcoded to assembly for speed purposes. Changes to version 4.55 -- AIBB's system information display has been changed. No longer is a simple area used to display memory nodes existing on the system. In its place, a similar area exists, which can be used to show either memory nodes, or expansion boards contained in the system AutoConfig board lists. Selection of one of these displays is done dynamically by means of gadgets. Please see the main documentation for full information. -- A new menu item on the main screen, "Show Aggregate Results" exists under the "Special" group. This item will allow the viewing of aggregate system results after an initial system load module is performed on the host. The main documentation includes full details on this item's use. -- AIBB now uses the graphics.library DisplayInfo database under V36 and above of the OS (2.0 or higher) rather than other means to determine the system display characteristics. This avoids unecessary hardware peeking and enhances future compatibility. -- An annoyance bug with AIBB's startup has been corrected. In certain circumstances (especially on single-floppy systems) when AIBB is in its initial startup phases, the program may seem to suddenly stop on a blank screen. This is because the system was requesting a different volume (usually the main system disk) to be inserted. However, AIBB's screen was made home to such requesters, but too soon - The screen colors were all still black, thus rendering the system requester invisible. Now, AIBB waits until it is up and running before transfering the system requester location to its own screen so that these requesters will be visible should the appear (note that in terms of "system requesters", this referrs to requesters related to AIBB's process only). -- A bug with the detection of the 68EC030 CPU has been corrected. The method used to detect the EC030 is a fairly straightforward one. If the MMU ENABLED bit is set in the translation control register ( TC ), AIBB assumes that a working MMU exists, and that the CPU is a standard 68030. If this bit is not set, a more thorough test is performed. This test involves setting up a simple translation table, marking a page as 'write protected', and attempting a write to that page. If a bus error occurs, this will have been caused by the MMU, and thus it must be functional - implying a standard 68030. If no bus error is forthcoming, the CPU is thus marked as a 68EC030. The bug was detected only as a fluke, but could show up in other systems in an odd circumstance. Earlier versions of AIBB write protected the page in question, turned the MMU on, then installed a bus error handler. This order was incorrect...the circumstance in question came up when the system exception vector table was moved by use of the Vector Base Register ( VBR ). If that table happened to reside in the page AIBB write protected, the installation of the bus error handler pointer in that table would cause a bus error itself -- this would hang the system as the proper error handler would not be installed (the write to do so would be suspended). This has been corrected. Thus far, it has not shown up on other systems, but this will make it more bullet-proof in that respect. -- A rather obscurely discovered Enforcer hit with AIBB has been corrected. Under strange circumstances, AIBB could cause a READ Enforcer hit during its file-requester procedures. This was benign, but nevertheless has been corrected. Changes to version 4.5 -- PLEASE NOTE THAT AIBB'S LOAD FILE FORMAT HAS CHANGED AS OF THIS VERSION! Previous load file formats will no longer be loaded. I have frozen the load file format as of this version, so no future changes will cause this incompatibility, or some form of conversion ability will be given. -- New routines have been added for 68040 floating point math support. The 68040 does not have transcendental function support within its built-in FPU, and thus must rely on software emulation for such routines. Unfortunately, the method of such emulation requires that the FPU jump to a trap routine after encountering such a transcendenal function instruction, such as FSIN.. The 68040 FPU reacts to such instructions by causing an unimplemented instruction exception, and fetching the appropriate exception routine vector from the system exception vector table. Once jumping to the appropriate routine, it is said routine's responsibility to determine the instruction which caused the exception, and react accordingly. In the case of the FPU instructions not implemented, the routine must emulate these instructions and set up the return result before returning the CPU/FPU to normal processing. The unfortunate part to all this is that although the supported instructions in the 68040 FPU are highly optmized, and much faster than earlier coprocessor equivalents, the overhead involved with the trap routine method of emulation is so much so that it negates the gain made by the optimizations. This is where in-line code support comes to an advantage with the 68040 FPU, and AIBB attempts to do this by making function calls to optimized equivalent math routines, rather than allow the trap handling technique to handle unimplemented FPU instructions. Hopefully this will show somewhat of a performance improvement on transcendenal-intensive routines such as the Savage benchmark. -- AIBB now accepts certain command-line/icon tooltype options. Please refer to the documentation for a description of these options. -- A new comparison is now made upon completion of a load module or all-tests run. AIBB will open a small requester-like window after all tests are completed giving a rundown average comparison in both integer/graphic and floating-point categories. The index values given represent overall average figures taking into account all tests in a given category. -- The WritePixel test has been updated. It is now longer and performs more graphics operations. -- A new test has been incorporated - InstTest. This test is an instruction execution timing setup, and will give results in Instructions/Second. It is a special test, and is not affected by the individual system code type settings. Please read the appropriate section in the documentation for more information. -- AIBB's primary screen has been reduced from a 4-bitplane ( 16 color ) setup to a 3-bitplane ( 8 color ) one. This should speed up refresh time and responsiveness of the program to some extent. -- A number of internal routine optimizations have been made to increase overall program efficiency. Changes to version 4.3 -- AIBB can now be made to incorporate load files upon startup as the default comparison systems. A new entry under the General menu, "Load Module Prefs" allows load modules to be selected by path/filename for loading into AIBB upon startup. This allows alternate comparison systems to be more easily used as manual loading of them is no longer necessary if they are frequently used instead of the defaults. -- Corrected a minor problem with AIBB's data display. Under Review Mode, AIBB would not change the system base immediately when a new base was selected and there was no test data for the host system in reference to any particular test. This has been changed so that AIBB handles this condition correctly. -- Improvement of AIBB's memory bus port width determining code has been added. Some 68040 boards with 32-bit memory were being incorrectly noted as having 16-bit ports. In addition, a few 68030 accelerators without memory were having 16-bit resources on the system erroneously reported as 32-bit ported devices. This has hopefully been corrected in this release. Changes to version 4.2 -- The ability to display data in Review Mode, without having to perform a given test on the host system itself has been added. This allows the viewing of comparison system data without having to perform a given test on the host itself. The host system will display "N/A" in appropriate locations if no data is available for a given test. -- 68040 systems would display Write Allocation and BURST mode operations for cache status incorrectly. Write Allocation is not a seperate entity as with the 68030 for the data cache, and thus this mode is not displayed for the 68040 now. BURST mode operations for both instruction and data caches are hardware controlled on the 68040, and always implied. The caches do not have a software-controllable setting for this mode as with the 68030, therefore this mode is always indicated as ON with a 68040 system now. -- Corrected a bug with AIBB's MMU table parsing code. AIBB would not have correctly handled 8-byte descriptor entries in 68851 or 68030 MMU tables as it was. This has been fixed so that AIBB will properly parse these entries as well. -- Bug pertaining to error output strings for the initialization abort routine was fixed. A string was improperly terminated resulting in an output error and possible crash for certain startup abort conditions. -- Utility ModInfo was not displaying proper MMU status information for 68040 system modules. This has been corrected. ModInfo now stands at version 1.2. -- Documentation improvements and update information added. -- General code clean up performed and further optimization of various routines. Changes to version 4.1 -- Fixed a bug with certain 68040 system configurations which caused AIBB to hang on startup. Changes to version 4.01: -- Fixed a bug pertaining to early versions of the kd_freq.library. Apparently early versions of this library would crash AIBB during startup due to a problem with the library itself. Later library versions work fine. AIBB will therefore not open kd_freq.library unless the version number is 3 or greater. -- A bug with the the included AIBB utility ModInfo was discovered. Incorrect information was given pertaining to load modules under certain circumstances. This has been corrected. Primary new features to version 4.0 include: -- Improved CPU/FPU clock speed evaluation code. Earlier versions had a great many problems in this area, primarily due to a misplaced NOP instruction wreaking havoc with the timings. -- Enhanced/additional tests. Some tests in earlier versions were proven to be non-useful in any real form and were removed. The remaining tests were enhanced and refined, and new tests were added to further complete the package. -- Improved system information. More pertinent information is given towards evaluation of AIBB's benchmark performance. -- Module save/load capability. AIBB now incorporates the ability to create "load modules" consisting of saved test/machine evaluations. These modules may be loaded into AIBB at convienience and used within comparisons. This is an effort to allow comparisons across many machine types, rather than restricting them to in-built figures. A set of internal defaults is included. -- AIBB has been made more "aware" of the system it is operating on and will attempt to keep users informed of situations which may prove detrimental to performance analysis. Further description of these and other features is found in the main documentation.