
I have taken a closer look at the ATmega328P.

No we have a better picture. Also available in full resolution:
https://www.richis-lab.de/images/uC/01x08XL.jpg (39MB)


The Atmel logo and the character sequence AT 35473 are shown in the top right-hand corner. In the bottom right-hand corner is the year 2008.


The mask revisions are shown in the upper and lower left corners. These are apparently only the masks for structuring the metal layers and their contacts.

And now it gets really interesting! If you remove the metal layers, it becomes clearer where which function blocks have been integrated. As expected, the control logic is located at the bottom of the die. The various memory types take up a lot of space.
This image is also available in a higher resolution:
https://www.richis-lab.de/images/uC/01x13XL.jpg (99MB)


The 32kB flash memory (green) occupies the biggest area. The structure of the memory cells is the same as in the ATtiny10 (
https://www.richis-lab.de/uC03.htm) and the ATtiny841 (
https://www.richis-lab.de/uC04.htm). In the ATmega328P, however, the flash memory has been divided into two areas. The lower area cannot be read during a write operation (“No Read-While-Write”). A bootloader is usually stored there. The upper memory area, on the other hand, allows data to be read while data is being written elsewhere (“read-while-write”). For example, a program can continue to run while variables are still being saved.
The flash memory has a total of 258 pages. The program memory has 256 pages. Two pages are probably used for fuses, chip ID and similar things. Each page consists of 64 16-bit words. The 1kB EEPROM is integrated to the right of the flash memory (cyan). It contains 256 pages, each of which contains 4 Bytes.

In order to map the 2kB SRAM, the 512B structures of the ATtiny841 have been integrated four times.

In the left-hand area there are two logic blocks in which an astonishing amount of space has remained unused. In the ATtiny10 and the ATtiny841, an almost square circuit section is integrated. Based on the structure, it can be assumed that it contains the configuration registers for functions such as ADCs, comparators and counters. The ATmega328P also has such registers. However, the block known from the ATtiny10 and ATtiny841 is missing on the die. Perhaps the configuration takes place in the two logic blocks shown here. The proximity to the analog circuit parts would be helpful in any case. The empty areas would match the large unused areas in the address space of the configuration registers.
https://www.richis-lab.de/uC01.htm 