AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Abwärts kompatibel bis Windows ...?
Thema durchsuchen
Ansicht
Themen-Optionen

Abwärts kompatibel bis Windows ...?

Ein Thema von mwilms · begonnen am 26. Jan 2023 · letzter Beitrag vom 26. Jan 2023
Antwort Antwort
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
40 Beiträge
 
Delphi 12 Athens
 
#1

Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 10:17
Hallo,

ich frage mich, bis zu welcher Windows Version ein von mir entwickeltes Win32 Programm abwärts kompatibel ist. Es wurde auf Windows 10 entwickelt. Es verfügt zudem über einen Modus, in dem TThread (Hyperthreading) verwendet werden kann. Bis zu welcher Windows Version wäre das Hyperthreading nutzbar?

Vielen Dank

mw
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
91 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 10:40
Bis Windows Vista sollte das auf jedem Fall Abwärtskompatibel sein, sofern du jetzt nicht irgendwelche Spezialfunktionen nutzt die nur unter Windows 10 Funktionieren (auch wenn mir da gerade keine Einfallen) und ich denke mal unter XP könnte es unter umständen auch noch funktionieren. Alles darunter wird dann schon sehr schwer, weil Microsoft zwischen Windows 98 und Windows XP die Technologie gewechselt hat (bis Windows 98 basierte Windows ja auf DOS und seit Windows NT, damals ein reines Serverbetriebssystem, basiert Windows halt auf dem NT-Kernel). Aber bis Vista sollte es auf jedem Fall funktionieren (auch wenn ich es nicht empfehlen würde überhaupt noch ein Betriebssystem von Microsoft zu verwenden welche älter ist als Windows 8) weil halt nicht mehr gemaintened.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 10:44
TThread ist zunächst unabhängig davon ob Hyper-Threading zur Verfügung steht oder nicht. Multithreading war auch schon lange vor der Einführung dieser Technologie möglich. Hyper-Threading ist lediglich eine von Intel ersonnene Methode mit vergleichbar geringem Hardware Aufwand einen zusätzlichen Prozessorkern vorzutäuschen, mehr oder minder wirksam. In der Regel klappt das überraschend gut, ist aber einem echten Mehrkernsystem unterlegen. Wo in TThread man aber explizit Hyper-Threading aktivieren könnte ist mir zwar verborgen, aber für alle Windows Versionen ab und inklusive 2000 gilt Hyper-Threading als unterstützt...immerhin ist diese Technologie noch aus dem letzten Jahrtausend. Zum Thema Hyper-Threading ist der Artikel bei Wikipedia ein recht guter Einstieg.

Kurz: TThread geht immer, wichtiger ist mit welcher Delphi Version Du arbeitest, denn zB Delphi 11.2 unterstützt kein Windows XP mehr.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 11:27
Fun fact (eigentlich bissl offtopic, aber ich denke dennoch interessant in dem Zusammenhang):

Eigentlich ist Hyperthreading eine Mogelpackung
Oder sagen wir es so: 4 Kerne => 8 Threads ist eigentlich eine Falschaussage.

Früher (also so in den 80ern) gabs nur eine ALU (Arithmetisch-Logische-Unit), also der eigentliche Rechenkern, und die arbeitete auf einem Registersatz - also der minimale Speicherbereich, wo die Daten und Arbeitsinstruktionen liegen, auf denen die ALU gerade im Moment arbeitet. Irgendwann kam dann die FPU (Floating Point Unit), der damals so genannte Mathematische Coprozessor, dazu.

Multikernsysteme damals hatten dann mehrere ALU/FPU-Pakete mit jeweils einem Registersatz. Das ist das, was wir heute unter einem echten Rechenkern verstehen.

Das Problem dabei ist: Wenn Daten fehlen (noch nicht geladen sind) und aus einem der CPU-Caches (L1 - L3) oder gar dem Hauptspeicher oder noch schlimmer einer Festplatte geholt werden müssen, dann kann der Kern nicht rechnen. Weil es fehlen ja die Daten. Der Kern bleibt also stehen, bis die Daten geladen sind. Das kann je nach Ort der Daten (naher oder entfernter Cache, Hauptspeicher, lokale Platte, ggf. auch LAN oder WAN), viele viele CPU-Zyklen dauern. Und die sind verloren.

Auch bei einem Thread-Wechsel gehen viele CPU-Zyklen verloren, denn während der eine Thread von den Registern ausgelesen und zwischengespeichert wird, und der neue Thread auf die Register gelegt wird, kann der Kern nicht rechnen und steht.


Bei Intel haben sie sich überlegt, wie man diese Wartezeiten besser ausnutzen kann. Und deren Lösung bestand darin, einfach einen zweiten Registersatz neben den ersten zu packen. ALU & FPU rechnen also auf dem ersten Registersatz. In der Zwischenzeit kann schon ein zweiter Thread auf den zweiten Registersatz gelegt werden, während der Kern jedoch noch auf dem ersten Thread weiter arbeiten kann. Fehlen jetzt Daten auf dem ersten Thread, dann bleibt der Kern nicht einfach stehen, sondern er schaltet auf den zweiten Registersatz um, und während die Daten jetzt von wo auch immer her geholt werden kann der Kern auf dem anderen Thread weiter rechnen.

ABER: Der Kern kann zu einem Zeitpunkt immer nur einen Thread abarbeiten. Entweder den auf dem ersten Registersatz, oder den auf dem zweiten, aber nie beide gleichzeitig.

Nur die Umschaltzeiten sind eben auf einmal nahe bei null und daher können jedwede Wartezeiten auf Daten nahezu auf null reduziert werden, weil immer schon ein zweiter Thread parat steht und in den Wartezeiten ausgeführt werden kann.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 11:33
Unser Programme müssen nur bis Win8.1 laufen.
In kürze werden wir 8.1 auch abkündigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
40 Beiträge
 
