Mein Streaming-Server, der kleine Scherzkeks

Das Leben, das Universum und der ganze Rest.
Antworten
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Mein Streaming-Server, der kleine Scherzkeks

Beitrag von Odin »

Hallo zusammen,

ich habe über das letzte Wochenende einen PC zusammengebaut, der auf Basis von Linux mit VDR und meiner DVB-S-Karte einen Streaming-Server für mein lokales Netzwerk darstellt. Das ermöglicht es mir, über Netzwerk z.B. an meinem Laptop Fernsehen zu gucken.

Allerdings ist der Rechner ein kleiner Scherzkeks. Das Mainboard ist ein Elitegroup K7VZA in der Version 1.0 mit einem 1300MHz AMD Duron Prozessor. Das Problem ist, dass das Mainboard offiziell einen Multipliaktor von 12 unterstützt, der Prozessor aber einen von 13 hat. Also hat sich das Mainboard gedacht: "verwirren wir den User mal total" und zeigt beim booten folgendes an:

Code: Alles auswählen

AMD Athlon 20MHz (4 x 5.0) 
Da dachte ich schon, ich hätte eine Hardwarekombination mit optimalem DOS-Support entdeckt, aber leider stellt das Mainboard den Prozessor doch korrekt ein. Das haben diverse Diagnoseprogramme eindeutig bestätigt (und die für 20MHz unglaublich hohe Leistungsfähigkeit auch). Ich kann mir allerdings nicht erklären, wie das BIOS auf 4 x 5.0 kommt. Okay, 5.0 ist der minimale Multiplikator beim Duron, aber die 4MHz FSB verstehe ich überhaupt nicht...
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1986
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

Hi Odin!

Verrücktes Mainboard, würde ich sagen.

Aber lustiges Projekt. Sowas ist immer interessant. Reicht denn da eigentlich ein Duron mit 1300 MHz?

Mich würde außerdem noch interessieren, in welchem Format das Video an Dein Notebook weitergestreamt wird. Findet da ein Transcoding statt oder bleibt es vielleicht sogar in dem Format in dem es ursprünglich über DVB-S kommt? Was ist das dann? MPEG?

Gruß,
Christoph
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Beitrag von Odin »

Das DVB-S-Signal wird vom Server in MPEG2-PES umgewandelt. Angeblich reicht für die MPEG2-Umwandlung schon ein 500MHz-Prozessor.

Das Signal wird dann gestreamt und der Rechner, der es empfängt muss dann noch das Deinterlacing betreiben (sonst sieht man bei Bewegungen immer schwarze Streifen). "Empfangen" kann man den Stream mit dem VLC-Player oder mit einigen Linux-Playern (unter Windows dann halt die entsprechenden Portierungen). Und die Bildqualität ist viel besser as bei einem normalen Fernseher.
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1986
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

Das DVB-S-Signal wird interlaced übertragen, sodaß da noch ein Deinterlacing her muß? Bist Du Dir da sicher? Klingt irgendwie umständlich. Interlacing ist doch ein Relikt aus analogen Zeiten oder?

Den VLC-Player kenne ich. Wirklich nützliches Ding, was Streaming und Transcoding angeht.
Benutzeravatar
SharpClaw
DOS-Kenner
Beiträge: 409
Registriert: So 23. Jul 2006, 19:09

Beitrag von SharpClaw »

hawooo!! ^^

Is ja drollig :D Ich hatte einmal ein Mainboard, welches automatisch beim Start die CPU erkannte (meist hab ich es mit nem 200 MMX laufen lassen). Das Lustige war, bei jedem Start zeigtew er mir eine andere CPU an... Dabei ging er alle Möglichkeiten durch zwischen 133MHz und 200MHz. Das machte er mit jeder CPU außer einer AMD-K6-II 166MHz, die hat er immer richtig erkannt...
Doch bräucht' es ganze Scharen Von Zauberern, und Zeit
Das Schöne zu bewahren Und die Gerechtigkeit.

Nun will ich nicht mehr weinen. Komm, führ mich in dein Land!
Will mich mit ihr vereinen In deiner sanften Hand...

ASP - Zaubererbruder (Am Ende)
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Beitrag von Odin »

