News Prozessorgerüchte: Mehr Coffee Lake mit 2 bis 12 Threads für PC und Notebook

Iscaran schrieb:
Weil man dann ggf. bei notwendigen Kontex-Switches (und diese gibt es zuhauf) halt mehrere hundert CPU-Zyklen warten muss bis man diese dann abarbeiten könnte.

Kontext-Switches gibt es in Multitasking-Umgebungen immer, wenn zwischen Tasks gewechselt wird.
Es geht mir ja darum, den Wechsel vom user-mode (ring 3) in den kernel mode (ring 0) zu beschleunigen.

https://en.wikipedia.org/wiki/Context_switch

Iscaran schrieb:
scheinen AMD CPUs eben NUR innerhalb ihres Kontextes zu spekulieren

Ein Kontext-Switch ist nicht gleichbedeutend mit einem Wechsel des ring.
https://en.wikipedia.org/wiki/Context_switch#User_and_kernel_mode_switching

AMD verhindert möglicherweise das Spekulieren über verschiedene Ringe.

https://en.wikipedia.org/wiki/Kernel_mode
 
Zuletzt bearbeitet:
Iscaran schrieb:
Aber ein Ring-Wechsel ist immer automatisch AUCH ein Context Switch AFAIK ?
https://en.wikipedia.org/wiki/Context_switch
.

Nein. Erst seit Meltdown bei Intel.;)
Man hat ja gerade deshalb den Kernel-Adressraum in den User-Prozess-Adressraum eingeblendet, um den Context-Switch zu vermeiden.

https://cs.stackexchange.com/questions/83246/do-system-calls-always-means-a-context-switch/83249

-> 2. Antwort
Thus a system call is really just a change of privilege, not of process.
 
Aber ein Ring-Wechsel ist immer automatisch AUCH ein Context Switch AFAIK ?

Also bin jetzt wirklich kein Experte aber meines Wissens nach ist jeder Systemaufruf wenn er von einem anderen Ring als Ring0 aus erfolgt IMMER ein Kontextswitch. Entweder steht also auf Wiki ein totaler Mist was das betrifft oder es ist ein zu spezielles Problem als dass ich hier noch weiter mitreden kann.
https://de.wikipedia.org/wiki/Ring_(CPU)
"Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen Kontextwechsel, der einige Rechenzeit in Anspruch nimmt."

https://de.wikipedia.org/wiki/Systemaufruf
EDIT: "Muss ein im Benutzer-Modus laufender Prozess eine Aufgabe erfüllen, die nur in einem höher privilegierten Ring möglich ist, wie z. B. der Zugriff auf die Festplatte oder andere Hardware, kann er dies dem Kernel durch einen Systemaufruf mitteilen und so einen Kontextwechsel veranlassen." /EDIT

