Thu, 5 Mar 2015, 15:38

A student writes:

> Hello,
> I was starting to review some material for the exam and I was reviewing the
> hardware support for unaligned access (page 3 of the physical memory
> handout) and I was wondering what sequence would happen if you wanted to
> load a word from the last byte on a chip.
> So for example, LoadWord from location 31. This operation should grab the
> byte data from location 31, rotate the value, and since the LD.LO bit is
> enable, it should store it in the low byte of the MDR, but then the rank
> should change right? I walked through the logic table but it seems like
> there wasn't any logic to change the rank of the chip you are accessing
> which in this case would mean that you would not be grabbing the correct
> next piece of data.
> Maybe I am looking at this the wrong way but I would love any insight you
> can give.
> Thanks,
> <>

You are only missing one piece: After you do the first memory access, you 
increment the MAR.  So, 31 is 011111.  On the first access, memory provides
the contents of 30 and 31.  You correctly note that you load 31 into the 
low byte and forget about 30.  Then you increment the MAR, giving you 100000,
so on the next access you will get 32 and 33.  Note that this increment to
the MAR has changed the rank from 01 to 10.

Good luck on the exam.

Yale Patt