GPP-Performanzsteigerung

Interne Architektur:

Speicherhierarchie in einem Rechner:

GPP: Pipelining

Konzept

Befehlspipeline eines Rechners:
Die Befehlsbearbeitung wird in n funktionelle Einheiten gegliedert. Ausführung geschieht zeitlich überlappend.

Pipelining:
die Zerlegung einer Maschinenoperation in mehrere Phasen, die dann von Verarbeitungseinheiten taktsynchron bearbeitet werden, wobei jede Verarbeitungseinheit genau eine spezielle Teiloperation ausführt.

Pipeline-Stufe: Jede Stufe der Pipeline. Pipeline-Stufen werden durch getaktete Pipeline-Register (latches ) getrennt. 指令数/几个时钟周期

Pipeline-Maschinentakt: die Zeit, um einen Befehl eine Stufe weiter durch die Pipeline zu schieben 流水线机器周期是将指令移动到下一级流水线所花费的时间。

Latenz: die Zeit, um alle k Pipeline-Stufen zu durchlaufen. 从头到尾执行一条指令所需要的时间称为延迟latency

Durchsatz: die Anzahl der Befehle, die eine Pipeline pro Takt verlassen können. Dieser Wert spiegelt die Rechenleistung einer Pipeline.

Exemplarische Befehlsausführung

Verarbeitungsphasen eines Befehls am Beispiel

  • Annahme: einfache Akkumulatormaschine

  • Befehlsformat

Struktur:

  • pc: program counter
  • ip: instruction pointer
  • ir: instruction register
  • or: operand register
  • ac: accumulator
  1. Befehlsholphase (instruction fetch, IF)

  2. Befehl dekodieren (instruction decode, ID)

  3. Operand holen (operand fetch, OF)

  4. Befehl ausführen (instruction execute, EX)

  5. Befehlszähler inkrementieren

    • kann als separater Schritt oder parallel erfolgen

  6. Resultat: Ergebnis 225 steht im accumulator ac

没有流水线的情况:

  • Auslastung bei serieller Ausführung:
    • Hauptspeicher: 4/7 = 57%
    • CPU: 5/7 = 71%

使用流水线:

Überlappung der Ausführungsphase mit dem Holen des nächsten Befehls:

  • Es werden keine zusätzlichen Ressourcen benötigt
  • Eine zeitliche Einsparung von 2 Takten pro Befehl => 28,6 % Leistungssteigerung

  • Während eines Speicherzugriffs wird bereits der nächste Speicherzugriff vorbereitet

  • Ebenfalls Parallel zum Speicherzugriff: Kalkulation des Ergebnisses
  • Nur noch 5 Takte notwendig, keine zusätzlichen Kosten

  • Auslastung bei überlappter Ausführung:
    • Hauptspeicher: 4/5 = 80%
    • CPU: 4/5 = 80%

5-stufigen Befehlspipeline

  • Instruction Fetch
    Der Befehl, der durch den Befehlszähler adressiert ist, wird aus dem Hauptspeicher geladen. Der Befehlszähler wird weitergeschaltet

  • Decode/Operand fetch

    Prozessorinterne Steuersignale werden erzeugt aus dem Operationscode des Maschinenbefehls (1. Takthälfte). 处理器内部的控制信号由机器命令的操作代码生成(周期的前半部分)。

    Die Operanden werden aus Registern bereitgestellt (2. Takthälfte)

  • ALU Operation
    Die Operation wird ausgeführt.

    Bei Lade-/Speicherbefehlen wird die effektive Adresse berechnet 为加载/存储命令计算有效地址

  • memory access
    Der Speicherzugriff wird durchgeführt (Cache oder Hauptspeicher)

  • Write Back
    Das Ergebnis wird in ein Register geschrieben (1. Takthälfte)

image-20200610131835170

RISC Prozessor 5 stufige pipeline:

Beispiel: Optimales Pipelining

  • Alle Operationen arbeiten auf Registern (single cycle execution)
  • Zu jedem Taktzyklus wird eine Instruktion beendet
    • Latenz bleibt identisch aber Durchsatz wird erhöht (5x)

Pipeline Konflikte

  • Die nächste Instruktion im Befehlsstrom im zugewiesenen Taktzyklus wird nicht ausgeführt
  • Unterbrechung des taktsynchronen Durchlaufs durch die einzelnen Stufen der Pipeline Verursacht
  • Leistungseinbußen, da Durchsatz reduziert wird

