Very Important Project

  • Grüße,


    ich will mich mal etwas um mein FIC VIP IOkümmern.


    Dieser Startbeitrag ist erstmal Work in Progress, wird also noch viel bearbeitet und im Moment sammle ich erstmal Informationen.


    Immerhin habe ich inzwischen eine Leiterbahn weggebrannt (war vom 3,3V Spannungswandler, nach dem flicken läufts als ob nichts wäre) und endlich den 586er mit 50MHz FSB zu laufen gebracht - leider noch ohne Writeback.


    Inhaltsverzeichnis:


    Part1: Die Vorbereitung - siehe ein paar Zeilen weiter unten ;-)

    Part2: Die Optimierung



    Part1: Die Vorbereitung


    Los gehts mit Datenblättern:


    Leider auf Anhieb nicht viel gefunden:


    Gefunden:


    VT8225N.jpgNAS9442AVC4.jpg


    VT82C505 VLB - PCI Bridge: https://datasheet.datasheetarc…asheets-23/DSA-446618.pdf

    VT8225 Clock Generator: https://pdf1.alldatasheet.com/…iew/85863/ETC/VT8225.html

    PC97332VLJ ISA Multi IO Controller (Danke matt & Scorp): http://pdf-html.ic37.com/pdf_f…584/PC87332_datasheet.pdf


    Ein paar Infos zum VT82C486A/482/483:

    Evtl. hilfreich (Chipsatzregister), das Dtenblatt zum Nachfolgechipsatz VT82C496G: http://nwserveur.no-ip.org/upl…-VT82C06MV_DATA-SHEET.pdf


    Update: Ich habe jetzt eine Dokumentation zu den Chipsatzregistern gefunden VIA31112.7z (das ist eine wordperfect Datei, lässt sich mit LibreOffice öffnen)


    Missing:



    VT82C486A Cache/Memory Controller+VLB2ISA Bridge

    VT82C482 VLB2ISA Bridge

    VT83C461 VLB IDE Controller

    VT82C483 DRAM Controller


    Findet da Jemand was? Mir geht es vor allem um die Programmierung (Chipregister) und beim 82C486A ist mir auch das Pinout wichtig um die Verbindungen zum Prozessor prüfen zu können - bei 486ern gibts so einige "wandernde" Pins.


    The f*cking Manual:


    http://cwcyrix.duckdns.org/ftp…rd/manual/486/486-vip-io/

    Laut dem Text zu den DX4-100 Jumpersettings ist das aber für eine ältere Revision, bei meiner ist der Spawa fest verlötet und nutzt den Voldet Pin der CPU.


    Basis Ein/Ausgabe System:


    http://cwcyrix.duckdns.org/ftp…oard/bios/486/486-vip-io/

  • Ein paar Informationen zum VT82C486A/482/483 hinzugefügt, leider gibt es da wohl keine Datenblätter für...


    Das Mainboard ist definitiv Merkwürdig:

    Es hat einen im Chipsatz intigrierten VLB-IDE Controller, dazu gibt es noch einen PC97332VLJ der per ISA angebunden ist und noch einen weiteren IDE Controller mitbringt.

    Desweiteren scheint, gemäß MR. SLUG, der Chipsatz über 2 VLB2ISA Controller zu verfügen und der VT82C486A, sowie der VT82C483, sind beides Speichercontroller - wobei der 486A sich vmtl. nur um den Cache und die Anbindung des 483 kümmert.


    Update: Ich habe jetzt in den Dateien des American Megatrends FTP etwas Doku zu den Registern des VT82C486 gefunden, siehe oben.


    @Matze Die Datei müsste "American Megatrends FTP.7z" heißen und 371MByte groß sein

  • Gerade beim Optimieren, der Text von American Megatrend scheint nicht ganz zu stimmen, immerhin ändert Bit 0 von Register 50h die geschwindigkeit des Arbeitsspeichers (lt. Doku Cache Write Burst)


    Ebenso habe ich vorhin mal einen Dump der Register gemacht: Die Bioseinstellungen für Ram und Cache machen garnichts - die Benchmarks bestätigen dies :-/

  • Part 2: Die Optimierung:


    Leider erwies sich die Suche nach einem Datenblatt für den VT82C486A als erfolglos, auch die Informationen vom American Megatrends FTP sind wohl Nutzlos, was ich hier beobachtet habe passt nicht zu dem was dort über die Chipsatzregister steht.

    Immerhin: In der Dokumentation zum VT82C505 steht folgendes:

    Zitat

    RX80-9Fh can also be accessed through IO port A8h and A9h as the companion VL/ISA chipset. [..] Note that registersRX00-7Fh are reserved for the companion VL/ISA chipset.


    Das heißt: Der VT82C486A lässt sich wohl ebenfalls per A8/A9 ansprechen und seine Register sind irgendwo zwischen 00 und 7F - nicht ideal, aber immerhin ein Ansatzpunkt.


    Für soche Zwecke hatte ich auch schon ein kleines Tool geschrieben: "ECS" - Efar Chip Set, ursprünglich für mein EFAR802G basiertes Mainboard geschrieben.

    (Siehe: Wer hat den schnellsten 386er/486er? - ich konnte mein EFAR damit im Benchmarkvergleich von 219,26 Punkten auf 234,72 Punkte steigern)


    Also Bruteforce ich mich gerade durch die 128 möglichen Register.

    Die Vorgehensweise ist recht einfach:


    - Ich lese mittels "ECS A8 A9 Register" ein Register aus

    - schreibe den invertierten Wert zurück und schau ob der Rechner noch läuft

    --> Wenn ja: nochmal Auslesen ob der Wert auch übernommen wurde

    ----> Wenn ja: Benchmark

    ----> Wenn nein: Dann ist das Register nicht belegt und kann ignoriert werden -> auf zum nächsten

    --> Wenn nein (d.h. der Rechner ist abgestürzt): -> Reboot und jedes Bit einzeln testen


    Hier im Anhang meine Aktuellen Ergebnisse:

    VT82C486A.7z


    Zum Verständnis der Datei:

    - Nicht beschreibbar= Diese Register sind offenbar nicht belegt, Werte die ich dorthinein schreibe werden nicht übernommen

    - Keine Änderung= Diese Register sind beschreibbar, aber die Benchmarkwerte ändern sich nicht

    - Keine Änderung+Absturz=Diese Register sind beschreibbar, aber die Benchmarkwerte ändern sich nicht - jedoch führt das ändern mancher Bits zum Absturz, diese Register sind möglicherweise Interessant

    - Bei Normal steht der Wert den das Register direkt nach dem Booten hat

    - Ich habe als Vergleich die Werte meines EFAR802G Mainboards und die Grundwerte des VIP-Boards eingefügt


    PS. Ich habe schoneinmal den L2 Cache signifikant beschleunigen können :D (Bild nur Echt mit Daumen *g*)

    Leider ein "Bug", nicht auf dem Bild sind die Fehlermeldungen mit denen Cachechk um sich geworfen hat - installiert waren übrigens nur 256kb L2 ;-)

  • Was ich Dich schon länger fragen wollte:

    1. Kannst Du das Tool so schreiben, daß man nur Adressport und Datenport angibt (scheinst Du ja schon gemacht zu haben) und es dann alle Register von Adresse 00h-FFh automatisch ausliest und die Daten in eine einfache (Text-) Datei schreibt?


    Als Darstellungsform in der Datei würde sich die Tabelle anbieten, wie WPCREdit die Chipsatzregister im Hauptfeld anzeigt:


    Dann könnte man zunächst einmal die Einstellungsmöglichkeiten, die das BIOS bezüglich des Chipsatzes bietet, durchtesten und mittels Vergleich der Dateien schon mal einige Funktionen den entsprechenden Registern zuordnen.


    Will das nämlich mal mit dem Headland HT-12 machen, wenn ich mal Zeit dafür habe und vor allem herausgefunden habe, welchen Adress- und welchen Datenport der verwendet. :rolleyes:


    Daher auch gleich die nächste Frage:

    2. Kannst Du das Tool so schreiben, daß es automatisch mögliche Adress- und Datenportkombinationen scant mit jeweils eigener Ausgabe in einer Datei namens AxyzDuvw (xyz=Adressport, uvw=Datenport).

    Ich stelle mir das so vor, um den Adress- und Datenport des HT-12 herauszufinden: Man macht einen ersten Scan, verstellt dann was im BIOS und nach einem zweiten Scan schaut man nach, bei welcher Adress- und Datenportkombination sich was geändert hat.

    Keine Ahnung, wie man eine ungültige Kombination erkennt und ob beim reinen Auslesen ein Risiko besteht, etwas zu beschädigen. Beim Schreiben ist es ja auf alle Fälle möglich, wenn man versehentlich einen falschen Chip adressiert.

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:


    Meine Begehren

  • Zu 1. ECSDUMP.7z Ist allerdings QnD


    Ursprünglich hatte ich auch an etwas in der Form von WPCredit gedacht (inklusive Beschreibungsfenster), jedoch ist das Problem dass manche Lesezugriffe bereits zu Änderungen führen können bzw. Schreib- und Lesezugriffe unterschiedliche Register Addressieren z.b. beim Nec 765 passiert das.

    Daher wäre das nicht mehr so universell.

    Ausserdem ist es aufwändiger zu Programmieren.


    Zu 2. Das führt unweigerlich zu Abstürzen, Datenverlust, Atomarer Verstrahlung und möglicherweise Hardwareschäden, wenn das Tool zufällig auf den Ports herumschreibt.

    Ich stelle mir das so vor, um den Adress- und Datenport des HT-12 herauszufinden: Man macht einen ersten Scan, verstellt dann was im BIOS und nach einem zweiten Scan schaut man nach, bei welcher Adress- und Datenportkombination sich was geändert hat.

    Dafür hatte ich 1. gemacht :D


    Ich schau aber mal ob ich da mal etwas mehr mache


    PS. Du könntest mal Port 24/28 versuchen: https://fd.lod.bz/rbil/ports/other/p00240029.html

  • Zu 2. Das führt unweigerlich zu Abstürzen, Datenverlust, Atomarer Verstrahlung und möglicherweise Hardwareschäden, wenn das Tool zufällig auf den Ports herumschreibt.

    Schreiben soll es im Scanmodus ja nicht, sondern nur lesen.

    Erst mal den Leseport finden. Danach sieht man weiter...

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:


    Meine Begehren

  • Erst mal den Leseport finden. Danach sieht man weiter...

    Wie soll es den Lesenport finden wenn ich auf den Indexport schreiben muss welches Register ich lesen will?


    Der Zugriff funktioniert so:

    Auf den Indexport (bei meinem VIA ist das A8) schreibe ich auf welches Register ich zugreifen will und über den Datenport (bei meinem VIA A9) erhalte ich Zugriff darauf. D.h. auch wenn ich nur ein Register lesen will muss ich zumindest auf den Indexport schreiben.


    PS. wie oben geschrieben: versuche mal 24/28

  • Was ich meinte, war, daß das Programm nichts in die Register schreiben soll.

    Ich dachte mir den Scanmodus zum Finden des Leseports als eine Art Brutforceangriff, wenn alles unbekannt ist, etwa so:


    Indexport = 00h (variabel)

    Datenport = 00h (variabel)

    Register = 00h

    :Label1

    Eingabe Register auf Indexport

    Einlesen der Daten von Datenport

    Schreibe Daten in Datei "IndexportDatenport.txt" (z. B. IA8hDA9h.txt)

    Register + 01h

    :Loop Label1 bis Register = 100h (ausschließlich)

    Register = 00h

    Datenport + 01h

    :Loop Label1 bis Datenport = 100h (variabel)

    Register = 00h

    Datenport = 00h

    Indexport + 01h

    :Loop Label1 bis Indexport = 100h (variabel)


    Dann ändert man was im BIOS und läßt das noch einmal laufen.


    Ergäbe mit den Beispielen die Kleinigkeit von 65536 Kombinationen pro Lauf, die man dann miteinander vergleicht. :S Von daher wäre es hilfreich wenn man den Scanbereich von Index- und Datenport bei Programmstart angeben kann, damit's nicht so viel auf einmal wird.

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:


    Meine Begehren

  • Genau das ist doch das Problem: ich muss auf den Indexport schreiben (mindestens 256 mal, wenn wir bei 8Bit Registern bleiben) um die Register Lesen zu können - und das Schreiben auf zufälligen Ports führt zwangsläufig zu atomarer Verstrahlung.


    BTW. in deinem obigen Beispiel sind das 256*65536 Durchläufe.

    BTW2. Die Ports können auch 16Bittige Adressen haben beim Trio64 sind z.b. 3C4h/3C5h, beim VT82C505 sinds CF8h und CFCh


    Kurz: Ein Scan nach den Ports ist nicht möglich weil dein Scan nach Änderungen in den Registern sucht und um auf die Register zuzugreifen muss ich auf den Indexport schreiben - und wenn ich den Port nicht kenne und einfach so auf die Ports schreibe schieße ich zwangsläufig den Rechner ab.

    Das heißt: Index und Datenport musst du kennen - nach denen kann ich nicht einfach scannen, weil ich sonst den Rechner abschieße.

    Die Register selbst sind kein Problem -> Auslesen -> als Datei Speichern -> Einstellung im Bios ändern -> nochmal auslesen und schauen was sich geändert hat. Die Ports hingegen sind nicht gefahrlos scanbar.

  • *seufz*

    Da muß ich wohl noch über ein paar andere Möglichkeiten nachdenken, dem HT-12 zu Leibe zu rücken. ||


    BTW. in deinem obigen Beispiel sind das 256*65536 Durchläufe.

    Ich meinte 65536 Ausgabedateien (= Kombinationen aus Index- und Datenport) mit je 256 Werten drinnen, die man irgendwie automatisiert per Skript vergleichen müßte. Ja, war etwas ungenau geschrieben. :S

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:


    Meine Begehren

  • Versucht hab ich noch gar nichts. Das sind erst einmal Vorüberlegungen. Die Zeit, Du weißt schon, ist knapp und so viel zu tun... :rolleyes:

    Werd mir das Datenblatt zum HTK320 bei Gelegenheit mal anschauen.

    Ich werde mich von keinem einzzzigen Prozzzessor trennen.
    Jedoch lockt es mich beinahe, ihn Dir zu überlassen, nur um zu sehen, wie er Dich in den Wahnsinn treibt :evil:


    Meine Begehren

  • Update:


    Da die Datenblätter die ich gefunden habe nicht wirklich ergiebig sind, arbeite ich hier mit Bruteforce - d.h. ich teste manuell alle Register zwischen 00 und 7F (80+ ist die VLB-PCI Bridge, dafür habe ich ein brauchbares Datenblatt) und dort alles zwischen 00 und FF.


    Hier mal mein aktuelles Testsetup:


    Über den Aufruf "regtest.bat [Registernummer]" in der Autoexec.bat rufe ich folgende Batch auf: (hier kommentiert für besseres Verständnis):



    Ein Problem sind Abstürze, da muss ich manuell resetten. Jetzt habe ich inzwischen eine 3m Leitung am Reset zu hängen.

    Funfact: Das VIA VIP verliert seine Bioseinstellungen wenn ich es nach einem Absturz abschalte, bei einem Reset - oder wenn ich den Rechner normal "unabgestürzt" ausschalte - bleiben die Bioseinstellungen erhalten.

    Und so sieht dann die Test.txt aus: (hier mal von Register 02 (leicht bearbeitet und gekürzt wegen 10k Zeichenlimit), weil es sehr interessant ist wie weit ich damit die Geschwindigkeit runterregeln kann - also langsam kann der VIA schonmal :D)



    unten, wo nur noch "e 02 XXXX" steht gab es hier Abstürze.


    Und hier der aktuell beste Wert:

    Code
    Cachechk                 PC Player      Speedsys                            Superscape
    L1       L2      Mem     VGA     101    CPU      L1       L2       MEM      3D Bench    
    153,8    59,8    33,4    20,2    9,5    52,40    89,61    51,67    36,28    83,3    Vergleichswert EFAR802G
    153,8    59,6    12,8    14,9    8,0    54,32    80,78    42,78    20,32    82,3    Baseline
    153,8    59,7    20,5    18,4    9,6    54,32    84,03    46,08    27,76    83,3    Reg 22=44;Reg 50=99


    Ist Noch viel zu tun - so ein Durchlauf braucht übrigens ~3,5h pro Register - ohne Absturz.

  • Ok, durch mit testen des FIC VIP IO, die Interpretation der Ergebnisse spare ich mir mal, der VIA 486A ist leider 'ne ziemliche Gurke :-/

    Geschwindigkeitssteigernd waren nur Register 22 und Register 50


    Bechreibbare Register:

    01 - Auswirkung auf Geschwindigkeit, nur die oberen 3 Bit änderbar

    02 - Auswirkung auf Geschwindigkeit, siehe Datei

    03 - Auswirkung auf Geschwindigkeit, siehe Datei

    04 - keine Auswirkung auf Geschwindigkeit gemessen, Absturz wenn Bit 0 =0

    0A - keine Auswirkung auf Geschwindigkeit gemessen

    0F - keine Auswirkung auf Geschwindigkeit gemessen, Absturz wenn Bit 0 =1

    11 - keine Auswirkung auf Geschwindigkeit gemessen, Absturz bei xDh / xEh

    20 - keine Auswirkung auf Geschwindigkeit gemessen, Absturz außer bei 56h/58h

    21 - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze siehe Datei

    22 - Auswirkung auf Geschwindigkeit, siehe Datei

    30 - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze siehe Datei

    31 - keine Auswirkung auf Geschwindigkeit

    32 - keine Auswirkung auf Geschwindigkeit

    33 - keine Auswirkung auf Geschwindigkeit

    42 - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze (kein Protokoll)

    50 - Auswirkung auf Geschwindigkeit, nur 98-9B funktionierend

    51 - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze (kein Protokoll)

    52 - keine Auswirkung auf Geschwindigkeit

    54 - keine Auswirkung auf Geschwindigkeit

    56 - keine Auswirkung auf Geschwindigkeit, nur Bit 4 (10) änderbar

    59 - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze (kein Protokoll)

    5A - Auswirkung auf Geschwindigkeit, kein Protokoll

    5B - keine Auswirkung auf Geschwindigkeit gemessen, Abstürze (kein Protokoll)

    5C - keine Auswirkung auf Geschwindigkeit, Bit 3 (08h) immer 1

    5D - keine Auswirkung auf Geschwindigkeit

    5E - keine Auswirkung auf Geschwindigkeit


    Bestes Ergebnis:

    221,88 Punkte beim 386er/486er Benchmark, Standard waren 212,42 :-/


    Ab nächste Woche schau ich mir das SIS basierte VIP-Brett von Matt an.

  • Äh ganz naive Frage was veränderst du da genau in den Registern ? Woher kommt die Leistungssteigerung?

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!