Multi Threaded Architectures



Written by: Sadi Evren SEKER Home Page


Instructor : Asst. Prof. Esin Onbasioglu Home Page


1.Introduction:


Most of computer architectures discussed in this report are above mainframe architecture. They are assigned in mass processes and scaled as super computers. Cost of this computers are usually expensive and they are designed for specific environments.



2. Before Multi-Threaded Architectures:


Before the design of Multi-Threaded Architectures, there were single threaded architectures that can execute multi-threads at the same time by simple configurations. The disadvantage of this computers is the speed down for multi threads and the setup time to switch multi thread operations.


For example super scalar architecture is a single thread architecture. There is single Instruction Fetch, Instruction Decode & Issue, Reservation Station, Register Alias Table, Reorder Buffer against multiple Functional Units. This makes the system more simple but slow against multi thread processes.


  1. Purpose of Multi-Thread Architectures:


By the way it is obvious that we need a new design for multi-thread architectures. Handling multi-threaded processes can be done simply by special hardware designs. It is also possible to handle this implementations by using advanced software, some modifications in operating system. But main idea behind multi threaded architecture is an enhancement for architecture.


  1. Design


Start of a new hardware design for a distributed software is the distribution of hardware. Handling of many threads at the same time is done by many Functional units in the single thread architectures but the system has ha conflict at the other units. (e.g. Instruction Fetch is a single unit and it can fetch only one thread at the same time.) So the first step is division of single units.




    1. Dynamic FU Scheduling


Still there is many Functional Units we have to distribute instruction fetch unit, instruction decode & Issue , Reservation Station, Register Alias Table and Reorder Buffer. This distribution is not enough to run the system. There is coordination problems after this distribution. There has to be a scheduling mechanism to handle the request from reservation station.


This improvements are not enough because the communication between functional units, and the distributed mechanisms. So this improvement is done by a shared cache which keeps temporary data for functional units and reordered buffer.





    1. Static Division of FU


Static FU scheduling is one more step enhanced form of dynamic FU scheduling. This is shared nothing. Functional Units are not shared by Reservation Stations. Each Reservation Station has its own Functional Units and Reordered Buffer. Still we need communication between this two separated mechanisms we need a shared cache.


5. Comparison


We have to compare to see the speed up of this new architectures.


5.1. Design Complexity


It makes more complex to use more units together. Number of units is increased for both Static and Dynamic Scheduling. This makes static scheduling more complex.

Also the distribution of Functional Units makes the static scheduling more complex.


Scheduler in the Dynamic Scheduling has to understand all request from reservation stations and control all Functional Units. This is the biggest design complexity in dynamic scheduling.


In the static scheduling there is no shared object so it is easier to implement the system. But the fetching of data is more complex. At the same time more than one fetching operation is done so the synchronization is a problem.







5.2. Performance


Static scheduling yields more speed up than dynamic scheduling. Although the configuration of Functional Units is very important for speedup. Speed up depends on the type of process, configuration of functional units and the number of threads. If number of functional units is increased, the system gets closer to the single threaded system. This makes only a small speed up, so this methods are useful for small amount of functional units. Also the type of process will effect the system by the satisfaction of functional units.


6.Conclusion :


It is very important to speed up the architecture. There are many methods used for this purpose. Multi threaded architectures is one of this speed up methods and this performance enhancement is related to the environment. So I think this mechanisms can only be used for special purposes.