<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=TRIPS-Prozessor</id>
	<title>TRIPS-Prozessor - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=TRIPS-Prozessor"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=TRIPS-Prozessor&amp;action=history"/>
	<updated>2026-06-08T19:04:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=TRIPS-Prozessor&amp;diff=1023652&amp;oldid=prev</id>
		<title>imported&gt;Thomas Dresler: Kommasetzung</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=TRIPS-Prozessor&amp;diff=1023652&amp;oldid=prev"/>
		<updated>2026-01-06T19:23:57Z</updated>

		<summary type="html">&lt;p&gt;Kommasetzung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:TRIPS-Prototype Package.jpg|mini|Gehäuse des TRIPS-Prozessors]]&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;TRIPS-Prozessor&amp;#039;&amp;#039;&amp;#039; ({{lang|en|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;era-op, &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;eliable, &amp;#039;&amp;#039;&amp;#039;I&amp;#039;&amp;#039;&amp;#039;ntelligently adaptive &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;rocessing &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;ystem&amp;#039;&amp;#039;}}) ist ein Forschungsprozessor der [[University of Texas at Austin]]. Die [[Prozessorarchitektur]] ist so ausgelegt, dass sich weitere Kerne möglichst einfach hinzufügen lassen. Das Projekt wird von [[IBM]] und der [[Defense Advanced Research Projects Agency|DARPA]] gefördert.&lt;br /&gt;
