Freitag, 25. November 2011

Kommunikation innerhalb der PS3 [Tag 2]

Gestern habe ich die Begriffe PPE(Power Processor Element) und SPE(Synergistic Processing Elements) eingeführt. Heute werde ich die Kommunikation zwischen diesen CPUs und wie sie genau funktioniert näher erläutern.





Als erstes, lasst uns dieses Bild betrachten

















Als erstes sehen wir auf diesem Bild einige Sachen die wir schon kennen, den PPE und die 8 SPEs.
Wir werden das "Coherent Interface" und das "XDR RAM Interface" ignorieren aber ich werde den Rest erklären und wie alles zusammenwirkt.

Wie man sehen kann, kommunizieren die SPEs über etwas, was sich EIB(Element Interconnect Bus) nennt. Um zu kommunizieren benutzen sie eine Technik, die sich DMA(Direct Memory Access) nennt. Der EIB ist nur unsere Datenautobahn, nichts besonderes und nichts worüber ich jetzt reden werde. DMA ist eine Technik, die es dem SPE erlaubt Daten zu verarbeiten(bzw. irgendetwas) und gleichzeitig mit anderen SPEs/dem PPE zu kommunizieren, also ziemlich nützlich. Der SPE benutzt den MFC(Memory Flow Controller), welchen ihr auf dem Bild über jedem SPE sehen könnt, um zu kommunizieren.
Der SPE hat nur zwei Funktionen, die er benutzt, um mit dem MFC zu kommunizieren. Diese sind mfc_get und mfc_put, also Daten wegschicken oder Daten empfangen - relativ simpel.
Zusätzlich zum MFC könnt ihr über jedem SPE einen LS(Local Storage) sehen. Das ist der Ort, wo jeder SPE seine Daten speichert, die er grade benötigt(quasi sein RAM).

Ich hoffe ihr langweilt euch noch nicht zu sehr, denn eine Sache kommt noch: Mailboxen.
Jeder SPU(Synergistic Processing Unit - der wirkliche Prozessor des SPE) hat eine Mailbox für eingehende Nachrichten und eine Mailbox für ausgehende Nachrichten. Die für ausgehende Nachrichten kann maximal eine Mail enthalten, die für eingehende maximal 4. Jede Mail kann eine maximale Länge von 4 bytes haben, also z.B. 1111 1011 1111 1101 1111 1101 1011 1111

Ich wette, dass viele Leute nicht verstanden haben was Mathieulh mit Mailbox meinte als er vor ein paar Monaten darüber sprach, wie man per Assembler Code Daten an seine Mailbox senden kann. Jetzt wisst ihr es :) Ein aktuelles Beispiel ist auch sein metldr exploit:
Step1) [...] "metadata from the mailbox(which is sent over by the ppu)"[...]

Der Rest: Natürlich war das nur ein grober Überblick, die technischen Details folgen bei gegebenem Anlass später. Ich habe den PPE nicht erwähnt im Beispiel aber um es ganz einfach zu machen: Der PPE ist immer der "Mann in der Mitte", d.h. die Kommunikation läuft so gut wie immer so ab: SPE - PPE -SPE. Zwei SPEs können auch direkt kommunizieren, aber das jetzt zu erklären wäre mühsam und würde uns nicht weiter bringen. Das werde ich jetzt also nicht tun.

Falls ihr noch lest: Ich hoffe dieser Post war nützlich. Ich denke diese Basics sind sehr wichtig.

- Was in den nächsten Posts folgt: Wir booten unsere Ps3! Boot Reihenfolge, Prozesse und der ganze Kram.

1 Kommentar:

  1. [quote]Zusätzlich zum MFC könnt ihr über jedem SPE einen LS(Local Storage) sehen. Das ist der Ort, wo jeder SPE seine Daten speichert, die er grade benötigt(quasi sein RAM)[/quote]

    wenn du spe als cpu siehst, dann sind die ls wohl eher der cache

    AntwortenLöschen