Wertester Schachfreund Michael,
ich schreibe meine Antworten nach Punkten:
Michael Bechmann schrieb:
Computerfachmänner, die auch was von Computerschach wissen, könnten sehr abraten, Tablebases auf SSD einzusetzen.
Angeblich kann man nur sehr begrenzt Daten auslesen oder speichern bevor SSD-Platten aufgeben (angeblich 150 bis 200 TB; weiß es nicht genau).
Besonders bei riesigen 7-TB könnte diese Kapazität schnell erschöpft sein.
Auch große Datenbanken mit CB16 will ich nicht auf der SSD-Platte einsetzen (zumal es nicht schneller funktioniert als auf bei herkömmlichen Platten).
Wie seht ihr das? Es könnte auch mein Problem sein, wenn ich eine externe SSD benutze.
Nebenfrage: können externe SSD über USB3 in einem laufen Partie die großen Datenmengen so schnell bereitstellen, dass es nützt?
mfg Michael
1. SSD-Defekte: Die "Speicherstellen" auf den nichtmechanischen Speichern verschleißen deutlich höher bei Schreibzugriffen. Dann wird ja die Polarisation der Bits einzeln verändert und fixiert. Bei einem reinen Lesevorgang wird ja elektronisch/auf Atomebene mehr oder weniger nichts geändert sondern nur der Zustand ausgelesen und weitergegeben. Daher geben die Hersteller auch die Haltbarkeit bei Lese-/Schreibvorgänge an. Kein "normaler User" nutzt die M.2 nur zum lesen. Das mache aber ich. Das Teil ist ein eigenes Laufwerk wo nur die Endspieldatenbanken drauf sind. Sonst nichts. Daher sollte die Lebensdauer kein Problem sein.
Beweis: Dann müssten ja die RAM-Bausteine auch nach einigen Wochen platt sein. Da werden ja noch ganz andere Datenmengen hin- und hergeschoben (mit ist als Informatiker klar, dass es andere Bausteine sind (non permanent) - dies ist nur zum Vergleich).
2. CB-Datenbanken ist etwas technisch/logisch ganz anderes: Da wird nicht sequentiell gelesen sondern mit einem DBMS (Datenbankmanagement-System) und den entsprechenden Index-Dateien gearbeitet. Da kann man mit ca. 18 Zugriffe den Datensatz innerhalb von Millarden SÄtzen finden.
Beispiel (+/- Version / NICHT Hash-Index - das ist hier zu kompliziert zu erklären): 1000 Datensätze sind gegeben (0-999) und du suchst z.B. Nr. 219. ZEIGER: 500 (0+1000/2) -> zu groß; Zeiger: 250 (0+500/2) -> zu groß; Zeiger: 125 (0+250/2) -> zu klein; Zeiger: 188 (125+250/2) -> zu klein; Zeiger: 219 (188+250/2) -> GEFUNDEN + Zugriff auf die Daten. Damit sind bei 1000 Sätzen hier im Beispiel nur 5 Suchzugriffe benötigt worden um den Satz zu finden. So arbeiten Datenbanken und auch CB. Deshalb benötigt CB nicht unbedingt eine SSD.
Es wird immer der oberste oder unterste Wert genommen und zum aktuellen Zeiger addiert und dann durch 2 geteilt / einfach erklärt. Daher sind solche DBMS auch verflucht schnell da nicht alle Dateninhalte sequentiell durchsucht werden müssen. Diesen SPaß hatte ich mir früher einmal auf einem PC mit dBase bzw. Clipper angetan. Das dauerte.
3. USB SSDs: Schau dir bei z.B. ALTER... die Daten der SSDs und der USB-Schnittstelle an. Das langsamste an dem Datenzugriff ist die Mechanik = die Pladde mit dem Zugriffskamm. Die Mechanik ist locker um den Faktor 1000 (!) langsamer als jede Elektronik. Die Platte dreht sich und je Umdrehung muss der Arm positioniert werden um die exakten Sektoren und Blöcke zu finden. Das geht auch nicht innerhalb von einer Umdrehung. Würde jetzt hier ausarten das zu erklären wie die Mechanik/logischer Aufbau der Sektoren der Platten der Firmware/des Betriebssystem/der Software arbeitet. Es sind immer drei Stufen notwendig: Und das dauert bei "Pladden" halt. Da sind externe USB-SSDs im Vorteil, auch wenn interne via SATA / M.2 ... schneller wären.
Waidmannsheil
Peter
PS: Hatte mir gestern die 6-Steiner geladen. Danke für den Link! Bei der Analyse einer Stellung hatte SF inerhalb einer Minute über 250.000 (!) Tabelbase-Zugriffe gemacht - das Programm wurde ein wenig langsamer durch die 6er. Es ging runter von ca. 25.000KN/s auf ca. 7.000 KN/s.
Aber: Bei Lc0 ist dieser Effekt gar nicht zu sehen!
Weil die Knotenzahl eh langsam ist fällt der Zugriff auf die Endspieldatenbank gar nicht mehr ins Gewicht. Während die GraKas die Bewertung durchs Netz vornehmen wird vom Programm (EXE-Datei auf dem PC - Stellungen generieren) der Abruf der TBs durchgeführt. Ich kenne den Code nicht aber ich habe ein "Gefühl" dafür wie das Zusammenspiel der Komponenten ist.