MMIX Bug Report ring_size
Bug ReportedInitial: 17/11/2014
DescriptionIn 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 PatchScale 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
DiscussionLaurent 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.
StatusFixed 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