The downloadable version of HASE III is now Version 3.8. Version 3.8:
A revised version of HASE Version 7 is now available. There was an unfortunate error in the previous version that caused it not to write out the trace file on some systems. This should now be fixed.
New versions of the MU5 models correct an omission in the coding of the D_SLD instruction (it didn't update SF) and change the B DIV and RDIV instructions to dummies because there was no divide operation in the B-Arith Unit of the real MU5. The text about the models has been updated accordingly.
HASE Version 3.7
The promised new version of HASE, with updated help files is now available for downloading. The HASE User Guide on the website has also been updated.
A new model, of the CDC 6600, has been added. The Tomasulo's Algorithm webpages have been updated to the new preferred 2-frame format for HASE models.
A new version of HASE III is now available for downloading. It includes a number of new features as well as fixing a number of lacunae in previous versions. The EDL and ELF parsers have been redesigned and are better able to identify errors in the .edl and .elf files that define a model. Several models have been updated as a result.The built-in help files in HASE and the HASE User guide on the website are currently being updated, so another updated version of the HASE jar file will appear soon.
In previous versions of HASE, global variables were updated correctly but this was not apparent in the GUI as the values displayed in the Parameters pane were not updated, i.e. the global variables are not included among the state values written into the trace file by the dump_state() command. Fixing this problem has involved introducing a new command into Hase++, dump_globals(), similar to dump_state() but just writing the current values of global variables into the trace file.Parameter updating
There are now two parameter update buttons in the tool bar, one that updates the values of parameters held in the .params file according to values that have been edited in the Parameters pane, and another that deletes the .params file and offers the option to reset all parameters to the initial values defined in the .edl file.
Taken together, these two changes have allowed a better time-out mechanism to be implemented in a number of the existing models. Time-outs are included to prevent simulations running indefinitely as a result of an error in a model or its parameter values, particularly during development. The new mechanism uses a global parameter, Max_Time_Left, which is decremented by an appropriate entity within the model; the simulation is ended if its value reaches zero. Previously, altering a time-out value when a longer simulation time was needed had to be done by editing the .edl file. Now it can be done by editing the value of Max_Time_Left when the model is loaded.Entities without parameters or ports
Particularly during the development of some asynchronous models, a time-out that requires one of the entities of the model to decrement the time-out parameter can be ineffective because the entity itself becomes held up indefinitely. In these models, a separate timer is required, not connected to any other entities (so it has no ports) and not having any parameters of its own (because the time-out variable is a global parameter). In previous versions of HASE, an entity with no parameters or ports caused compilation errors, but this is no longer the case. The MU5 models have been updated to take advantage of this change.Mutual Exclusion
In the snoopy and directory-based cache models, a global parameter nodes_done is used to determine when to end the simulation, i.e. when all the processors and caches have completed their operations. nodes_done is incremented by each processor when it decodes the final (z) request in its input file. To ensure that each cache has also completed its operations, each cache decrements nodes_done when it receives a request and increments it when the actions that that request initiates have completed. Proper operation of this system requires that only one entity can access nodes_done at a time, something that could not be guaranteed in previous versions of HASE. HASE 3.7 adds the automatic creation of mutex objects for global parameters, appending the orginal parameter name with _mutex. The following is an example of the use of the mutual exclusion mechanism included in the new version of HASE:
nodes_done_mutex.Lock(); nodes_done++; dump_globals(); nodes_done_mutex.Unlock();RSTRUCTs in ARRAYs
During the development of the Instruction Buffer Unit in the MU5 models, it was discovered that it was not possible to include an RSTRUCT within a STRUCT within an ARRAY. A workaround for this was used i.e. the inner RSTRUCT was re-declared in terms of its components, but version 3.7 of HASE has fixed this problem and new versions of MU5 (v1.9, v2.9 and v3.9) have simplfied declarations of the instruction buffers. Similarly, it was discovered during the development of a soon to be released model of the CDC 6600 that it was not possible to have two RSTRUCTs within a STRUCT within an array; this problem has also been fixed.ELF depth position parameter
A .elf file can include icons that are separate from any of the entities, e.g. the title icons in many of the models. As noted in the April 2016 update (below), in the MU5 models, four icons are used to identify sections of the architecture that are actually collections of smaller entities: the IBU, the Name Store, the Secondary Operand Unit and the Operand Buffer System. The Operand Buffer System icon needs to appear on top of the Secondary Operand Unit icon, and the icons of the entities that make up the Operand Buffer System need to appear on top of that. To ensure that this happens, a third, optional depth position parameter (which must be a positive integer) can now be used in the .elf file. This mechanism is also used in the case of the Primary Operand Unit, although in this case the Primary Operand Unit icon correponds to an actual entity.Theme Menu
A menu option has been added, View->Theme, allowing the user to change the visual appearance of HASE. The available themes are Java Swing's standard 'Look and Feel' options. Available themes will vary with the operating system on which HASE is installed.
The time-out mechanism in the Atlas models has been modified again so that the control entity counts the number of sim_hold() delays as they occur in each pass through its code. It then decrements Max_Time_Left by this amount. One result of changes made to the model is that version 3 now works much more satisfactorily and the default value of k in the program has been increased to 15, allowing the program to find four sets of values before the simulation ends.
The layout of the screen images of several models have been compressed to improve visibility (DLX, MIPS v1, Tomasulo)
Errors in the DASH node model have been corrected, The DASH cluster model as been simplified, with the delay values now being fixed rather than variable.
A new version of HASE currently under development has a more thorough EDL and ELF parser that has found several errors in the existing MU5 models. These have been corrected in the .8 versions of the model. Also, entities that were only introduced to allow their images to be included as backgound images to other entities (ibu, name-store, seop, obs) have been removed so they only appear in the .elf files. The correct overlaying of the images of e.g. the components of OBS on top of OBS itself and of OBS on top of the SEOP, is effected by using the third, depth co-ordinate in the ELF position parameter for each of the entities. A minor change has also been made to the way the Time Limiter entity (included so as to stop runaway simulations) works, i.e. its parameter is now called Max_Time_Left and this is decremented by 10 every 10 simulation time steps. A simulation run is stopped if Max_time_Left reaches zero. If more time is needed, the EDL file can be edited to increase the initial value of Max_Time_Left.
Similarly, some errors were found in the Atlas models and the .4 versions of the model have been corrected. The time-out mechanism in the Atlas models has also been revised. The Counter entity has been removed and instead the Control entity checks the current simulation time against a global parameter, Max_Time_Steps, stopping the simulation if Max_Time_Steps is exceeded. As in the case of MU5, if more time is needed, the EDL file can be edited to increase the initial value of Max_Time_Steps. (The Atlas and MU5 mechanisms work sightly differently because of the different ways in which the models are designed.)
In versions V1.6, V2.6 and V3.6 of the MU5 model, the IBU_DF.IB_Registers.mem and OBS_IP.Address.mem files both contained extra parameter values, left over from an early stage of development of the models. These values did not affect the way the models work but they have been removed in new versions of the models (V1.7, V2.7 and V3.7).
An error in the code for the Float Unit has been corrected and dlx-scp_v2.7.zip has been updated.
A new version of MU5 has been added, Version 3, which demonstrates the use of the MU5 string processing instructions. These string processing instructions were not implemented in versions 1 and 2. During the implementation of these instructions, numerous faults were discovered in the code for the existing versions of the model, so they have been updated to V1.6 and V2.6.
A new version of the DLX/Scoreboard model corrects an error found by the latest g++ compiler and has a new, more compact screen layout.
The downloadable version of HASE has been replaced by version 3.5 which has:
A new version of the dashnode.zip file fixes errors in the dashnode.elf file shown up by the most recent version of HASE.
The simulation code of the MU5 model has been updated to include MU5 instructions that load, store and manipulate the descriptor registers and to correct numerous errors found in the simulation code whilst these instructions were being implemented. The program in Version 1 of the model has been extended to include examples of these instructions.
A model of the MU5 computer is now available, in two versions; one demonstrates how the Name Store operated while the other executes a scalar product loop. The model is not yet complete, so the existing versions will be updated and new versions will appear over time.
The ACU and PE entities in the SIMD models have been re-coded to comply with the C++ compiler included in the latest version of MAC OSX (Mavericks). This compiler prints warnings if the code for a switch statement based on an enum variable does not include a label for every value in the enum declaration. There are several such switch statements in this model, so although the warnings are just that, i.e. the code compiles OK, it seemed like a good idea to avoid them by re-coding the switch statements as sequences of if statements.Return to HASE home page HASE Project