difference between a processor and a core
I would like to better understand the difference between a processor and a core. If someone could point me to a document describing the differences I would appreciate it. I am specifically interested in comparing the T1 processor to other Sun processors.
I also have a specific question. A T1 with eight cores can execute up to thirty-two threads at one time. Can you run different processes at the same time or do those threads all have to be from the same process?
Thanks
[493 byte] By [
TI_admin] at [2007-11-26 10:28:59]

# 1
As I understand it (correct me if I am wrong community), the processor is the chip that sits in the socket on your motherboard, and can contain one or many cores. In the past chips generally contained one core. In the case of T1 the processor contains eight cores. Hope that helps.
On your other point, the T1 can not really execute 32 threads simultaneously, as four threads share a single issue core. If you read the T1 architecture documentation there is a good description of the process of selecting and switching between the 4 threads on each core, so I think you should investigate this further yourself.
The processor can indeed run many threads from many different processes, much in the same way that most processors (even with one core) can run many different threads from different processes, by preemptive scheduling (look it up on wikipedia).
The processes can be from different processes due to virtual memory and address space identifiers (look these terms up as well).
I hope I've given you some pointers, I'm sure many more knowledgeable people out there will also help you, good luck with your studies.
# 2
>I would like to better understand the difference between a processor and a core. If someone could
>point me to a document describing the differences I would appreciate it.
Sure thing -- see the Defnitions section (chapter 2) of the UltraSPARC Architecture 2005 specification (which can be downloaded from page http://opensparc-t1.sunsource.net/index.html).
In simple terms, a processor = a processor module (which could contain more than one "chip", but in the case of T1, there is just one chip). A processor is the physical entity that plugs into a system board.
A processor may contain multiple physical processor cores (which is typically shortened to physical cores).
Each physical core may contain multiple virtual processor cores (typically shortened to virtual processors).
Each virtual processor supports one thread of execution; "virtual processor" maps 1-to-1 with "thread of execution". From the nonprivileged (application) software and the privileged (operating system) software points of view, each virtual processor is completely independent. Really independent, to the point that even a different operating system can be running on each virtual processor!.
Actually this ability to run different OSs on different virtual processors is quite cool.That means you can run Solaris and Linux on the same processor, at the same time, and they won't trip over each other. It also means that you can run multiple versions of the same OS on different virtual processors ... think "run the latest and greatest release for a while, to qualify it for the production environment" while running the previous version on other virtual processors actually in the production environment.
The Hypervisor (which some others call the "virtual machine" layer) knows about each and every virtual processor on a processor, but an OS only knows about the ones that the Hypervisor makes visible to it.
Typlically, it's set up so that an OS (Solaris, Linux, *BSD, etc) sees each a group of virtual processors as a symmetric multiprocessor (SMP) system. The OS may obtain (from the hypervisor) some affinity information re the various virtual processors, e.g. which ones share L2 caches, so that it can assign execution threads to virtual processors more efficiently.
>I am specifically interested in comparing the T1 processor to other Sun processors.
Compare away ;-).
Older UltraSPARC processors (up through UltraSPARC III) contain one physical processor core with one thread of execution, therefore one single virtual processor. 1 x 1 = 1.
An UltraSPARC IV or IV+ processor contains 2 physical processor cores, each with one thread (virtual processor), for a total of 2 virtual processors.2 x 1 = 2
An UltraSPARC T1 processor contains 8 physical processor cores, each with 4 threads of execution (virtual processors), for a total of 32 virtual processors. 8 x 4 = 32
You could also have fun comparing to contemporary Intel processors ... the Core Duo has the same configuration as the 3-year-old UltraSPARC IV: 2 physical cores. 1 thread per core, total of 2 virtual processors.The upcoming quads from Intel put two chips on a package (per above, processor = the package), 2 physical cores per chip, 1 thread per core, for a total of 4 virtual processors.
...Allow me here to make the biased [and hopefully obvious] observation that Sun was shipping 32-thread UltraSPARC T1 systems a full year before Intel will even be able to ship a 4-thread processor. And I imagine Sun will be shipping a 64-thread processor before Intel can ship an 8-thread processor.
...Furthermore, Sun completely opened up, via OpenSPARC, the full T1 processor, down to the RTL level, which Intel will never do and IBM might only do with very old technology.We encourage the OpenSPARC community to take the T1 design and run with it, generating very creative and useful derivatives!
>I also have a specific question. A T1 with eight cores can execute up to thirty-two threads at one time.
>Can you run different processes at the same time or do those threads all have to be from the same process?
Yes, you can run a different process on each thread.As mentioned above, you can even run a different operating system on each thread, with multiple applications running on top of each OS (as scheduled/timesliced by the OS).
# 4
OpenSPARC T1 CAN run 32 single-threaded
applications on 32 threads at the same time,
you don't need multi-threaded application to do this.
Or it can run multiple multi-threaded applications at the
same time, upto 32 threads total.
The chip has 8 cores and each core has 4 threads.
Some of the resources are shared and remaining are not shared.
There are some resources per thread : like Register file, Program
counters, Trap Logic, etc.
There are some resources per core, shared for 4 threads: like
instruction Cache, Data Cache, MMU, Stream Processing Unit, etc.
There are some resources per chip, shared for 8 cores and 32
threads:like FPU, I/O, L2 $, DRAM etc.
# 5
Matt's comments are correct (I didn't see his response until I posted mine).
Although each of the eight T1 physical cores only executes an instruction from one thread per cycle (in roughly round-robin fashion among the 4 threads), the sustained throughput is only a little less than if it executed an instruction from every thread each cycle.Why? Because typical applications execute a load or store every 3 or 4 instructions so the processor spends a lot of time waiting on cache and memory latency.On T1, the round-robin execution helps hide memory latency.(cleary, YMMV, depending on the application, but overall throughput is much higher on T1 than with traditional microarchitectures).
I should also point out that there is nothing architecturally (that is, in UltraSPARC Architecture 2005) that prevents an implementation from investing the resources to be able to execute an instruction from each and every thread, every single cycle (modulo instruction latencies).The T1 implementation made tradeoffs appropriate to its intended applications, providing stellar performance in throughput-computing applications.