Strukturkonflikte

  • Ergeben sich aus Ressourcenkonflikten
    • Die Hardware kann nicht alle mögliche Kombinationen von Befehlen unterstützen, die sich in der Pipeline befinden können 如果某种指令组合因为资源冲突而不能正常执行,则称该处理机有结构冲突(比如说,两条指令在同一周期同时访问内存)
  • Beispiel: Gleichzeitiger Schreibzugriff zweier Befehle auf eine Registerdatei mit nur einem Schreibeingang. (Zwei Befehle zugreifen auf eine Register gleichzeitig)

Datenkonflikte

  • Ergeben sich aus Datenabhängigkeiten zwischen Befehlen im Programm
  • z.B. zweite Befehl ist abhängig von vorherige Befehl

Steuerkonflikte

  • Treten bei Verzweigungsbefehlen und anderen Instruktionen auf, die den Befehlszähler verändern 流水线遇到分支指令和其他会改变PC值的指令所引起的冲突

Auflösung von Pipeline Konflikten

Softwarebasierend:

  • Aufgabe des Compilers:
    • Erkennen von Datenkonflikten
    • Einfügen von Leeroperationen nach jedem Befehl, der einen Konflikt verursacht (NOP)
  • Statische Verfahren:
    • Instruction Scheduling, Pipeline Scheduling
    • Eliminieren von Leeroperationen
    • Umordnen der Befehle des Programms (Code-Optimierung)

Hardware-Lösungen (Dynamische Verfahren):

  • Erkennen von Konflikten
    • Entsprechende Konflikterkennungslogik notwendig!
    • Techniken
      • Leerlauf der Pipeline (Stalling)
      • Forwarding

Beispiel: Load Pipeline

Beispiel: Branch and Link Pipeline

Beispiel: Pipeline - Datenkonflikte

  • ADD R1, R2, R3
  • AND R6, R1, R8
  • XOR R9, R1, R11

Superpipelining

Begriffe: Tiefe Pipeline, aber keine superskalaren Einheiten

Q&A

Was ist Pipelining?

Der Maschinenbefehle mit Pipelining wird in Teilaufgaben zerlegt, die für mehrere Befehle parallel durchgeführt werden

Wie ist die 5-stufige DLX Pipeline aufgebaut?

Welche Latenz hat die Pipeline bei einem Takt pro Stufe?

Was ist der ideale Durchsatz des Prozessors? Kann er erreicht werden?

Welche Konflikte können auftreten?

Daten, Struktur, SteuerKonflikte

Wie können diese gelöst werden?

Software: einfügt von eine Leeroperation nach jedem Befehl, der ein Konflikt verursacht
Instruktion Scheduling und Pipelining Scheduling

Hardware: Leerlauf der Pipeline (Stalling)

Warum gibt es keine 50-stufigen Pipelines?

je mehr Stufe, destro mehr Latenz, wegen der Pipelining register, und auch verursacht Konflikte

Superskalarität (超标量)

Begriffe

Superpipeline: Tiefe Pipeline, aber keine superskalaren Einheiten

superskalar: Kann mehr als eine Instruktion/Zyklus ausführen

Out-of-Order: Kann Instruktionen außerhalb der Programmreihenfolge ausführen

Spekulation: Führt Instruktionen auch nach Branches weiter aus, die später eventuell annulliert werden müssen

  • Den Ausführungseinheiten kann mehr als ein Befehl pro Takt zugewiesen werden
  • Die Zuweisung der Befehle erfolgt in Hardware durch einen dynamischen Scheduler
  • Die dynamische Zuweisung von Befehlen führt zu einem komplexen Hardware-Scheduler.

Pipelining nutzt zeitliche Parallelität (temporal parallelism)

  • 提高性能: mit einer längeren Pipeline und höherer Taktfrequenz

Superskalar nutzt räumliche Parallelität (spatial parallelism).

  • 提高性能: mit Hilfe von mehr Ausführungseinheiten und einer hohen dynamischen Zuweisungsrate

Zwei Befehle können parallel ausgeführt werden, wenn:

  • Beide einfache Instruktionen sind
  • Instruktion 1 kein Sprung ist
  • Wenn das Ziel von Instruktion 1 nicht die Quelle von Instruktion 2 ist
  • Wenn das Ziel von Instruktion 1 nicht das Ziel von Instruktion 2 ist