Naja, ein bisschen scheint das gestreamte Signal schon deinterlaced zu sein, aber das Bild ist dennoch schrecklich. Sobald man Deinterlacing aktiviert, siehts viel besser aus. Bei einem halbwegs unbewegtwn Bild stört das nicht, aber sobals schnellere Bewegungen ins Spiel kommen (also zum Beispiel ein fahrendes Auto), dann ziehen sich schwarze horizontale Linien über das Bild. Schaltet man Deinterlacing ein, hört das auf.

Ich habe mich ehrlich gesagt auch nicht so genau mit den Stremingformaten beschäftigt, es ging mir primär darum, dass die Sache läuft (wenn man nach 2 Tagen rumbasteln noch nichts lauffähiges hat, ist das ganz schön deprimierend). Ich habe jedenfalls mein ganzes Wochenende dafür verbraten... aber jetzt bin ich zufrieden :-D
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Beitrag von Odin »

Das Lustige war, bei jedem Start zeigtew er mir eine andere CPU an...
Vielleicht solten wir ein Museum eröffnen... "Mainboards mit KI"... Und da sagte das Board "ich wollte schon immer einen 20 MHz-Prozessor haben!!!!!!"
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
5u3
Kommandozeilenfetischist
Beiträge: 184
Registriert: Do 21. Sep 2006, 17:05
Wohnort: Wien

Beitrag von 5u3 »

Ja, das Phänomen kenne ich auch von meinem 486er-Board.

Oft zeigt es statt der richtigen Taktfrequenz einfach 32 MHz an, egal, was ich eingestellt habe. Außerdem scheint es 80 (40x2) MHz generell nicht zu kennen, stattdessen steht dann 75 MHz da. Lustigerweise werden 120 (40x3) MHz aber korrekt erkannt.

Noch skuriller: Das BIOS kann die RAM-Latenzen, Waitstates und den ISA-Frequenzteiler automatisch einstellen. Eine tolle Funktion, vor allem, wenn man (so wie ich) häufig den Bustakt ändert.
Dummerweise nimmt es dafür die "erratene" CPU-Geschwindigkeit, bestimmt davon den Bustakt und stellt demnach die Werte ein. :roll:

Bei den falsch erkannten 75 (eigentlich 80) MHz ist das dann fatal: Der Bus läuft zwar mit 40 MHz, aber das BIOS denkt, es wären nur 25, und stellt das RAM auf Turbo, die Waitstates auf 0 und den ISA-Bus auf 13 MHz -- die Kiste schmiert nach fünf Minuten ab.
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1986
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

@5u3: Woher kennst Du die ganzen Werte? Gibt's da bestimmte Diagnose-Tools oder hast du entsprechendes Equipment zum messen?

Gruß,
Christoph
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Beitrag von Odin »

Kann man doch nachrechnen.

Man muss bedenken, dass der Prozessortakt durch Jumper bzw. den Prozessor selbst bestimmt wird. Das Mainboard macht eigentlich nur das, wozu es gezwungen wird. Wenn es nun die Werte nicht kennt, kommt halt so ein Murks raus.

Das Board stellt also die 80MHz (40 x 2.0) korrekt ein, da es die 80MHz aber nicht kennt, nimmt es den nächstbesten Wert an, also 75MHz. Und die 75MHz können nur aus 50 x 1.5 oder 25 x 3.0 gebildet werden. Da es ein 486er-Board ist, sind die 50MHz eher selten. Also wird das Board annehmen, es läuft mit einem Systemtakt von 25MHz.

Beispiel ISA-Takt: normal sind Werte zwischen 4.77 und 8MHz, bei einem 486er werden es immer 8 sein (die 4.77 kommen noch vom 8086). Macht also 8MHz mal den falschen Teiler (in diesem Falle eher Multiplikator) 1,6 (40MHz/25MHz) macht dann 12.8MHz ISA-Takt. Und das kann man nun für alle vom Systemtakt abhängigen Takte berechnen.
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1986
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

