ok pipelines are inside the Core, with hyper threading, each thread will accesses more pipelines per nansecond than a single thread, thus making things work a little faster and using more pipelines and getting almost all of them busy.
another advantage of hyper threading is you can be doing both things at one time, lets say for example some programs require only one stream (one thread) to do the work, while the other still idle, thus u can do play or use another program to get the other thread working, AKA mutli tasking thats another advantage for hyper threading.
If u wanna do this with^ without hyper threading, then you will have to wait till the whole operation is done till u can play or use another program smoothly.
but the problem with hyper threading is if the 2 threads needs to access the Ram at the same time using the buss, they wont be able to go and squeeze them selfs inside the bus both together because it will cause errors, so one will have to go using bus to the ram to get the data or other stuff, while the other has to waits in the core doing its job waiting for the other thread to get the data and come back so it can go and accesses the ram, i think the same with Cache.
if there is anything i said is not correct please let me know.
thanks in advance.