MMIX LOGO

MMIX Bug Report ring_size

Table of Content

Content

MMIXware Version

mmix-20131017

Bug Reported

Initial: 17/11/2014

Author

Laurent Desnogues

Description

In mmix-config, section 36, ring_size is computed to be greater than the maximum waiting time. The time to read a cache line from memory is mem_addr_time+n*j where j is the maximum of mem_read_time and mem_write_time; and n is the number of bus_words per cache line. The number of bytes of a cache line is in the bb field of the cache; and this number is used to initialize n before dividing by bus_words. This can result in a ring_size that is too large by a factor of 8. It will not result in an incorrect execution of the simulator, but allocates more memory than necessary.

Proposed Patch

Scale bus_words by 8 in the line that rounds n up and determines the maximum number of bus_words per cache line.
@x
n=mem_addr_time+((int)(n+bus_words-1)/bus_words)*j;
@y
n=mem_addr_time+((int)(n+bus_words*8-1)/(bus_words*8))*j;
@z

Discussion

Laurent Desnogues: That looks OK, though you could have used mem_bus_bytes. Martin Ruckert: That's right, I will use mem_bus_bytes instead. instead of bus_words*8.

Status

Fixed in the repository, Rev. 84, on 2014-11-18.

Please help to keep this site up to date! If you want to point out important material or projects that are not listed here, if you find errors or want to suggest improvements, please send email to email