Windows 7 has "Power Options" that could be affecting your performance. To check for this click on the start button, go to control panel, and click on "Power Options."
Now, make sure that the "Show Additional Plans" button has been selected, if it has, it will say "Hide additional plans." Click on the "High Performance" power plan. You can also go into the plan and change settings for optimal performance.
Which cores correspond to each "CPU" below?
Assuming we have Core 1, 2, 3, and 4, CPU4 and CPU5 represent core 3.
Does (say) CPU 6 and CPU 7 below represent one core; the HT and the real core?
There is no distinction between the two - they both have physical hardware interfaces to the CPU, the logical interface is implemented in hardware (see the Intel Core Processor Datasheet, Volume 1 for more details). Basically, each core has two seperate execution units, but it shares some common resources between them. This is why in certain cases hyperthreading can actually reduce performance.
If, for example, CPU 6 represents a real core and CPU 7 an HT core, will a thread assigned just to just CPU7 get only the left over resources of a real core? (assuming the core is running other tasks)
See above. A thread assigned to ONLY CPU6 or ONLY CPU7 will execute at the exact same speed (assuming the thread does the same work, and the other cores in the processor are at idle). Windows knows about HT-enabled processors, and the process scheduler takes these things into account.
Is the hyperthreaded managed entirely within the processor such that threads are juggled internally? If so, is that at the CPU scope or the core scope? Example: If CPU 6 and 7 represent one core, does it not matter which a process is assigned to because the CPU will assign resources as appropriate to a running thread?
Both. The actual hardware itself does not schedule what cores to run programs on, that's the operating system's job. The CPU itself, however, is responsible for sharing resources between the actual execution units, and Intel dictates how you can write code to make this as efficient as possible.
I notice that long-running single-threaded processes are bounced around cores quite a bit, at least according to task manager. Does this mean that assigning a process to a single core will improve performance by a little bit (by avoiding context switches and cache invalidations, etc.)? If so, can I know I am not assigning to "just a virtual core"?
That is normal behaviour, and no, assigning it to a single core will not improve performance. That being said, if for some reason you want to ensure a single process is only executed on a single, physical core, assign it to any single logical processor.
The reason the process "bounces around" is due to the process scheduler. This is normal behaviour, and you will most likely experience reduced performance by limiting what cores the process can execute on (regardless of how many threads it has), since the process scheduler now has to work harder to make everything work with your imposed restrictions. Yes, this penalty may be negligible in most cases, but the bottom line is unless you have a reason to do this, don't!
Best Answer
No. Windows is not restricting your applications
If your rendering app is only single-threaded, then it can only use 100% of one CPU. So, for example,on a two-CPU machine it would show up as 50%. Windows can't make it use both CPUs because it's up to the app developer to break the task into multiple threads.
But some of the time it will have to wait while it reads input video and writes the output video... which would account for its only using 40%.
It is similar for RAM. Assuming your machine is not RAM-starved, Windows will let a process use as much RAM as it's referenced recently.
To make the compute-bound portion of video rendering go faster, you can buy a faster CPU, or buy a video card that your app can use for acceleration by doing some of the work in the GPU. Or get a different rendering app, one with better-implemented multithreading.
To make the I/O go faster, put the input, output, and temporary files on three different drives (not just drive letters. Different physical drives). Since the input files are normally the largest, and are also typically accessed in a random fashion if you're combining multiple inputs, put them on your fastest drive, an SSD if possible. The speed of the output drive won't matter much: The rate at which you can render video is a slow walk to any hard drive.