ATmega328p Receive buffer depth.

I'm trying to understand the serial receive buffer capacity.

In the datasheet Section 20.2 I find the text:

The Receiver is the most complex part of the USART module due to its clock and data recovery units. The
recovery units are used for asynchronous data reception. In addition to the recovery units, the Receiver includes a Parity Checker, Control logic, a Shift Register and a two level receive buffer (UDRn).

Yet when i look at the arduino reference the text says:

Reference > Language > Functions > Communication > Serial > Available Serial.available()

Description
Get the number of bytes (characters) available for reading from the serial port. This is data that’s already arrived and stored in the serial receive buffer (which holds 64 bytes).

Serial.available() inherits from the Stream utility class.

So is the processor 2 byte register read and stored in a 64 byte register just waiting to read.

So is the processor 2 byte register read and stored in a 64 byte register just waiting to read?

Yes.

There is a hardware buffer in the UART that holds 2 bytes. There is a software buffer in the Serial class that holds 64 bytes. There is code you don't see that implements the Serial class and takes data from the hardware buffer and saves it in the software buffer. When you use Serial.read the data is taken from the software buffer.