Ausrechnen kann man das, das ist klar. Aber woher will man wissen, ob nun wirklich der falsch erkannte CPU-Takt für die Bestimmung des ISA-Takts, Speichertiming etc. herangezogen wird? Vielleicht ist ja auch einfach nur die Anzeige inne Wurst...
Benutzeravatar
Odin
DOS-Guru
Beiträge: 712
Registriert: Fr 3. Feb 2006, 16:52

Beitrag von Odin »

Es muss ja rein theoretisch mit dem CPU-Takt zusammenhängen. Wie das genau ermittelt wird, kann ich Dir auch nicht sagen. Aber ich kann ja mal ein wenig recherchieren...
"640k ought to be enough for anybody." - Bill Gates (1981)
"Windows 95 needs at least 8MB RAM." - Bill Gates (1996)
... also braucht niemand Windows 95 !!!
Benutzeravatar
5u3
Kommandozeilenfetischist
Beiträge: 184
Registriert: Do 21. Sep 2006, 17:05
Wohnort: Wien

Beitrag von 5u3 »

Ich habe ein wenig mit verschiedenen CPUs herumexperimentiert, hier die Ergebnisse.

Grundsätzlich unterstützt mein Board die folgenden FSB-Takte (1:1 gleich mit VLB und PCI-Takt):

Code: Alles auswählen

FSB     | PCI | VLB
--------+-----+-----
16 MHz* | (-) | (-)        Zeichenerklärung:
20 MHz* | (-) |             * : Einstellung undokumentiert
25 MHz  |     |            (-): Taktrate unter Spezifikation, Geräte funktionieren nicht
33 MHz  |     |            (+): Taktrate über Spezifikation, Geräte teilweise instabil
40 MHz  | (+) |   
50 MHz  | (+) | (+)
Die Multiplikatoren werden prinzipiell fix vom Prozessor vorgegeben, nur bei 486DX4- und 5x86-Modellen kann der Multiplikator über den CLKMUL-Pin (R17) eingestellt werden:

Code: Alles auswählen

CLKMUL | 0  | 1
-------+----+----
486DX  | 1x | 1x
486DX2 | 2x | 2x
486DX4 | 3x | 2x
5x86   | 4x | 3x
Ursprünglich sollte bei Verbindung von CLKMUL mit BREQ (Q15) der Multiplikator 2.5x möglich sein, ich weiß aber nicht, ob das je von einem 486er unterstützt wurde.

Zum Problem mit der falsch angezeigten CPU-Geschwindigkeit: Mein Board interpretiert die folgenden Taktraten falsch:

Code: Alles auswählen

Realer Takt | Angezeigt
------------+----------
 16 (1x16)  |  32 MHz
 20 (1x20)  |  32 MHz
 48 (3x16)  |  40 MHz
 60 (3x20)  |  50 MHz
 80 (2x40)  |  75 MHz
150 (3x50)  | 120 MHz
Dieses Verhalten legt folgenden Schluß nahe: Die Geschwindigkeit wird zwar beim Booten gemessen (wahrscheinlich über eine simple Delay-Schleife), das Ergebnis wird aber nicht direkt angezeigt, sondern mit einer Tabelle verglichen und ein möglichst naher Wert aus der Tabelle ausgegeben. Marketingtechnisch macht das durchaus Sinn, denn so wird sichergestellt, daß beim Booten immer die gleiche Zahl angezeigt wird, die auf dem Prozessor draufsteht.
Die Werte 16, 20, 60, 80 und 150 fehlen aber in meiner BIOS-Tabelle, daher erscheint der nächstkleinere Wert. Wenn es keinen nächstkleineren Wert gibt, wird einfach "32 MHz" genommen. Diese Angabe taucht auch dann auf, wenn bei der Messung was schiefgegangen ist (kommt manchmal nach einem Reset vor).

Zu allen vorhandenen Werten der Tabelle sind Faktoren für die automatische Einstellung der BIOS-Parameter zugeordnet:

Code: Alles auswählen

