The value of worker_processes
is not equivalent to the number of CPU cores used. As the name suggests it controls only the number of individual nginx process instances that will be running. Any one of these instances will spawn a number of threads to process the incoming requests and these threads will run on all available cores even if you choose to use only a single worker process.
As for why one worker process per CPU is preferable over e.g. only a single one - I don't know. Someone with knowledge of the inner workings of how nginx uses threads would have to shed light on that.
PS. I'm wondering why your server load is so high - we're running a small 2-core server that handles up to 200 req/s with hardly any load at all.