Wenn zwei Befehle nicht parallel ausgeführt werden können:

  • Instruktion 1 in erster Pipeline abarbeiten
  • Instruktion 2 im nächsten Zyklus abarbeiten
    • Wenn möglich, zusammen mit der darauf folgenden Instruktion

Dynamisches Scheduling - Prozessorpipeline

Superskalarprinzip und dynamisches Scheduling - Zusammenfassung

  • Die Zuweisung erfolgt dynamisch durch die Hardware 分配是由硬件动态进行的
  • Es kann mehr als ein Befehl zugewiesen werden 可以分配多个命令
  • Die Anzahl der zugewiesenen Befehle pro Takt wird dynamisch von der Hardware bestimmt und liegt zwischen null und der maximalen Zuweisungsbreite 每个周期分配的命令数由硬件动态确定,并且在零和最大分配宽度之间
  • Komplexe Hardware für Zuweisungslogik erforderlich
  • Mikroarchitektur bestimmt superskalare Eigenschaft

Q&A

Was ist der Unterschied zwischen Skalar und Superskalar?

Der Unterschied zwischen skalaren und superskalaren Prozessoren liegt in der Anzahl der Befehle die gleichzeitig geholt, decodiert, ausgeführt und in die Zielregister zurück geschrieben werden können.

Bei superskalaren wird Prozessoren teilweise hardwareseitig die Befehlsreihenfolge verändert, um eine höhere Parallelität zu erreichen.

Welche zusätzlichen Einheiten werden benötigt? Welche Funktion habe diese?

Welche Probleme ergeben sich durch parallele Pipelines?

Häufig gibt es noch mehr Ausführungseinheiten, um potenzielle Strukturkonflikte zu umgehen

Was ist dynamisches Scheduling?

Dynamisches Scheduling ist eine hardwaregestützte Verfahren der Rechnerarchitektur, um die Funktionseinheiten eines Prozessors optimal auszulasten und parallel arbeiten zu lassen.

Was ist spekulative Ausführung?

spekulative Ausführung ist eine Optimierungstechnik , führt Instruktionen auch nach Branches weiter aus, die später eventuell annulliert werden müssen

Einordnung nach Flynn?

SSID…

Very Long Instruction Word (VLIW)

Architekturtechnik, bei der ein Compiler eine feste Anzahl von einfachen, voneinander unabhängigen Befehlen zu einem Befehlspaket zusammenpackt und in einem Maschinenbefehlswort meist fester Länge speichert.

Das Maschinenbefehlsformat eines VLIW-Befehlspakets kann mehrere hundert Bits lang sein, in der Praxis sind dies zwischen 128 und 1024 Bits.

Alle Befehle innerhalb eines VLIW-Befehlspakets müssen unabhängig voneinander sein und eigene Opcodes und Operandenbezeichner enthalten. VLIW指令包中的所有指令必须彼此独立,并包含其自己的操作码和操作数标识符。

  • Die Anzahl der Befehle in einem VLIW-Befehlspaket ist in der Regel fest.
    • Wenn die volle Bandbreite eines VLIW-Befehlspakets nicht ausgenutzt werden kann, muss es mit Leerbefehlen aufgefüllt werden.
  • Problem bei VLIW-Architekturen:
    • volle Parallelität nicht immer ausnutzbar → Befehlswort teilweise unnötig lang 完全并行并不总是可用→命令字有时会不必要地长
    • Neuere VLIW-Architekturen sind in der Lage, durch ein komprimiertes Befehlsformat auf das Auffüllen mit Leerbefehlen zu verzichten. 由于压缩的命令格式,较新的VLIW架构无需填充空命令即可执行操作。
  • Lösung: Instruction-Packing: Instruktionswort enthält mehrere Teil-Instruktionen

Befehlswort enthält bis zu 8 32-Bit-Befehle = Befehlspaket

  • ein Bit gibt an, ob nächster Befehl zum selben Befehlspaket gehört, 其中一位,用来指示下一个指令是否在当前包里
  • erlaubt Befehle unterschiedlicher Bitbreite

Die Befehle in einem solchen VLIW-Befehlswort werden dann gleichzeitig geholt, decodiert, zugewiesen und ausgeführt.

Vom Compiler generiertes Scheduling zur Laufzeit von Hardware durchzuführen

VLIW-Befehl vs. CISC und SIMD-Befehl

