Hallo Leute,
vielleicht geht es euch manchmal wie mir, dass ihr ein paar Features im BIOS vermisst, sei es das aggressivste RAM-Timing, ein schlaffer ISA-Bus Clockteiler oder nicht setzbarer Latency-Timer und und und. Vermeintlich gleiche Mainboards ( gleicher Chipsatz ) schneiden in den Benchmark Ergebnissen unterschiedlich ab und das ist allein durch leicht unterschiedliche Takte nicht zu erklären. Man kann versuchen ein aktuelleres BIOS zu bekommen, oder von einem anderen Mitbewerber mit gleicher Ausstattung, aber wenn das nicht hilft, hilft möglicherweise ein Blick auf die Chipsatz-Register und das Datenblatt des Chipsatzes.
Der/Die eine oder andere wird es sicherlich schon kennen, aber ich wollte es auch für mich mit aufschreiben, damit ich es nicht wieder vergesse.
Zur Verwendung kommt das Chipsetter Tool(s) PCI-Set ( unter Dos ) vom Uwe Sieber ( 1999 ).
In dem Pack sind drei Tools enthalten. Das erste nennt sich PCI2ERRL, und ist dabei behilflich das Vorhandensein des gewünschten PCI-Devices vom Hersteller xxxx Typ yyyy abzuklären.
Beispiel: Intel BX440 Host Bridge
Schaut man in das Datenblatt des 82443BX Chipsatzes, findet man dort eine Register-Map. Die ersten beiden 16-Bit Werte sind die Vendor-ID ( in unserem Fall die 8086h ) und die Device ID ( 7190h ), die wir hierfür benötigen.
Testen wir also das Tool mit:
Ein gutes Zeichen, also sollte das Datenblatt zu unserer Host-Bridge passen.
Das nächste Tool ALLREGS hilft dabei einen Snapshot aller 256 PCI-Register zu erstellen. Ohne weitere Angabe eines Parameters werden automatisch alle Register der Host-Bridge ausgegeben. Man kann aber auch jedes andere beliebige PCI-Device ansprechen und mit der hier verwendeten Syntax auslesen.
Die neu erstellte Datei bios.txt enthält dann folgendes (u.A. unsere Einstellungen aus dem BIOS und durch dieses gesetzten Chipsatz-Register):
01, 80 = 1000.0000
02, 90 = 1001.0000
03, 71 = 0111.0001
04, 06 = 0000.0110
05, 00 = 0000.0000
06, 10 = 0001.0000
07, 22 = 0010.0010
08, 02 = 0000.0010
.
.
FF, 00 = 0000.0000
Alles anzeigen
Zu erwähnen ist, dass hier der Offset-0 verschwiegen wird. Die DeviceID (7190h) ist in Offset-3 (71h) und OffSet-2(90h) zu finden, von der VendorID sehen wir nur den Offset-1(80h). Falls jemand trotzdem Wert drauf legt, das Low-Byte der VendorID auszulesen, so kann er das mit dem dritten Tool tun.
Beispiel Memory-CL-Rate:
Mit dem Tool PCISET ist es möglich, gezielt Register in der Host-Bridge auszulesen und ggf. zu manipulieren.
Werfen wir wieder einen Blick ins Datenblatt des BX440 Chipsatzes. Da finden wir ein sogenanntes SDRAM Control Register. ( 76h - 77h ).
Es interessieren uns hier die ersten drei Bits.
Schauen wir uns also den Istzustand an mit:
Die Argumenet nochmal im einzelnen
PCISET .. das auszuführende Programm
7190 .. die Device-ID
8086 .. die Vendor-ID
76 .. das gewünschte Register ( hexadezimal )
00000000 .. Maske der zu ändernden Bits ( alles '0' bedeutet keine Änderung an den Bits )
00000000 .. Wert der zu ändernden Bits ( in diesem Fall hier egal )
Die Ausgabe sieht nun wie folgt aus:
Chip-Setter zu direkten Änderung von PCI-Registern der Host-Bridge
(c) 1998-99 Uwe Sieber
Know How aus c't magazin für computertechnik
vorher : 76h: 0001.0100
nachher: 76h: 0001.0100
Fangen wir mit der ganz rechten '0' an. Dies ist in dieser Darstellung die Bit-Position 0 und laut Datenblatt steht dort die Einstellung für das SDRAM RAS# Precharge.
Die nächste 0 ist dann also das RAS to CAS Delay. Dann kommt eine '1' für die CAS Latency.
Aha, überprüfen wir das mal mit SiSoftSandra2002.
Nun ändern wir mal die Bits0/1 auf 1, um den Speicher zu beschleunigen, was mir im BIOS nicht gelungen ist.
Als Maske, setze ich auch wirklich nur die untersten beiden Bits, damit die anderen Settings unangetastet bleiben.
Die Ausgabe wird mir mit diesem hier quittiert:
Chip-Setter zu direkten Änderung von PCI-Registern der Host-Bridge
(c) 1998-99 Uwe Sieber
Know How aus c't magazin für computertechnik
vorher : 76h: 0001.0100
nachher: 76h: 0001.0111
Es scheint geklappt zu haben. Schauen wir zu SiSoft Sandra.
SiSoft Sandra bestätigt mir die neuen Einstellungen auch mit einem höheren Speicherdurchsatz.
Um das Register wieder auf den alten Wert zu bringen müsste man also folgendes machen:
Wieder mit den zwei Einsen die entsprechenden beiden Bits maskieren und den Wert auf 0 zurücksetzen. Aber wer will das schon, außer zum Test
Ich bin ja immer ein Fan von Kommandozeilen-Tools. So ist es möglich, seine eigenen Settings per AUTOEXEC zu laden oder später eben erst im Windows.
Vielleicht gibts es ja noch andere Ideen, welche PCI-Devices wir damit manipulieren können.
Bzw. sieht man auch was andere TweakTools im Chipsatz verleiern, in dem man vor dem TweakTool-Start einen Snapshot generiert und natürlich danach. Danach einfach ein FC und man sieht schön die veränderten Register.
Vielleicht hilft es ja dem ein oder anderen.