Note that the bootloader fuse bits specify the number of WORDS allocated to the bootloader. A word is two bytes, so a 512byte bootloader gets the bit settings for a 256 word boot section...
Is atmega328p memory location addressed by words instead of bytes?
(The whole "Harvard Architecture" thing is sort of neat. It shows up most obviously in microcoded engines, where each bit of the instruction word directly connects to some hardware gate - you can add as many bits to the instruction word as you have gates and things to control.
I want to write sketch on an atmega328P and don't want others to clone its program to other atmega328P chips