Unterschied zu einem CISC-Befehl:

  • CISC-Befehl kann mit einem Opcode mehrere, eventuell sequenziell nacheinander ablaufende Operationen codieren CISC命令可以使用操作码对几种操作进行编码,这些操作可以是顺序的

Unterschied zu einem SIMD-Befehl:

  • SIMD-Befehle sind die Multimediabefehlen, bei denen ein Opcode eine gleichartige Operation auf einer Anzahl von Operanden(paaren) auslöst.
  • Die Operationen innerhalb eines VLIW-Befehlspakets sind in der Regel verschiedenartig.

Q&A

Wo findet die Parallelisierung statt?

Wie unterscheidet sich die Instruktion?

Die Befehle in einem solchen VLIW-Befehlswort werden dann gleichzeitig geholt, decodiert, zugewiesen und ausgeführt.

Wie muss die Hardware aufgebaut sein?

Single Instruction Multiple Data (SIMD)

Gleiche Instruktion auf mehreren Daten

  • Multimediaanwendungen
    • Viele Daten gleichzeitig
    • Viele Parallelisierungsmöglichkeiten

Reduziert Zyklenzahl für gleiche Menge von Daten

Vektorisierung von Daten

  • Parallele Berechnung der Vektoren
  • Speichern der einzelnen Daten in Register

Schwer zu implementieren

  • Schwer automatisch Code zu finden, der SIMD gut ausnutzt
    • Code von Hand schreiben/optimieren

Sub-Word Execution Model

  • 32/64-Bit Register und ALUs in kleinere Einheiten auftrennen
  • Instruktionen arbeiten parallel auf den Einheiten -> SIMD

SIMD – Sub-Word Execution Model

Beispiel: 64-Bit Datentyp in kleinere Einheiten auftrennen

Instruktionen parallel auf kleineren Ausführungseinheiten

Beispiel 1: Addition

Instruktionen parallel auf 4 Ausführungseinheiten

Beispiel 2: Permutation

Vertauschen der Reihenfolge der Half-Words

image-20200611194256829

Q&A

Welche Funktion haben SIMD instruktionen?

Gleiche Instruktion auf mehreren Daten

Welche Parallelität wird ausgenutzt?

Instruktionen arbeiten parallel auf den Einheiten 不确定

In welchen Anwendungen macht SIMD Sinn?

Multimedia, z.B. Audio, Videokonferenzen

Welche bekannten Beispiele gibt es für SIMD-Funktions-Einheiten?

MMX (Intel), SSE (Intel), VIS (UltraSparc), MDMX (MIPS), MAX-2 (HP)

Caches

Caches reduzieren unperformante Hauptspeicherzugriffe, durch Einsatz schnellerer Zwischenspeicher

Das Cache ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen.

Caches - Speicherhierarchie

  • In der Regel besitzt ein Rechner einen getrennten Cache für Instruktionen (Instruktionscache) und für Daten (Datencache)
  • Cache Level: Level 1 bis Level N bezeichnet die Cache Speicher beginnend mit dem schnellsten Speicherzugriff

Caches - Aufbau

Cache besteht aus Controller und mehreren Sets (Cache Lines)

Parameter:

  • Wordbreite (M)
  • Words-per-Line (WpL)
  • Linesize: Linesize [bit] = WpL * M
  • Assoziativität (N)
  • Anzahl Cache Sets (S)
  • Cache-Größe: Größe [bit] = S N WpL * M

Verhaltensparameter:

  • Replacement-Strategy
  • Cache-Strategy

Cache Einträge

Definitionen:

  • Cache Hit := Daten befinden sich im Cache und sind sofort verfügbar
  • Cache Miss := Daten sind nicht im Cache und müssen aus dem Hauptspeicher (oder der nachfolgenden Cache Ebene) geladen werden
  • Hit-Rate := Verhältnis zwische Zahl der Cache Hits und der Gesamtzugriffe

Ein Blockrahmen enthält mehrere Informationen:

Caches - Lesezugriff

Lese Datum aus dem Arbeitsspeicher unter Adresse:

CPU überprüft, ob eine Kopie der Hauptspeicherzelle address im Cache abgelegt ist

  • ja(cache hit)

    Die CPU entnimmt (取出) das Datum aus dem Cache.

  • nein(cache miss)
    die CPU greift auf den Arbeitsspeicher zu, lädt den umgebenden Block des Datums in den Cache und lädt das Datum von dort in die CPU

