The processors have an instruction named CPUID. This returns the manufacture name, model number and feature set (extended instruction set). The instruction does not return a CPU serial number. Therefore on dual processor (or more). You typicaly will find all processors return same CPUID.
Imagine the trouble you would have if the system had two processors, one supporting SSE3 instructions and one that does not. If the O/S switches processors for an application after the application determined that SSE3 instructions were available then the program will fail. SMP usaly requires all processors support the same instruction set.
What code are you using to determine the cpu physical id number?
You might want to look at Detecting Support for Hyper-Threading Technology Enabled Processors on how to identify different physical (and logical) processors.