I am studying the ARM instruction architecture, and I have read that instructions are stored word-aligned, so the least significant two bits of instruction addresses are always zero in ARM state.
Thumb and Thumb-2 instructions are either 16 or 32 bits long. Instructions are stored half-word aligned, so the least significant bit of instruction addresses is always zero in Thumb state.
In some of my studies with different microcontrollers like AVR While accessing Program memory, I was using the Least significant bit to distinguish between Higher byte or lower byte to be accessed. But that was regarding Data memory access.
In ARM the instructions are anyways 32 bit and hence should be fetch all bytes at once.
Why then, the last two bits to fetch a particular byte of the instruction (1 bit in Thumb Mode) and use of banks.
PS: If I were to fetch individual byte of a 4-byte long instruction, it would take 4 cycles which is very inefficient, so what is the purpose of having byte addressability, Is it because the new THUMB type instructions which are 16-bit wide but still occupy 32-bit space?