If a CPU has a 16 bit address bus and 8 bit words, how much memory can it address?

Solution 1:

A word, in the majority architectures, is the largest piece of data that can be transferred to and from the working memory in a single operation.

The largest possible address size, used to designate a location in memory, is typically called a hardware word.

So, your CPU will be able to address 64KB (2^16) but will only be able to transfer in a single operation 8 bits.

Solution 2:

A machine word, or commonly just word is the largest unit of data that the CPU can manipulate as a whole using common instructions. This has nothing to do with memory addressing.

What matters is the unit of address resolution, which is commonly an 8-bit byte even on 16/32/64 bit architectures. It doesn't have to be equal to the machine word size, but it probably is in your case.

An 8-bit addressable unit combined with 16-bit address bus amounts to 64KiB of RAM that the CPU can address.

Solution 3:

Also what does 8 bit words mean?

In context, the word size goes with the address size to describe the memory bus. There are 16 bits gling out to the memory so it can choose 64ki locations. Then, each location contains 8 bits.

The word size here may or may not match the CPU computation unit size, and this may or may not match the logical granularity in addressing.

For example, a CPU may advertise a 16-bit bus (for this purpose). It uses 16-bit addresses in its instructions, and like your example has 64ki. But it has 15 bits of address bus and 16 bits of data bus. It only needs 32ki addresses and always gets 2 bytes with each location. (If an instruction wanted 1 byte, it would dispatch the address with the least bit missing, fetch both bytes in that step, then look at the least bit of the desired address to decide which half to use.)

Note that bank switching, PAE, etc. mentioned by others are not relevant here. A memory management unit might use 16-bit addresses and have 20-bit hardware address, so the CPU needs to switch and map things to make use of the actual 20-bit address range of RAM chips that can be addressed.

Be sure to specify units in your answers. “64ki”. Of what? 8-bit words, making it (still) 64ki bytes of addressable RAM. That step eliminates confusion and makes problems like this trivial.