当CPU读数据时,发生cache缺失,这种情况下都会分配一个cache line缓存从主存读取的数据。默认情况下,cache都支持读分配。

Caches – Schreibzugriff

Was passiert beim Schreiben?

  • Daten im Cache und Hauptspeicher sind so lange identisch, wie der Prozessor die Daten nicht aktualisiert
  • Bei einer Aktualisierung wird ein sogenanntes dirty bit gesetzt, dass auf die Modifikation hinweist.
  • Aktualisierung im Hauptspeicher hängt von der Schreibstrategie ab.

当CPU写数据发生cache缺失时,才会考虑写分配策略。当我们不支持写分配的情况下,写指令只会更新主存数据,然后就结束了。当支持写分配的时候,我们首先从主存中加载数据到cache line中(相当于先做个读分配动作),然后会更新cache line中的数据。

Cache更新策略(Cache update policy)

cache更新策略是指当发生cache命中时,写操作应该如何更新数据。cache更新策略分成两种:写直通和回写。

写直通(write through)

当CPU执行store指令并在cache命中时,我们更新cache中的数据并且更新主存中的数据。cache和主存的数据始终保持一致

写回(write back)

当CPU执行store指令并在cache命中时,我们只更新cache中的数据。并且每个cache line中会有一个bit位记录数据是否被修改过,称之为dirty bit(翻翻前面的图片,cache line旁边有一个D就是dirty bit)。我们会将dirty bit置位。主存中的数据只会在cache line被替换或者显示的clean操作时更新。因此,主存中的数据可能是未修改的数据,而修改的数据躺在cache中。cache和主存的数据可能不一致。

同时思考个问题,为什么cache line大小是cache控制器和主存之间数据传输的最小单位呢?这也是因为每个cache line只有一个dirty bit。这一个dirty bit代表着整个cache line是否被修改的状态。

Cache miss, Heiße und kalte Caches

Heißer Cache: Cache arbeitet optimal, nur wenige Misses

Kalter Cache: hohe Missrate

Es werden drei Arten von Cache Misses unterschieden:

  • Capacity:
    • Daten wurden verdrängt, weil der Cache zu klein ist.
    • Abhilfe: Vergrößerung des Caches
  • Conflict:
    • In einem Set ist nicht ausreichend Platz obwohl andere Sets frei sind.
    • Abhilfe: Erhöhung der Assoziativität
  • Compulsory:
    • Beim erstmaligen Zugriff befinden sich die Daten noch nicht im Cache.
    • Abhilfe: Spekulatives Laden durch Prefetcher

Caches - Verdrängungsstrategien

Szenario: Cache miss, alle Speicherbereiche des Caches belegt 高速缓存的所有内存区域均被占用

Ausweg: verdränge einen Block aus dem Cache, lade an seine Stelle den gerade benötigten Block阻止某一块,加载现在需要的那块

FIFO (First-In-First-Out):

  • schlechte Strategie, da der Block, der zuerst geladen wurde, als erstes überschrieben wird
  • Blöcke werden überschrieben, die häufig gebraucht werden

Optimale Ersetzungsstrategie:

  • der Block, dessen Daten in Zukunft am längsten (zeitlich) nicht mehr benutzt werden, wird ausgetauscht 把未来长时间不用的block替换
  • Nachteil: diese Information steht meist nicht zur Verfügung

LRU (Least-Recently-Used):

der Block, der in der Vergangenheit am längsten (zeitlich) nicht mehr gebraucht wurde, wird ausgetauscht

Random

Zufällige Auswahl des Blockes, der ersetzt wird

Caches - Organisation

1. Variante: Direct Mapped

  • Jede Adresse ist nach einem festen Schema direkt einer Cachezeile zugeordnet.
  • Einfach, aber niedrige Hit-Rate
  • Nachteil
    • keine Flexibilität: Verdrängung kann auftreten(发生) wenn der Cache nicht voll ist.

2. Variante: Voll-Assoziativ

  • Jeder Block kann in jeder Cachezeile gespeichert werden.
  • Sehr hohe Hit-Rate
  • Nachteil: für das Auffinden eines Blocks im Cache muss das Tag jeder Zeile verglichen werden (hoher Aufwand, komplex) 为了在缓存中找到一个块,必须比较每行的标签(费力,复杂)