Speicher | WS | ISA-Bus | zugeordnet zu
---------+----+---------+-------------
Fastest  |  0 |   FSB/3 | 25/50/75  MHz
Faster   |  0 |   FSB/4 | 33/66/100 MHz
Slower   |  1 |   7.159 |    40/120 MHz
So kommt es, daß die Automatik in gewissen Fällen danebenhaut: Bei 80 (40FSB) MHz werden 75 MHz angezeigt und das System für 25 MHz FSB konfiguriert.
Ähnliche Probleme tauchen bei Verwendung von 50 MHz FSB auf, aber das Board läuft dann eh nicht mehr stabil.
Locutus hat geschrieben:Aber woher will man wissen, ob nun wirklich der falsch erkannte CPU-Takt für die Bestimmung des ISA-Takts, Speichertiming etc. herangezogen wird?
Wenn im BIOS die Automatik eingeschaltet ist, ändern sich die Werte dementsprechend. Man kann das dann auch mit Benchmarks feststellen.
Die Automatik habe ich normalerweise ausgeschaltet. Zum einen, weil mein RAM schnellere Timings verträgt, als das BIOS annimmt, und zum anderen, weil ich meine ISA-Karten schonen möchte und daher den ISA-Bus auf den fixen Wert von 7.159 MHz gestellt habe. Das kostet zwar Performance, aber ich habe eh nur Soundkarten stecken, und bei denen macht das nicht viel aus.
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1986
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

@5u3: Ich wußte gar nicht, daß es manche Boards/BIOSse erlauben, daß der ISA-Takt so genau eingestellt werden kann. Bei meinen Boards habe ich das jedenfalls noch nicht beobachtet.

Gruß,
Christoph
Benutzeravatar
5u3
Kommandozeilenfetischist
Beiträge: 184
Registriert: Do 21. Sep 2006, 17:05
Wohnort: Wien

Beitrag von 5u3 »

Locutus hat geschrieben:@5u3: Ich wußte gar nicht, daß es manche Boards/BIOSse erlauben, daß der ISA-Takt so genau eingestellt werden kann. Bei meinen Boards habe ich das jedenfalls noch nicht beobachtet.
Naja, die Möglichkeit, den ISA-Bus-Teiler einzustellen gibt es eigentlich seitdem Mainboard-Chipsets existieren (C&T NEAT-286er). Nur sind sie nicht immer vom BIOS-Setup aus zugänglich oder werden gleich "mitverdrahtet", wenn man auf dem Board den Prozessortakt jumpert.

Übliche Werte:

Code: Alles auswählen

FSB-Takt | Teiler | ISA-Takt
---------+--------+----------
 16 MHz  |   2    | 8.00 MHz
 20 MHz  |  2.5   | 8.00 MHz
 25 MHz  |   3    | 8.33 MHz
 33 MHz  |   4    | 8.25 MHz
 40 MHz  |   5    | 8.00 MHz
 50 MHz  |   6    | 8.33 MHz
Eine Auswahl dieser Teiler konnte man auf ziemlich vielen 386/486er-Boards verwenden (beliebt vor allem bei Rechnern mit AMI-BIOS). Das Übertakten des ISA-Busses (manchmal ging es bis 12 oder 16 MHz stabil) war eine gängige Methode, um den langsamen ISA-Grafikkarten ein wenig in den Hintern zu treten.

Mein 486er-Board bietet da eigentlich recht wenig Auswahl: nur die Teiler 3 und 4 sind vorhanden, das reicht schon bei 40 MHz nicht mehr, um den ISA-Bus in der Spezifikation zu halten. Aber dafür gibt es eine Neuerung: Statt eines Teilers kann man auch die fixe Frequenz von 7.159 MHz einstellen (verdoppelt man diesen Wert, dürfte das Ergebnis vielen DOS-Programmierern bekannt vorkommen :wink:).

Der fixe ISA-Takt hat den Vorteil, daß der ISA-Bus immer innerhalb der Spezifikation bleibt und man spart sich die Frequenzteiler. Andererseits treten bei dem "krummen" Taktverhältnis zwischen FSB und ISA-Bus Synchronisationsverluste auf - ISA-Karten arbeiten dann langsamer.

In der Pentium-Ära sind dann die Frequenzteiler für den ISA-Bus verschwunden, ein eigener, nicht umstellbarer ISA-Taktgenerator war üblich. Dafür ging das gleiche Spiel später beim PCI und AGP von vorne los...
Antworten