Op SystemLogic is een zeer uitgebreid artikel verschenen over de theorie achter multithreading. Het plaatsen van een tweede processor in een systeem heeft zoals je weet nooit automatisch als gevolg dat de performance van het systeem twee keer zo hoog komt te liggen. De redenen hiervoor zijn allerlei problemen die zowel soft- als hardware tegenkomt in een SMP omgeving. Dingen waar bijvoorbeeld rekening mee gehouden moet worden zijn caches en latencies. Eén manier om dat op te lossen wordt een steeds betere optie en dat is een enkele chip bakken die zich gedraagt als meerdere processors. Volgens de laatste geruchten zal Intel zoiets in de loop van 2002 introduceren in haar Xeon processors, maar ook andere bedrijven zoals IBM en Compaq zijn er al intensief mee bezig. Men gaat uitgebreid in op de verschillende methoden en natuurlijk ook de nadelen die deze technologie met zich meebrengt.
Hoewel men over het algemeen zonder te hoeven liegen kan zeggen dat de software multithreaded geprogrammeerd moet zijn om voordeel te doen van een SMP of SMT systeem is deze stelling niet altijd per definitie waar. Er zijn namelijk een aantal algoritmes bedacht die een programma tijdens het draaien analyseren en, waar mogelijk, in meerdere draden opsplitsen. Dit kan ervoor zorgen dat de beschikbare bronnen van een single-chip multithreading processor nog beter gebruikt worden. Hoewel één van de grondleggers van deze techniek bij Intel werkt is het niet duidelijk of Jackson Technologie gebruik maakt van dit soort kunstjes.
Eén van deze methoden is het zogenaamde Slipstreaming, waarbij elk programma door de processor twee keer tegelijk wordt uitgevoerd. De processor kijkt altijd een stukje vooruit in de ene stream, zodat de tweede stream weet waar de code heen gaat voor deze daadwerkelijk wordt uitgevoerd. Dat is handig, want de tweede stream kan op dat moment nutteloze code verwijderen. Dezelfde code wordt vervolgens ook uit de hoofdstream geplukt en daardoor kan een single-threaded programma tot 50% sneller gaan lopen op een multithreading processor, zonder extra programmeerwerk. Hoewel dit allemaal nog heel erg geavanceerd klinkt zal het waarschijnlijk niet al te lang duren voor dit soort ideeën verwerkt zullen zitten in mainstream computers:
CMP uses two (or more) smaller cores to increase functional unit efficiency (removing horizontal waste), and has shown itself in new processors such as the Sun MAJC architecture, and the IBM POWER4; and the SledgeHammer from AMD should too. CMT and FMT both use the ability to switch rapidly between threads to hide memory latencies, and decrease vertical waste. CMT can be found in the MAJC architecture, and FMT in the Terra Supercomputing architecture. SMT operates by running any thread, in any functional unit, on any clock, thus removing both horizontal, and vertical waste, and will be found in the Alpha 21464, and possibly in a later incarnation of the P4 architecture. DMT and Slipstreaming processors both aim at increasing single-thread performance.
Though the many varied forms of multithreading take very different approaches, the goal is the same: higher real-world throughput. All of these techniques allow additional functional units to be added to a processor, and show something more akin to return to scales than to diminishing returns. While previous processors tended not to go far beyond 4 functional units per processor, due to diminishing returns, there are now techniques available which allow more units to be added with increased efficiency. We shall see some strange architectures in the future...