I am studying ARM Architecture and there is a slide which I didn't understand and can't find anywhere on the internet (Google, YouTube) - I've also looked for ARM homepage but they don't display any diagram. The slide is about the memory system for ARM. I would appreciate if someone could help me understand how it works or at least where I should check online to find this information. Specially I ask what are m and n Thank you.enter image description here

  • \$\begingroup\$ That's a very generic external memory block diagram. Nothing ARM specific about it. \$\endgroup\$
    – brhans
    Apr 30, 2017 at 17:32

1 Answer 1


m is 1 less than the number of bits in the ROM address bus.

n is 1 less than the number of bits in the RAM address bus.

For example, a 32 KB RAM chip has a 15-bit address bus so m or n would be 14.

The diagram is trying to show which bits of the CPU address bus need to be connected to the address buses of the particular chips being used. This is derived from the size of the address and data bus on those memory chips.

So here, four 8-bit ROMs are being used to provide the CPU with what appears to it to be a 32-bit ROM. Each ROM provides part of the 32-bit dword read by the CPU. The CPU only needs to provide an address to dword precision i.e. which particular dword it wants. Therefore the ROM array needs part of CPU_A[31:2] but not all of it, the ROMs don't have all those higher address lines. If the ROMs have a 10-bit address bus, they need CPU_A[11:2].

Generically, if the ROMs have an m-bit address bus, they need CPU_A[(m+2-1):2]. To make the diagram labelling simpler, they've used: ROMs with an (m-1)-bit address bus need CPU_A[(m+2):2] or 'CPU address bits m+2 to bit 2'.

It's a similar thing for n on the RAM address bus.

  • \$\begingroup\$ 1. Why if the ROMs have an m-bit address bus they need CPU_A[(m+2-1):2]? \$\endgroup\$
    – Leo
    Apr 30, 2017 at 13:51
  • \$\begingroup\$ 2. If we look in the picture it looks the ROM needs CPU_A[(m+2):2] \$\endgroup\$
    – Leo
    Apr 30, 2017 at 13:52
  • \$\begingroup\$ 3. I would appreciate if you could explain what are A and D in the ARM. \$\endgroup\$
    – Leo
    Apr 30, 2017 at 13:53
  • \$\begingroup\$ 4. I think m is 2 less than the number of bits in the ROM address bus and n is 2 less than the number of bits in the RAM address bus as we can see in the picture A[n+2:2] and A[m+2:2] is it correct? \$\endgroup\$
    – Leo
    Apr 30, 2017 at 13:54
  • \$\begingroup\$ @leo, Your Q4 is a no - my answer is correct, as is the diagram. But Q1..3 are basic CPU theory questions and it sounds like you know very little of these (A is address bus, D data bus and both are Page 1 stuff in microprocessor and computer design). If you don't know those, you need to start from the beginning and not jump into the middle, you'll have no chance. But you obviously can't possibly expect to have a custom tutorial written for you on those subjects here. There's mountains about this on the internet, you'll find very detailed text in seconds. Good luck with it. \$\endgroup\$
    – TonyM
    Apr 30, 2017 at 14:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.