Delphi 12 Athens
 
#6

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 11:45
Vielen Dank für die interessanten Beiträge! Übrigens nutze ich Delphi 10.4. @ Sherlock, Windows XP wäre dann noch kompatibel?

Kann man abfragen, wieviele physische Kerne zur Verfügung stehen. Ich habe z.B. einen Prozessor von AMD mit 8 Kernen, über die Systemabfrage bekomme ich jedoch das Resultat mit 16 Kernen.

mw
  Mit Zitat antworten Zitat
Maliko

Registriert seit: 20. Jun 2019
91 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 11:49
Kann man abfragen, wieviele physische Kerne zur Verfügung stehen. Ich habe z.B. einen Prozessor von AMD mit 8 Kernen, über die Systemabfrage bekomme ich jedoch das Resultat mit 16 Kernen.
Schau dir die Spezifikation der CPU an. Ich vermute mal dass die Systemabfrage dir die Physichen und die Virtuellen zusammen und nicht nur die Physischen zurück gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#8

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 11:57
@mwilms: Gemäß dieser Aufstellung https://docwiki.embarcadero.com/RADS...rget_Platforms ist XP bereits nicht mehr dabei. Inoffiziell geht es glaube ich aber noch, aber ganz ehrlich, XP ist tot. Es gibt wohl noch die eine oder andere Maschine, die per XP Rechner angesteuert werden muß, aber jeder, der die anfaßt, tut das auf eigene Gefahr.
Was noch zum Thema Hyper-Threading (das übrigens nur dem Namen nach etwas mit TThread zu tun hat) interessant wäre ist, daß es immer wieder Prozessoren von Intel gab, die kein HT implementiert haben, zB die Core und Core 2 von 2006. Details dazu hier: https://en.wikipedia.org/wiki/Hyper-threading#Drawbacks. Dennoch unterstützen diese Prozessoren freilich Multithreading.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#9

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 12:49
Zitat:
XP nicht mehr dabei
Ja, erstmal wurde im PE-Header die MinVer angehoben, so dass Programme in uralten Windows garnicht mehr starten.

Dann hat die Mindestversion nichts mit Threads zu tun.
Die RTL/VCL verwendet in aktuelleren Delphis auch aktuellere WinAPIs, welche es damals nicht gab. (je nachdem was man einkompiliert hat, kann das Programm in alten XP nicht mehr laufen)

Und du mußt aufpassen, denn die "Versionsangabe" für Windows betrifft einmal die erstellten Programme und andererseits auch die IDE, wobei die IDE in XP bestimmt nicht mehr läuft.




Die z.B. die i7/i9 ab der 12. Generation haben oft unterschiedliche Kerne in einer CPU.

Mein i7 hat z.B. 4 P-Core und 8 E-Core (Performance und Efficient), also 12 Cores aber 16 Threads (mit HyperThreading), nicht 2*12 = 24 Threads.
Also die ersten 8 Kerne im Taskmanager sind P mit HyperThreading und die letzten 8 Kerne sind E ohne HyperThreading.
https://www.intel.de/content/www/de/...fications.html

Das Threading macht ja Windows und aus Sicht des Programmes ist es egal.
OK, dennoch versuche ich grade im Windows/WMI/WinAPI rauszubekommen was welcher "Kern" im Taskmanager ist.
Wenn man die Processor-Affinität selber regeln will, würde ich gern wissen was was ist. Es steht auch nirgendwo geschrieben welches im Taskmanager die P und E sind ... lange gesucht.

Außerdem laufen P und E mit unterschiedlichen GHz, die sich auch unterschiedlich dynamisch verändert. Der Taskmanager zeigt nur eine Frenquenz an, aber z.B. CPU-Z alles.


Windows 11 Pro hat auch ein neues Verhalten, bezüglich Threads.
So werden Programme Threads (so lange die CPU nicht voll ausgelastet ist) alle 30 Sekunden auf einen anderen Kern geschoben. Im normalen Energie-Modus vorzugsweise auf den Performance-Cores reihum.


Was ich noch nicht verstanden hab, warum die P HyperThreading haben, und nicht die E.
P auf 3,4 GHz mit HyperThreading, also per se nur noch 1,7 GHz pro Thread
E auf 2,8 GHz ohne HyperThreading und somit der Thread die volle Leistung
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Jan 2023 um 17:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Abwärts kompatibel bis Windows ...?

  Alt 26. Jan 2023, 14:23
Ich kann euch zumindest schonmal sagen, dass ab spätestens 11.2 nix mehr auf irgendwas vor WindowsXP SP3 funktioniert - es werden nämlich mind SSE2 Befehle in einigen System Routinen genutzt (FillChar, Move, etc), die davor nicht funktionieren (OS unterstützte davor das Save und Restore von den benutzten Registern bei einem Kontextwechsel nicht). Und dort kommt es dann darauf an, ob die Hardware es auch unterstützt - in 11.3 kommt ggf noch direkt ins initialize von System nen fester Check auf SSE2 und wenn das nicht unterstützt ist kommt ne Meldung - wie auch bei anderen Anwendungen, die irgendwann SSE2 und Co als Mindestvorraussetzung erforderten.

Die offiziellen Requirements von RAD Studio 11.2 für Windows als Zielplattform sind folgende:

Windows 10, Windows 8.1, Windows 7 (SP1+), Windows Server 2016, and Windows Server 2012 R2 - das sind nämlich die Versionen, die auch gar nicht mehr auf CPUs funktionieren, die kein SSE2 können.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (26. Jan 2023 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz