Was ist der TP-Bug?

Auswahl, Einrichtung und Betrieb von Rechnern und Komponenten
Antworten
Benutzeravatar
YangMimpi
LAN Manager
Beiträge: 220
Registriert: So 8. Dez 2013, 18:31
Wohnort: Leipzig
Kontaktdaten:

Was ist der TP-Bug?

Beitrag von YangMimpi »

Immer wieder lese ich beim Thema Drosseln von AMD & Intel CPU's vom TP-Bug. Was genau passiert da und wie äußerst sich der Fehler in der Anwendung?
Benutzeravatar
matze79
DOS-Gott
Beiträge: 5229
Registriert: So 9. Sep 2012, 20:48

Re: Was ist der TP-Bug?

Beitrag von matze79 »

Ach nur bei Turbo Pascal und in Turbo Pascal geschriebenen Programmen kommt das vor :)
paar Ausnahmen gibts wohl noch..

Eine Anzahl von Schleifen laueft durch um zu erkennen wie schnell die CPU ist, dabei wird z.b. die Variable N immer um 1 erhöht. Was auf zuschnellen CPU's nicht funktioniert da die verwendete Variable voll ist -> overflow -> Programm sagt Goodbye.

Eigentlich kein Bug, sondern ein Programmierfehler.
Benutzeravatar
captaincomic
Kommandozeilenfetischist
Beiträge: 166
Registriert: So 9. Mai 2010, 09:29

Re: Was ist der TP-Bug?

Beitrag von captaincomic »

imho Betrags Borland Pascal.
freecrac
DOS-Guru
Beiträge: 836
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: Was ist der TP-Bug?

Beitrag von freecrac »

matze79 hat geschrieben:...Eine Anzahl von Schleifen laueft durch um zu erkennen wie schnell die CPU ist, dabei wird z.b. die Variable N immer um 1 erhöht. Was auf zuschnellen CPU's nicht funktioniert da die verwendete Variable voll ist -> overflow -> Programm sagt Goodbye.

Eigentlich kein Bug, sondern ein Programmierfehler.
Ich versuche das mal etwas technischer zu beschreiben.

Den "Programmable Interval Timer (PIT) or 8253/8254" und den Timerinterrupt gab es ja auch schon.

Mit dem Timerinterrupt kann man z.B. genau eine einzige Sekunde lang eine Schleife mit einer bestimmten Anzahl darin enthaltenen Füll-Befehle ausführen lassen. Diese Füll-Befehle innerhalb der Schleife sollen selber nichts bewirken und werden nur dazu verwendet die Anzahl der Befehle zu ermitteln, die in einer Sekunde ausgeführt werden können. Am Ende, oder am Anfang der Schleife können dann bestimmte CPU-Register bzw. deren Inhalte mit jedem Durchlauf erhöht werden, so das die Anzahl der Durchläufe damit ermittelt werden kann.

Dabei wird der Timerinterrupt auf eine neue Adresse verbogen, wo unsere eigenen Befehle enthalten sind.
Mit diesen Befehlen bewirken wir dann nichts weiter, als dass in einem von uns ausgewähltes CPU-Register ein Wert geändert wird und dann unser neuer "Timerinterrupt" wieder beeendet wird und später dann auch vom "Mess-pogramm-Abschnitt" aus auf seine vorherige Adresse zurückgesetzt wird.

Unsere Schleife lief dabei mehrere Male durch bzw. sprang zum Anfang, um erneut die Befehle nacheinander abzuarbeiten. Am Ende der Schleife wird die Schleife entweder verlassen, wenn von unserem neuem "Timerinterurpt" aus der Wert von unserer ausgewählten Registers verändert wurde, oder es wird erneut zum Anfang der Schleife gesprungen und die nächste Runde beginnt. So wird unser Timerinterrupt dazu verwendet eine sekundengenaue Abbruchbedingung für unsere Schleife zu bekommen.

