Att det i princip inte är någon skilland på 1 socket/4 core och 2 socket/2 core är ju dock en sanning med modifikation, då vissa saker delas på socket-nivå, vissa saker på core-nivå osv (i nyare generationerna av chip iaf).
Om vi för att få det konkret tar ett exempel, Intels Haswell så innehåller varje socket/CPU/"processorchip du kan hålla i handen" minneskontroller, grafikchip (GPU), delat cache-minne (L3), enhet som hanterar PCI-express, Display-port osv samt 2-4 cores.
Varje core i sin tur har flera uppsättningar cache-minne (L1 instr, L1 data, L2 gemensam) samt en exekveringsenhet. Exekveringsenheten i sig har flertalet delar som arbetar parallelt, så den kan exekvera mer än en instruktion per klockcykel (upp till

, men det märker du som programmerare inte direkt av. Processorn väljer själv hur den kan (om)ordna instruktioner för att få så effektiv exekvering som möjligt.
Dessutom inkorporerar Intel det de kallar "hyper-threading", så sett från operativsystem/applikation är varje core två logiska processorer. I princip kan man säga att genom att ha två möjliga instruktionsströmmar att jobba med kan om-ordning och parallell-exekveringen göras mer effektiv, då man oftare kan nyttja fler olika delar av exekveringsenheten.
För 95% av alla program (och programmerare) spelar det eg inte så stor roll, men vill man krama ur det där sista ur en processor gör det skillnad då de två logiska processorerna på samma core delar L1/L2 cache (ibland vill man det, ibland vill man undvika det) och cores på samma socket delar L3, minnescontroller osv så måste man i en del lägen ta hänsyn till det.
Edit: Liten trivia, Cheif Architect för Intel Haswell var en svensk