&lt;br /&gt;
Die TRIPS-Architektur soll ein Nachfolger der gängigen [[Reduced Instruction Set Computer|RISC]]-Architektur werden und wird als [[Explicit Data Graph Execution|EDGE]]-Architektur bezeichnet. Die EDGE-Architektur weist Blöcke auf, die elementare Anweisungen unabhängig voneinander ausführen, sowie datengesteuerte (out-of-order) Anweisungsausführung.&lt;br /&gt;
&lt;br /&gt;
TRIPS wird entwickelt, um Prozessoren mit mehr als einem Teraflop zu realisieren. Auch [[Intel]]s [[Terascale-Prozessor]] wird in diesem Zusammenhang entwickelt, basiert jedoch auf einer anderen Architektur mit gleichartigen Rechenelementen.&lt;br /&gt;
&lt;br /&gt;
== Aufbau der Architektur ==&lt;br /&gt;
[[Datei:TRIPS-Architektur.svg|mini|Aufbau der TRIPS-Architektur]]&lt;br /&gt;
Der TRIPS-Prozessor besteht aus einer oder mehreren [[Arithmetisch-logische Einheit]] (ALU), [[Cache]]s und [[Register (Prozessor)|Registern]]. Die ALUs führen [[Integer (Datentyp)|Ganzzahl]]- und [[Gleitkommazahl|Gleitkomma]]-Rechenoperationen aus. Für [[Daten]] und [[Befehlssatz|Instruktionen]] sind getrennte Caches vorgesehen. Zusätzlich sind mehrere [[Translation Lookaside Buffer|Übersetzungspuffer]] (TLB) vorgesehen, welche virtuelle auf physische Adressen abbilden.&lt;br /&gt;
&lt;br /&gt;
Bei den Registern unterscheidet man beim TRIPS zwischen allgemeinen und speziellen Registern ({{lang|en|[[Register (Prozessor)#Spezialregister|Special Function Register]]}}, &amp;#039;&amp;#039;SFC&amp;#039;&amp;#039;). Allgemeine Register werden verwendet, um beliebige Daten oder Adressen zu speichern. Spezialregister sind für die Konfiguration und Kontrolle des Prozessorstatus zuständig.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu herkömmlichen RISC-Prozessoren definiert der TRIPS-Prozessor eine Reihe von internen [[Warteschlange (Datenstruktur)|Queues]] und sind Teil des [[Befehlssatz]]es und des [[Datenflussmodell]]s. Dies ermöglicht es, eine Serie von Anweisungen als Block auszuführen, anstatt immer nur einzelne Befehle. Die Anweisungs-Queue ({{lang|en|&amp;#039;&amp;#039;Instruction Queue&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;IQ&amp;#039;&amp;#039;) kann hierbei bis zu 128 Instruktionen gleichzeitig verarbeiten, die Lese-Queue ({{lang|en|&amp;#039;&amp;#039;Read Queue&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;RQ&amp;#039;&amp;#039;) puffert 32 Lesezugriffe auf allgemeine Register und die Schreib-Queue ({{lang|en|&amp;#039;&amp;#039;Write Queue&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;WQ&amp;#039;&amp;#039;) puffert bis zu 32 schreibende Zugriffe auf allgemeine Register. Eine zusätzliche Laden- und Halten-Queue ({{lang|en|&amp;#039;&amp;#039;Load &amp;amp; Store Queue&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;LSQ&amp;#039;&amp;#039;) puffert 32 Speicherzugriffe. Queues puffern hierbei nur [[Persistenz (Informatik)|transiente]] Zustände, während [[Persistenz (Informatik)|persistente]] Zustände in Registern, Caches und dem Systemspeicher gehalten werden.&lt;br /&gt;
&lt;br /&gt;
Der Rest des TRIPS besteht aus einem systemweiten Netzwerk, welches die einzelnen Rechenblöcke miteinander verbindet. Zugriffe von Prozessoren, die über dieses Netzwerk auf einen gemeinsamen Speicher zugreifen wollen, werden von einem Systemkontroller gesteuert.&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
[[Datei:Trips floorplan.jpg|250px|mini|Processor TRPS]]&lt;br /&gt;
TRIPS-Prozessoren werden aus einzelnen Kacheln ({{lang|en|&amp;#039;&amp;#039;Tiles&amp;#039;&amp;#039;}}) aufgebaut, wobei jedes Kachel eine elementare Funktion erfüllt. Die einzelnen Tiles werden in eine zweidimensionalen Anordnung ([[Matrixschaltung|Array]]) gebracht. Man unterscheidet hierbei die folgenden Arten von Tiles:&lt;br /&gt;
* die {{lang|en|&amp;#039;&amp;#039;Execution Tiles&amp;#039;&amp;#039;}} (ET) enthalten IQ und ALU.&lt;br /&gt;
* die {{lang|en|&amp;#039;&amp;#039;Register Tiles&amp;#039;&amp;#039;}} (RT) enthalten allgemeine Register, RQ und WQ.&lt;br /&gt;
* die {{lang|en|&amp;#039;&amp;#039;Data Tiles&amp;#039;&amp;#039;}} (DT) enthalten Daten-Cache, Daten-TLB und LSQ.&lt;br /&gt;
* die {{lang|en|&amp;#039;&amp;#039;Instruction Tiles&amp;#039;&amp;#039;}} (IT) enthalten Anweisungs-Cache und Anweisungs-TLB.&lt;br /&gt;
* das {{lang|en|&amp;#039;&amp;#039;Global Control Tile&amp;#039;&amp;#039;}} (GT) enthält die Spezialregister und die Logik des globalen Prozessorkontrollers.&lt;br /&gt;
&lt;br /&gt;
Die meisten Prozessorressourcen werden zusätzlich in Bänke unterteilt und können somit auf mehrere Tiles verteilt sein. Die TRIPS-Architektur bildet dadurch eine [[Grid-Computing|Grid]]-Architektur auf Prozessorebene. Dies erlaubt hohe [[Taktsignal|Taktfrequenzen]], hohe [[Nebenläufigkeit|Parallelität]] der Instruktionen und gute Erweiterbarkeit. Da es in einer solchen Grid-Architektur zu hohen [[Latenzzeit (Technik)|Latenzen]] kommen kann, wenn Daten von einem Tile zu einem weit entfernten Tile gebracht werden müssen, könnte es hierbei jedoch zu Skalierungsproblemen kommen, weshalb die [[Skalierbarkeit]] des Systems derzeit noch eingehender anhand von Prototypen untersucht wird.&lt;br /&gt;
&lt;br /&gt;
Ein Vorteil der Architektur ist es, dass die Queues und Register durch eine mehrfache Ausführung identischer Tiles mehrfach vorhanden sind. Dadurch können eine sehr hohe Anzahl an Instruktionen sowie bis zu vier [[Thread (Informatik)|Threads]] parallel und dadurch gleichzeitig bearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Erster Prototyp ===&lt;br /&gt;
Im ersten&amp;amp;nbsp;– im Frühling 2007 realisierten&amp;amp;nbsp;– TRIPS-Prototyp werden zwei TRIPS-Prozessorkerne und ein [[L2-Cache]] ({{lang|en|&amp;#039;&amp;#039;Secondary Memory System&amp;#039;&amp;#039;}}) mit Schnittstellen zur [[Peripheriegerät|Peripherie]] des Mainboards auf dem Prozessor-[[Die (Halbleitertechnik)|Die]] gefertigt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Tiles im Secondary Memory System&lt;br /&gt;
|-&lt;br /&gt;
! Kürzel !! Name !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| NT || Network-Tile&lt;br /&gt;
| Bilden ein Netzwerk, in dem Daten aus und in den Speicher transportiert werden.&lt;br /&gt;
|-&lt;br /&gt;
| MT || Memory-Tile&lt;br /&gt;
| Bilden den Speicher des L2-Cache, in dem Daten gespeichert werden.&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Direct Memory Access&lt;br /&gt;
| Kontroller für den [[Direct Memory Access|Speicherdirektzugriff]] ([[Northbridge]])&lt;br /&gt;
|-&lt;br /&gt;
| SDC || Static DRAM Controller&lt;br /&gt;
| Bietet Speicherzugriff auf die [[Synchronous Dynamic Random Access Memory|SDRAM]]-Bänke des [[Arbeitsspeicher]]s&lt;br /&gt;
|-&lt;br /&gt;
| EBC || External Bus Controller&lt;br /&gt;
| Stellt die Verbindung mit Bussen ([[Southbridge]]) her, die sich außerhalb des Prozessors befinden, und kümmert sich um [[Interrupt|Unterbrechungsanforderungen]] (&amp;#039;&amp;#039;Interrupt Request&amp;#039;&amp;#039;, &amp;#039;&amp;#039;IRQ&amp;#039;&amp;#039;) und externe Busschnittstellen (&amp;#039;&amp;#039;External Bus Interface&amp;#039;&amp;#039;, &amp;#039;&amp;#039;EBI&amp;#039;&amp;#039;).&lt;br /&gt;
|-&lt;br /&gt;
| C2C || Chip-to-Chip Connector&lt;br /&gt;
| Dient dazu, eine direkte Verbindung mit anderen TRIPS-Prozessoren herzustellen. Der C2C ist im TRIPS-Prozessor vierfach vorhanden, um Arrays aus TRIPS-Prozessoren zu bilden und damit [[Rechnerverbund|Rechencluster]] aufbauen zu können.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Prototyp wurde in einem 130 nm Prozess als [[Anwendungsspezifische integrierte Schaltung|ASIC]] gefertigt und besteht aus etwa 170 Millionen Transistoren. Der TRIPS-Prozessor beherrscht 4-faches Multithreading und kann bis zu 16 Instruktionen je Takt und Prozessor bei einer Taktfrequenz 500&amp;amp;nbsp;MHz ausführen. Dies resultiert in einer Spitzenleistung von 16 GOps (16 Milliarden Operationen je Sekunde).&lt;br /&gt;
{|&lt;br /&gt;
|[[Datei:TRIPS-Prototype Tiles Layout.svg|mini|Anordnung der Tiles im TRIPS-Prototypen]]&lt;br /&gt;
|[[Datei:TRIPS-Prototype Layout.jpg|mini|Layout des TRIPS-Prototypen]]&lt;br /&gt;
|[[Datei:TRIPS-Prototype Layout2.jpg|mini|Foto des TRIPS-Prototypen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mikrobusse ===&lt;br /&gt;
Die einzelnen Tiles im Array werden untereinander über einfache Mikronetzwerke verbunden. Man unterscheidet hierbei die in der folgenden Tabelle aufgeführten Mikrobusse:&lt;br /&gt;
[[Datei:TRIPS-Tiles.svg|mini|Mikronetzwerke des TRIPS-Prozessors zum Verbinden der einzelnen Tiles]]&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Mikrobusse&lt;br /&gt;
|-&lt;br /&gt;
! !! Kürzel !! Name des Busses&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#ffd700;&amp;quot;|∎∎∎ || GDN || Global Dispatch Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#7fff00;&amp;quot;|∎∎∎ || GSN || Global Status Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#ff69b4;&amp;quot;|∎∎∎ || OPN || Operand Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#7b68ee;&amp;quot;|∎∎∎ || GCN || Global Control Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#ff6347;&amp;quot;|∎∎∎ || OCN || On Chip Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#ffff00;&amp;quot;|∎∎∎ || GRN || Global Refill Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#00ffff;&amp;quot;|∎∎∎ || ESN || External Store Network&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;color:#d3d3d3;&amp;quot;|∎∎∎ || DSN || Data Status Network&lt;br /&gt;
|}&lt;br /&gt;
Die in der Tabelle aufgeführten Farben entsprechen hierbei den Farben der Busse in der nebenstehenden Abbildung.&lt;br /&gt;
&lt;br /&gt;
=== Execution Tile ===&lt;br /&gt;
[[Datei:TRIPS Execution Tile.svg|gerahmt|Aufbau des Execution Tile]]&lt;br /&gt;
Jeder der 16 Execution Tiles besteht aus einer einfachen Daten-[[Pipe (Informatik)|Pipeline]], einer Bank von 64 Reservierungsstationen ({{lang|en|&amp;#039;&amp;#039;reservation station&amp;#039;&amp;#039;}}) und einer [[Integer (Datentyp)|Integer]]- sowie einer [[Gleitkommazahl|Gleitkomma]]-Einheit. Alle Einheiten mit Ausnahme der Divisionseinheit sind als [[Pipeline (Prozessor)|Pipeline-Architektur]] ausgeführt. Die Divisionseinheit benötigt 24 Takte.&lt;br /&gt;
&lt;br /&gt;
Die Reservierungsstationen enthalten je acht Anweisungen für jeden der acht TRIPS-Blöcke, wodurch die TRIPS-Blöcke kontinuierlich angesteuert werden. Jede Reservierungsstation besitzt Felder für zwei 64-Bit [[Logischer Operator|Operanden]] und einem 1-Bit [[Prädikatenlogik|Prädikat]].&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register Tile ===&lt;br /&gt;
[[Datei:TRIPS Register Tile.svg|gerahmt|Aufbau des Register Tile]]&lt;br /&gt;
Die Mikroarchitektur des TRIPS-Prozessors wird in Register und Bänke unterteilt, um den Stromverbrauch und die Zeitverzögerungen zu verringern. Jedes Register Tile enthält eine Bank sowie eine Verbindung mit dem Operand Network. Dies erlaubt es dem [[Compiler]], wichtige Schreib-/Lese-Anweisungen in einem Register zu platzieren, das sich nahe dem zu beschreibenden bzw. auszulesenden Register befindet.&lt;br /&gt;
&lt;br /&gt;
Daten, die sofort nach der Definition gelesen werden, werden vom Compiler nicht im Register abgelegt, wodurch die [[Datendurchsatz]]-[[Bandbreite]] des Registers um etwa 70 % niedriger ausfallen kann als bei einem Register eines RISC- oder [[Complex Instruction Set Computer|CISC]]-Prozessors. Die vier verteilten Bänke haben deshalb trotz einer geringen Anzahl an Anschlüssen (2×Lesen und 1×Schreiben) eine ausreichende Bandbreite.&lt;br /&gt;
&lt;br /&gt;
Jeder der vier Register Tiles enthält eine 32-Register große Bank für jeden der vier vom [[Prozessor|Kern]] unterstützten [[Simultaneous Multithreading|SMT]]-Threads. Auf diese Weise sind für jeden Thread 128 Register verfügbar, die auf die 128 Register großen Bänke der Register Tiles verteilt werden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich enthält jedes Register Tile eine Schreib- und eine Lese-Queue. Die Schreib-Queue enthält bis zu acht Lesezugriffe und die Lese-Queue enthält bis zu acht Schreibzugriffe. Die Queues stellen eine dynamische und kontinuierliche Weiterleitung der Zugriffe auf die Register sicher.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data Tile ===&lt;br /&gt;
[[Datei:TRIPS Data Tile.svg|gerahmt|Aufbau eines Data Tile]]&lt;br /&gt;
Jedes Data Tile ist ein Teilnehmer im Operand Network. Es enthält eine 2-Wege L1-cache Bank mit 8&amp;amp;nbsp;kB Größe. [[Virtuelle Speicherverwaltung|Virtuelle Adressen]] sind über die Data Tiles in einem [[Interleaving]]-Verfahren in einer Cache-Reihe mit 64 Bytes verteilt.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zur L1-Cache Bank enthält jedes Data Tile eine Kopie der Laden-/Speichern-Queue, eine Abhängigkeitsvorhersage, einen rückseitig zusammenführenden Schreibpuffer mit einem Eintrag, einer Daten-TLB und einem &amp;#039;&amp;#039;modellspezifischen Halte-Register&amp;#039;&amp;#039; ({{lang|en|&amp;#039;&amp;#039;Modell Specific Hold Register&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;MSHR&amp;#039;&amp;#039;). Das MSHR behandelt bis zu 16 Anfragen für bis zu vier [[Cache-Line]]s.&lt;br /&gt;
&lt;br /&gt;
Da die Data Tiles im Netzwerk verteilt sind, wurde eine speicherseitige Abhängigkeitsvorhersage implementiert, welche mit jeder Datencachebank verbunden ist. Die Abhängigkeitsvorhersage in jedem Data Tile verwendet einen 1024 Bit langen Bitvektor.&amp;lt;ref&amp;gt;Simha Sethumadhavan, Robert McDonald, Rajagopalan Desikan, Doug Burger, Stephen W. Keckler: &amp;#039;&amp;#039;Design and implementation of the TRIPS primary memory system.&amp;#039;&amp;#039; International Conference on Computer Design, Oktober 2006.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instruction Tile ===&lt;br /&gt;
[[Datei:TRIPS Instruction Tile.svg|gerahmt|Aufbau des Instruction Tile]]&lt;br /&gt;
Das Instruction Tile beherbergt einen lokalen 2-Wege 16&amp;amp;nbsp;kB [[L1-Cache]] und wird vom [[#Global Control Tile|Global Control Tile]] angesteuert. Das Global Control Tile enthält hierfür eine Tabelle, welche die Position der Daten in den Instruction Tiles speichert.&lt;br /&gt;
&lt;br /&gt;
Jedes der fünf 16&amp;amp;nbsp;kB Bänke speichert einen 128-Byte großen Block. Hierdurch macht der L1-Cache in Summe 640 Bytes aus und wird auf 128 Blöcke verteilt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global Control Tile ===&lt;br /&gt;
[[Datei:TRIPS Global Control Tile.svg|gerahmt|Aufbau des Global Control Tile]]&lt;br /&gt;
Das Global Control Tile enthält &amp;#039;&amp;#039;Anweisungscache-Tag-Arrays&amp;#039;&amp;#039;, die &amp;#039;&amp;#039;Anweisungs-TLB&amp;#039;&amp;#039; (&amp;#039;&amp;#039;I-TLB&amp;#039;&amp;#039;) und die &amp;#039;&amp;#039;Nächster-Block-Vorhersage&amp;#039;&amp;#039; ({{lang|en|&amp;#039;&amp;#039;next block predictor&amp;#039;&amp;#039;}}). Das Global Control Tile behandelt das Management für die TRIPS-Blockverwaltung.&lt;br /&gt;
&lt;br /&gt;
Die Blockverwaltung beinhaltet hierbei die Vorhersage, [[Fetching]], Weiterleitung (Dispatching), Vervollständigungsdetektierung, Leeren des Caches (flushing) bei Falschvorhersagen oder Interrupts, sowie das [[Commit]].&lt;br /&gt;
&lt;br /&gt;
Zudem enthält das Global Control Tile spezielle Register um die Spekulations-, Ausführungs- und Threading-Modi an die jeweiligen Anforderungen anzupassen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memory Tile ===&lt;br /&gt;
Der TRIPS-Prototyp besitzt einen 1&amp;amp;nbsp;MB große statischen [[NUCA]]-Speicher,&amp;lt;ref&amp;gt;Changkyu Kim, Doug Burger, Stephen W. Keckler: &amp;#039;&amp;#039;An adaptive, non-uniform cache structure for wire-delay dominated on-chipcaches.&amp;#039;&amp;#039; International Conference on Architectural Support for Programming Languages and Operating Systems, Oktober 2002, S.&amp;amp;nbsp;211–222.&amp;lt;/ref&amp;gt; welcher in 16 Speicher-Tiles ({{lang|en|&amp;#039;&amp;#039;Memory Tile&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;MT&amp;#039;&amp;#039;) unterteilt wird. Jedes Memory Tile enthält eine 64&amp;amp;nbsp;kB große 4-Wege [[Speicherbank]]. Zudem enthalten die Memory Tiles einen OCN-[[Router]] sowie einem MSHR mit einem einzelnen Eintrag.&lt;br /&gt;
&lt;br /&gt;
Jede Speicherbank kann über einen Konfigurationsbefehl vom OCN als L2-Cache oder als Notizspeicher konfiguriert werden. Jedes IT/DT-Paar verfügt über eine eigene Schnittstelle zum Secondary Memory System. Dadurch wird eine hohe Bandbreite vom Speicher zu den Kernen gewährleistet, um [[Streaming Media|Streaming]]-Anwendungen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;siehe auch:&amp;#039;&amp;#039; [[Datenstrom]]&lt;br /&gt;
&lt;br /&gt;
=== Network Tile ===&lt;br /&gt;
Um das Speichersystem der Memory Tiles herum sind die Network Tiles angeordnet. Die Network Tiles enthalten eine programmierbare [[Routingtabelle]], mit welchem das Ziel einer [[Speicheranforderung]] bestimmt wird. Durch die Ansteuerung der TLBs und der NTs über das Programm kann der Speicher auf verschiedene Arten aufgeteilt werden.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Der TRIPS-Prozessor verwendet eine Block-Atomare Ausführung. Dies bedeutet, dass Anweisungen nicht einzeln, sondern als Block verarbeitet werden. Ein &amp;#039;&amp;#039;Programm-Zähler&amp;#039;&amp;#039; ({{lang|en|&amp;#039;&amp;#039;program counter&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;PC&amp;#039;&amp;#039;), wobei es sich um einen [[Zeiger (Informatik)|Zeiger]] handelt, speichert die aktuell ausgeführte Stelle im Programm.&lt;br /&gt;
&lt;br /&gt;
Ein Programm-Block besteht hierbei aus dem Laden von Daten ({{lang|en|&amp;#039;&amp;#039;Fetch&amp;#039;&amp;#039;}}), dem Ausführen einer Reihe von Anweisungen ({{lang|en|&amp;#039;&amp;#039;Execute&amp;#039;&amp;#039;}}), sowie dem Zurückschreiben von Daten in den Speicher (&amp;#039;&amp;#039;Commit&amp;#039;&amp;#039;). Im Programm-Block werden bis zu 128 Befehle zusammengefasst. Sobald in einem dieser Befehle ein Fehler auftritt wird der ganze Block, ohne die Möglichkeit die Fehlerstelle exakt zu bestimmen, verworfen.&lt;br /&gt;
&lt;br /&gt;
Der TRIPS-Prozessor kann durch [[Pipeline (Prozessor)|Pipelining]]-Techniken bis zu 8 Programm-Blöcke gleichzeitig verarbeiten. Hierbei wird die [[Sprungvorhersage]] eingesetzt, um den nächsten zur Ausführung benötigten Block abzuschätzen.&lt;br /&gt;
&lt;br /&gt;
=== Datenflussausführung ===&lt;br /&gt;
Die einzelnen Anweisungsblöcke werden nicht wie in traditionellen Prozessoren in der Reihenfolge der Anweisungen verarbeitet, sondern in der Reihenfolge des [[Datenfluss]]es. Die Abhängigkeiten der Anweisungen voneinander werden direkt in den Anweisungen selbst gespeichert. Eine Anweisung wird ausgeführt sobald alle von der Anweisung benötigten Daten verfügbar sind.&lt;br /&gt;
&lt;br /&gt;
=== Sprungausführung ===&lt;br /&gt;
Die meisten Befehle des TRIPS-Prozessors sind so ausgelegt, dass ihre Ausführung vom erfolgreichen Test eines logischen Vergleichs mit einem booleschen Ergebnis abhängig gemacht werden kann. Jede Anweisung ist hierfür von einem [[Tri-State]]-[[Prädikat (Logik)|Prädikat]] abhängig. Eine Anweisung wird daher entweder immer ausgeführt, oder nur wenn das zugehörige Prädikat wahr bzw. falsch ist. Das Prädikat kann jedoch nur innerhalb eines Anweisungsblocks verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen Werte infolge eines Sprunges nicht verändert werden, so wird eine &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;-Anweisung ausgeführt, welche ein NULL-[[Token (Übersetzerbau)|Token]] bewirkt. Erreicht ein NULL-Token eine Speicher- oder Schreibanweisung, so wird diese Anweisung nicht ausgeführt, wodurch der Speicherzustand gehalten wird.&lt;br /&gt;
&lt;br /&gt;
Schwieriger ist hierbei der Zusammenhang mit dem bedingten Laden von Daten aus dem Speicher. Da der Speicher sehr langsam ist, sollten keine Daten geladen werden die nicht benötigt werden. Allerdings kann jedoch meist erst zur [[Laufzeit (Informatik)|Laufzeit]] bestimmt werden, ob dies erforderlich ist. Wird von der LSQ festgestellt, dass ein Wert geladen und zur Ausführung gebracht wurde, ohne dass eine Anweisung diesen benötigt ([[Page-Miss]]), muss der Anweisungsblock erneut ausgeführt werden. Deshalb wird ein {{lang|en|&amp;#039;&amp;#039;load dependance predictor&amp;#039;&amp;#039;}} eingesetzt, um eine Abhängigkeitsanalyse durchzuführen. Dadurch kann zumeist festgestellt werden ob ein Wert tatsächlich aus dem Speicher geladen werden muss.&lt;br /&gt;
&lt;br /&gt;
=== Datenformate ===&lt;br /&gt;
Die TRIPS Architektur unterstützt Datenbreiten mit 8 Bit (Byte, Oktett), 16 Bit (Halbwort), 32 Bit (Wort) und 64 Bit (Doppelwort). Die Interpretation der Daten als vorzeichenbehaftete Größen oder Gleitkommazahlen wird durch die Anweisungen festgelegt.&lt;br /&gt;
&lt;br /&gt;
=== Anweisungs-Formate ===&lt;br /&gt;
Der TRIPS-Prozessor verwendet spezifische [[Very Long Instruction Word|VLIW]]-Anweisungen. Die dabei verwendete Sprache wird als &amp;#039;&amp;#039;TRIPS Assembler Sprache&amp;#039;&amp;#039; ({{lang|en|&amp;#039;&amp;#039;TRIPS Assembly Language&amp;#039;&amp;#039;}}, &amp;#039;&amp;#039;TASL&amp;#039;&amp;#039;) bezeichnet. Hierbei unterscheidet man zwischen sechs verschiedenen Formaten mit unterschiedlicher Bitlängen von bis zu 32 Bit.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size:90%&amp;quot;&amp;gt;&lt;br /&gt;
┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐&lt;br /&gt;
│31│30│29│28│27│26│25│24│23│22│21│20│19│18│17│16│15│14│13│12│10│09│08│07│06│05│04│03│02│01│00│ Bit&lt;br /&gt;
├──┴──┴──┴──┴──┴──┴──┼──┴──┼──┴──┴──┴──┼──┴──┴──┴──┴──┴──┴──┴──┴──┼──┴──┴──┴──┴──┴──┴──┴──┴──┤&lt;br /&gt;
│ OPCODE             │ PR  │ XOP       │ T1                       │ T0                       │ G&lt;br /&gt;
├────────────────────┼─────┼───────────┼──────────────────────────┼──────────────────────────┤&lt;br /&gt;
│ OPCODE             │ PR  │ XOP       │ IMM                      │ T0                       │ I&lt;br /&gt;
├────────────────────┼─────┼───────────┼──────────────────────────┼──────────────────────────┤&lt;br /&gt;
│ OPCODE             │ PR  │ LSID      │ IMM                      │ T0                       │ L&lt;br /&gt;
├────────────────────┼─────┼───────────┼──────────────────────────┼──────────────────────────┤&lt;br /&gt;
│ OPCODE             │ PR  │ LSID      │ IMM                      │ 0                        │ S&lt;br /&gt;
├────────────────────┼─────┼────────┬──┴──────────────────────────┴──────────────────────────┤&lt;br /&gt;
│ OPCODE             │ PR  │ EXIT   │ OFFSET                                                 │ B&lt;br /&gt;
├────────────────────┼─────┴────────┴─────────────────────────────┬──────────────────────────┤&lt;br /&gt;
│ OPCODE             │ CONST                                      │ T0                       │ C&lt;br /&gt;
└────────────────────┴────────┬──┬──────────────┬─────────────────┴──┬───────────────────────┤&lt;br /&gt;
                              │V │ GR           │ RT1                │ RT0                   │ R&lt;br /&gt;
                              └──┴──────────────┴────────────────────┴─────┬──┬──────────────┤&lt;br /&gt;
                                                                           │V │ GR           │ W&lt;br /&gt;
                                                                           └──┴──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Anweisungsformate&lt;br /&gt;
|-&lt;br /&gt;
! Code !! Bedeutung !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| G || Global || Anweisungsformat für den globalen Kontroller&lt;br /&gt;
|-&lt;br /&gt;
| I || Instruction || Instruktionspufferformat&lt;br /&gt;
|-&lt;br /&gt;
| L || Load || Ladeanweisungsformat&lt;br /&gt;
|-&lt;br /&gt;
| S || Store || Speicheranweisungsformat&lt;br /&gt;
|-&lt;br /&gt;
| B || Branch || [[Sprunganweisung]]&lt;br /&gt;
|-&lt;br /&gt;
| C || Constant || Anweisung mit einem Datenwert&lt;br /&gt;
|-&lt;br /&gt;
| R || Read || Lesen aus dem Speicher&lt;br /&gt;
|-&lt;br /&gt;
| W || Write || Schreiben in den Speicher&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Anweisungsfelder&lt;br /&gt;
|-&lt;br /&gt;
! Code !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| OPCODE || Primary Opcode&lt;br /&gt;
|-&lt;br /&gt;
| XOP || Extended Opcode&lt;br /&gt;
|-&lt;br /&gt;
| PR || Predicate Field&lt;br /&gt;
|-&lt;br /&gt;
| IMM || Signed Immediate&lt;br /&gt;
|-&lt;br /&gt;
| T0 || Target 0 Specifier&lt;br /&gt;
|-&lt;br /&gt;
| T1 || Target 1 Specifier&lt;br /&gt;
|-&lt;br /&gt;
| LSID || Load/Sotre ID&lt;br /&gt;
|-&lt;br /&gt;
| EXIT || Exit Number&lt;br /&gt;
|-&lt;br /&gt;
| OFFSET || Branch Offset&lt;br /&gt;
|-&lt;br /&gt;
| CONST || 16-bit Constant&lt;br /&gt;
|-&lt;br /&gt;
| V || Valid Bit&lt;br /&gt;
|-&lt;br /&gt;
| GR || General Register Index&lt;br /&gt;
|-&lt;br /&gt;
| TR0 || Read Target 0 Specifier&lt;br /&gt;
|-&lt;br /&gt;
| RT1 || Read Target 1 Specifier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Cell (Prozessor)|Cell]]&lt;br /&gt;
* [[Terascale-Prozessor|Terascale]]&lt;br /&gt;
* [[SPARC-Architektur|UltraSPARC T1]] „Niagara“&lt;br /&gt;
* [[Nebenläufigkeit]]&lt;br /&gt;
* [[Parallelrechner]]&lt;br /&gt;
* [[Mehrkernprozessor]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat|TRIPS architecture|TRIPS-Prozessor}}&lt;br /&gt;
* [https://www.cs.utexas.edu/~trips/ Homepage des TRIPS Teams] (englisch)&lt;br /&gt;
* {{webarchiv|url=http://www-ali.cs.umass.edu/Scale/ |text= &amp;#039;&amp;#039;Scale&amp;#039;&amp;#039; – C, Fortran und Java Compiler für TRIPS | wayback=20110809082012|format=englisch}}&lt;br /&gt;
* [https://www.cs.utexas.edu/users/cart/trips/publications/micro06_trips.pdf &amp;#039;&amp;#039;The Distributed Microarchitecture of the TRIPS Prototype Prozessor&amp;#039;&amp;#039;.] (PDF; 429 kB) cs.utexas.edu (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikroprozessor|Tripsprozessor]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Thomas Dresler</name></author>
	</entry>
</feed>