Wenn nun unser Register welches hochgezählt wird überläuft, dann wird das gewöhnlich auch im im Overflow-Flag, Carry-Flag und auch im Zero-flag im Flagregister signalisiert, womit man mit einem entsprechenden bedingenten Verzweigungsbefehl an eine bestimmte Adresse springen kann, um den Programmfluss zu steuern. Zweckmässig wäre es hier unmittelbar danach ein weiteres Registes hochzählen zu lassen und für die Zählung generell mehr als nur ein einziges Register zu verwenden. Unser Verzweigungsbefehl davor springt nun an diese Stelle hinter dem Befehl, wo unser zweites Register erhöht wird, weil dieses soll ja immer nur bei einem Überlauf des ersten Registers hochgezählt werden.

Unser zweites Register könnte aber auch überlaufen und auch hierbei wird wieder im Flagregister es signalisiert usw...

Beispiel-Schleife
Schleifenanfang
eine bestimmte Menge an Füllbefehle
erstes Zählregister hochzählen
springe zu PP, wenn kein Überlauf
zweites Zählregister hochzählen
springe zu PP, wenn kein Überlauf
driittes Zählregister hochzählen
PP
springe zum Anfang wenn vom Timerinmterrupt unser ausgewähltes Register noch nicht verändert wurde
Ender der Schleife
Dirk
Benutzeravatar
Kurt Steiner
DOS-Guru
Beiträge: 712
Registriert: Mo 14. Dez 2009, 08:05
Wohnort: Leipzig

Re: Was ist der TP-Bug?

Beitrag von Kurt Steiner »

YangMimpi hat geschrieben:Immer wieder lese ich beim Thema Drosseln von AMD & Intel CPU's vom TP-Bug. Was genau passiert da und wie äußerst sich der Fehler in der Anwendung?
Also mit deinem 120 Mhz hast du keine Probleme und musst dir auch keine Sorgen machen das du ihn bekommst ! Es kommt bei mir dann wenn ich nicht auf 66 FSB, Multi 2 und Softwarebremse einstelle ! Zum Glück sind nicht sooo viele Spiele betroffen, Oldtimer und Lotus fällt mir gleich mal ein. Muss Oldtime auf DOS-Box aber auf meinem Rechner spielen, also ein Dos mit Win98 um dann wieder Dos zu machen ! :-P
Benutzeravatar
matze79
DOS-Gott
Beiträge: 5229
Registriert: So 9. Sep 2012, 20:48

Re: Was ist der TP-Bug?

Beitrag von matze79 »

Viele Indygames und Freeware Programme sind allerdings betroffen :)
Benutzeravatar
YangMimpi
LAN Manager
Beiträge: 220
Registriert: So 8. Dez 2013, 18:31
Wohnort: Leipzig
Kontaktdaten:

Re: Was ist der TP-Bug?

Beitrag von YangMimpi »

na das sind doch mal ne ganze Menge nützlicher Infos :-)

Mir ging es bei der Frage auch weniger um meinen P120, sondern um die baldige Auswahl der CPU für meinen 2. Rechner, auf dem DOS & Win98 laufen sollen ;-)
Benutzeravatar
Kurt Steiner
DOS-Guru
Beiträge: 712
Registriert: Mo 14. Dez 2009, 08:05
Wohnort: Leipzig

Re: Was ist der TP-Bug?

Beitrag von Kurt Steiner »

Dann musste mal schauen hatte vorher einen PII-400 da war er wenn du den aber statts 4x100 mit nur 4x66 absteuerst also 266 gabs ihn bei mir nicht !

Beim K6 wie schon geschrieben IMMER ausser Softwarebremse dann nicht.
Also was jenseits der 233 MHz Marke ist machen diese Probleme !
Benutzeravatar
matze79
DOS-Gott
Beiträge: 5229
Registriert: So 9. Sep 2012, 20:48

Re: Was ist der TP-Bug?

Beitrag von matze79 »

Das Maximum mit dem FIC PT-2003 ohne Umbau/Mod ist sowieso ein K6-1 233Mhz, oder Pentium MMX 233Mhz (266Mhz wenn du ihn findest...)
Antworten