On my ASUS P6T SE ...
Notice the 'alias' to 'CPU'
There is a definitely mapping (P00x, CPUx) using Alias (SourceObject, AliasObject)
Arguably, creating objects for Processor Alias() is a "bad" idea; any idea why a BIOS author would do that? What was the purpose of those useless statements? One can load most OS like Linux and Windows without Alias(). And from a programmers perspective there is no actual need; actually these Processor Alias() statements produce more bugs and create unnecessary debugging variables in some Operating Systems. And thats why in OSX we have to remove them. Since AcpiWalkNamespace treats CPUx as the real Processor objects, the probe order for acpi(4) bus children will be P001, CPU1, P002, CPU2, P003, CPU3, P004, CPU4. This is very bad, because half of processors are attached twice and half -- aren't attached at all. Moreover, est (Enhanced SpeedStep cpufreq driver) isn't able to get _PSS for CPUx, so P-states will be missing for half of processors!
And that's why the great MacPro has no 'Alias' to 'CPU' statements.
Observing the objects "P001" and "CPU1", they have the same type and flags. In other words we shouldn't have to distinguish between the two. They should act the same according to the ACPI spec.
According to the ACPI specification: Alias (SourceObject, AliasObject)
Creates a new object named AliasObject that refers to and acts exactly the same as SourceObject. AliasObject is created as an alias of SourceObject in the namespace. The SourceObject name must already exist in the namespace. If the alias is to a name within the same definition block, the SourceObject name must be logically ahead of this definition in the block.