Release History

From Msim

Jump to: navigation, search

This page indicates the major fixes/changes since the previous release.


  • lsq_refresh no longer bound by 256 entries (or by MAX_STD_UNKNOWNS). Uses dynamic memory now.
  • L3 Cache support added
  • DCRA added
  • Fetch now limits fetching to two different contexts
    • Excessive blocking (if we block due to X and next context is blocked due to X abort) is fixed
  • inorder issue only worked with 1 context, last_op now maintained for each core.
  • Core migration enabled in a basic manner (see To do)
  • speculative registers are no longer needed, register rollback is implemented within the ROB
  • speculative memory is no longer needed
    • Memory rollback is implemented within the LSQ. Since stores actually write data at dispatch time, we retain the data at that point.
    • We do not implement a "write at execute" technique. See cmp.c (core_t::rollbackTo) for the rollback procedure
  • a physical register was not assigned to instructions using $f0.
    • This didn't cause errors but was incorrect behavior
  • Dispatch cleaned up (num_searched was broken, while changed to dowhile)
  • ICOUNT uses < as a comparator instead of diff
  • commit_width was per thread instead of per core
  • old fetch logic used context 0 to skip first two contexts incorrectly
  • Removed num_dispatched[] - only logged local data
  • Rename no longer uses !spec_mode as a terminator, this was likely a throwback to simplescalar
  • Dispatch/Rename uses a list like structure to determine remaining contexts instead of multiple repetitive checks
  • Fetch now uses a function pointer to change fetch types
  • inorder execution caused a complete stall once any thread was found to be unable to execute inorder
  • OSF_SYS_ioctl and OSF_SYS_lseek were not ported to SMT. This is now fixed - this affected all prior versions of M-sim
  • EIO file handles are generated correctly per context, however, EIO itself is not functioning as expected
  • The syscalls mmap and munmap are now partially supported. This needs to be more extensively tested though.
  • The syscall rename is now supported (used by twolf). umask as well (perlbmk).
  • The fast forward parameter (fastfwd) is now a long long. Fast-forwarding no longer limited to (2^31)-1.
  • A large number of text -> char * have been changed to const char *. Not all, but enough to pass the requirements of g++-
  • stderr redirection is now a valid .arg file argument, stderr redirection is now allowed by -redir:err
Personal tools