Atmega328P-PU is a high-performance Atmel picoPower 8-bit AVR RISC-based microcontroller combines 32KB ISP flash memory with read-while-write capabilities, 1KB EEPROM, 2KB SRAM, 23 general purpose I/O lines, 32 general purpose working registers, three flexible timer/counters with compare modes, internal and external interrupts,serial programmable USART, a byte-oriented 2-wire serial interface, SPI serial port, 6-channel 10-bit A/D converter, programmable watchdog timer with internal oscillator, and five software selectable power saving modes. The device operates between 1.8-5.5 volts. Atmega328P-PU has wide operating voltage and 20 MIPS speed using external 20MHZ crystal. Atmega328P-PU is not a direct replacement of Atmega328-PU as both the chip have different device signature.
Note: Atmega328P-PU Atmega328PB and Atmega328-PU are not same controller they have many difference and their device signature is also different please refer data sheet for more details.