3. Variante: n-Wege Assoziativ

  • Kombination aus Voll-Assoziativ und direct-mapped Cache
  • Speicheradresse wird in 1 Set des Caches gemapped
    • Set besteht aus mehreren Cache Lines
    • Vergleich nur Innerhalb des Sets
  • Vergleichbar zu n unabhängigen Caches 相当于n个独立的缓存
  • Beispiel: 2 Wege Assoziativ, jeder Index hat zwei Möglichkeiten

Caches – Missrate Vergleich

Q&A

Was ist ein Cache?

Caches reduzieren unperformante Hauptspeicherzugriffe, durch Einsatz schnellerer Zwischenspeicher

Welche Funktion hat ein Cache in einem 1-Computer System? Welche in einem 2-Computer-System?

Welche Cache-Stragegien gibt es? Welche Vorteile hat welche Strategie?

Direct Mapped: Jede Adresse ist nach einem festen Schema direkt einer Cachezeile zugeordnet. Einfach

Voll-Assoziativ: Jeder Block kann in jeder Cachezeile gespeichert werden. Sehr hohe Hit-Rate

n-Wege Assoziativ: Kombination aus Voll-Assoziativ und direct-mapped Cache. Vergleich nur Innerhalb des Sets

Welche Schreib-Strategien gibt es? Welche machen Sinn?

Wie sind Offset, Index & Tag aufgeteilt?

image-20200611194256829

  • 我们一共有8行cache line,cache line大小是8 Bytes。所以我们可以利用地址低3 bits(如上图地址蓝色部分)用来寻址8 bytes中某一字节,我们称这部分bit组合为offset

  • 同理,8行cache line,为了覆盖所有行。我们需要3 bits(如上图地址黄色部分)查找某一行,这部分地址部分称之为index

  • 每一个cache line都对应唯一一个tag,tag中保存的是整个地址位宽去除index和offset使用的bit剩余部分

Was ist Cache Kohärenz?

Cache-Kohärenz ist die Regelmäßigkeit oder Konsistenz von Daten, die im Cache-Speicher gespeichert sind.

Multiple Instruction Multiple Data (MIMD)

Im Gegensatz zu SIMD-Prozessoren können MIMD-Prozessoren mehrere Programme auf mehreren Prozessoren ausführen => Flexibilität

SIMD vs MIMD

  • SIMD Computer brauchen weniger Hardware als MIMD Computer => Eine Steuer-Einheit
  • SIMD Prozessoren sind speziell designed, sind teuer und haben lange Design-Zyklen
  • Nicht alle Applikationen passen zu SIMD

MIMD Prozessor Klassifizierung

Shared Memory: Uniform Memory Access (UMA), gemeinsamer Adressbereich

Distributed Memory:

  • Speicher ist verteilt für jeden Prozessor, um die Skalierbarkeit zu verbessern
  • No Remote Memory Access (NoRMA): kein Prozessor kann direkt den Speicher eines anderen Prozessors ansprechen, Kommunikation erfolgt über dedizierte Kommunikation (Message Passing). Jeder Core hat seinen eigenen Adressbereich. 没有处理器可以直接寻址另一个处理器的内存,而是通过专用通信(消息传递)进行通信。 每个内核都有自己的地址范围。
  • Non-Uniform Memory Access (NUMA): Speicher ist verteilt, aber alle Cores können auf den Speicher der anderen Cores zugreifen. Gemeinsamer Adressbereich.

Interconnect in MIMD Architekturen

  • Kommunikation über gemeinsame Variable oder Nachrichten
  • Kopplung über Verbindungs-Netzwerke
  • Typischerweise Parallelrechner (Einsatz z.B. Wettersimulationen, Chemie etc.)

MIMD Design Issues

Design sind sehr komplex, da Hardware und Software Probleme involviert sind.

Wichtige Probleme: Interconnect Struktur, Inter-Prozessor Kommunikationsprotokolle, Speicher Hierarchie, Prozessor design…

Q&A

Welche Vorteile bringt MIMD?

MIMD-Prozessoren können mehrere Programme auf mehreren Prozessoren ausführen => Flexibilität

Welche Art der Klassifizierung gibts es bei MIMD?

shared Memory: Es gibt gemeinsame Adressbereich

distribute Memory: Speicher ist verteilt für jeden Prozessor

Wie grenzen sich Superskalar, SIMD, VLIW und MIMD ab? 如何区分