Kontext-Wechsel sind eben noch mehr Dinge und nicht nur Systemaufrufe (system calls)
(siehe das "oder bei systemaufrufen)
https://de.wikipedia.org/wiki/Kontextwechsel
"Kontextwechsel oder Taskswitching (englisch context switch) nennt man den Vorgang in einem Betriebssystem, bei dem die Bearbeitung des aktuellen Prozesses (oder auch Threads, Tasks oder Programms) unterbrochen wird (z. B. nach einer festgelegten Zeitspanne durch einen Timer-Interrupt oder bei Systemaufrufen) und zu einer anderen Routine gewechselt wird."

Genau darum gehts bei Meltdown:
https://de.wikipedia.org/wiki/Systemaufruf
"Muss ein im Benutzer-Modus laufender Prozess eine Aufgabe erfüllen, die nur in einem höher privilegierten Ring möglich ist, wie z. B. der Zugriff auf die Festplatte oder andere Hardware, kann er dies dem Kernel durch einen Systemaufruf mitteilen und so einen Kontextwechsel veranlassen."

Die Intel CPUs führen aber Spekulativ Prozesse aus die so einen Kontextwechsel brauchen - OBWOHL der Prozess selbst nur Ring3 z.b. Ist. Genau das ist das Problem das Meltdown verursacht. AMD CPUs führen aber nur Spekulativprozesse im selben Privileg aus (anders würde die Erklärung zu Meltdown hier keinen Sinn ergeben:
https://www.amd.com/en/corporate/speculative-execution
"...AMD processors are not susceptible due to our use of privilege level protections within paging architecture..."

Auf anderen Seiten ist ja ähnliches nachzulesen und auch dass AMD CPUs viel "weniger" aggressiv Spekulativ Ausführen passt hier dazu. Wenn ich eben bestimmte Zweige im Spekulationsbaum nicht ausführe weil ein Kontextwechsel angefragt werden muss bin ich eben vor Meltdown sicher. (We believe...) Dass formuliert man so, weil nicht ausgeschlossen werden kann dass es eventuell doch noch irgendeinen anderen Umweg gibt mit dem bei den Risikobehafteten Spekulationen nicht doch irgendwie etwas gemacht wird dass hier nicht gemacht hätte werden sollen.

kisser schrieb:
Nein. Erst seit Meltdown bei Intel.;)

"Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen Kontextwechsel, der einige Rechenzeit in Anspruch nimmt."
EDIT:https://de.wikipedia.org/wiki/Ring_(CPU)
"In CPU und ggf. MMU müssen Schaltungen bestehen, die bei jedem Befehl bzw. Speicherzugriff prüfen, ob dieser im aktuellen Ring erlaubt ist. Falls ein Prozess etwas nicht Erlaubtes durchführen möchte, wird er unterbrochen und eine Betriebssystem-Routine aufgerufen, deren Aufgabe es ist, entsprechend zu reagieren."

Genau DAS fehlt bei Intel CPUs. Bei Spekulativen Ausführungen /EDIT

Ja - zumindest nahm man das bisher an - aber Intel CPUs folgen nicht diesem Bauprinzip (bei Spekulativer Exekution).
Das ist eigentlich die Ursache warum Meltdown funktioniert und Intel betrifft aber AMD CPUs nicht und nur eine EINZIGE ARM CPU und das auch noch in abgeschwächter Form.

Der Patch gegen Meltdown patcht übrigens NICHT dieses Grundlegende Problem der Intel CPUs - er verhindert nur dass Intel CPUs dazu kommen Speculative Exekutionen über Ring-Grenzen hinweg auszuführen in dem vor jedem Befehl das komplette Kernel-Mapping entfernt wird, so dass die Spekulative Exekution über den User-Space hinaus nicht ausgeführt werden kann !
Das ist also theoretisch denkbar dass man den KPTI-Patch gegen Meltdown doch noch wieder umgehen kann, und man dann @Intel wieder in ein Problem läuft.

Das ist schon ein Unterschied in meinen Augen.

Aber ich denke wir sollten diese Diskussion hier endgültig aus dem Topic auslagern - hier geht es eigentlich um die neuen Coffee Lakes...
 
Zuletzt bearbeitet: (EDITS: Vergessen Copy+Paste)
Iscaran schrieb:
Also bin jetzt wirklich kein Experte aber meines Wissens nach ist jeder Systemaufruf wenn er von einem anderen Ring als Ring0 aus erfolgt IMMER ein Kontextswitch. Entweder steht also auf Wiki ein totaler Mist was das betrifft oder es ist ein zu spezielles Problem als dass ich hier noch weiter mitreden kann.
https://de.wikipedia.org/wiki/Ring_(CPU)
"Jeder Wechsel von einem Ring zum anderen erfordert in der CPU einen Kontextwechsel, der einige Rechenzeit in Anspruch nimmt."

Der Begriff Kontextwechsel wird hier "falsch" benutzt.
"Falsch" deshalb, weil moderne CPUs hier eben keinen Kontext-Switch durchführen (der Prozess-Adressraum wird ja nicht gewechselt!), sondern nur der Privilege-Level in der CPU geändert wird (siehe unten). Vereinfacht gesprochen.:D

http://wiki.osdev.org/System_Call

http://wiki.osdev.org/Sysenter

Intel:
Sysenter/Sysexit:
"Executes a fast call to a level 0 system procedure or routine. SYSENTER is a companion instruction to SYSEXIT.
The instruction is optimized to provide the maximum performance for system calls from user code running at privilege level 3 to operating system or executive procedures running at privilege level 0." -- Intel IA-32 (64) programming manual, volume 2B.
...
AMD:
"SYSCALL and SYSRET are low-latency system call and return instructions. These instructions assume the operating system implements a flat-memory model, which greatly simplifies calls to and returns from the operating system. This simplification comes from eliminating unneeded checks, and by loading pre-determined values into the CS and SS segment registers (both visible and hidden portions). As a result, SYSCALL and SYSRET can take fewer than one-fourth the number of internal clock cycles to complete than the legacy CALL and RET instructions. SYSCALL and SYSRET are particularly well-suited for use in 64-bit mode, which requires implementation of a paged, flat-memory model." -- AMD System programming
 
Zuletzt bearbeitet:
Gibt es keinen 8th Gen Nachfolger des i7-7820K für mobile Arbeitstiere? Die Intel NUC lassen ebenfalls auch sich warten und der leistungsstärkere i7-8650U scheint in keinem Laptop eingesetzt zu werden, was doch schade ist.
 
Zurück
Oben