18 / 20 · Konzept
Vorzeichen- und Grenztests entwerfen
Kombinieren Sie arithmetische, Form- und Steuerungsgrenzen über ein einfaches Erfolgsbeispiel hinaus.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Eingaben wählen, die Fehler unterscheiden
Das positive 2×2-Beispiel zeigt Versatz und Indizierung, aber keine Vorzeichenerweiterung oder Sättigung. Matrizen mit lauter Einsen helfen bei Zählerprüfungen, können jedoch Transposition verbergen. Verwenden Sie asymmetrische Werte, negative Werte, Nullen und unterschiedliche Zeilen und Spalten.
A=[[2,−1],[0,3]] und B=[[4,5],[−2,1]] ergeben [[10,9],[−6,3]]. Dies enthält positive und negative Ausgaben sowie eine gültige Null. Eine Einheitsmatrix B muss A reproduzieren. Eine Nullmatrix B muss Nullausgaben liefern, während jedes PE trotzdem K Terme verarbeitet.
Für W=8, K=4 ergibt wiederholtes Minimum×Minimum 65536, wiederholtes Minimum×Maximum −65024 und wiederholtes Maximum×Maximum 64516. Alle passen in AW=18. Wer nur den größten positiven Operanden testet, verfehlt das größte positive Produkt.
Bei A-Zeile [−128,−128,127,127] und B-Spalte [−128,127,−128,127] lauten die Produkte [16384,−16256,−16256,16129]. Ihre Summe ist eins, mit Präfixsummen [16384,128,−16128,1]. Ein kleines Endergebnis rechtfertigt keinen schmalen Zwischenakkumulator.
Form- und Steuerungsgrenzen abdecken
N=1,K=1 ist nach E0 fertig. N=3,K=1 endet trotzdem erst nach E4, weil Operanden das Gitter durchlaufen. N=1,K=5 ist ein Skalarprodukt über fünf Flanken ohne räumlichen Versatz. Tests mit K=1,2,3,4 überschreiten Zählerbreitengrenzen, besonders den Unterschied zwischen dem Speichern von K−1 und K.
Fügen Sie Pausen vor dem ersten MAC, mitten in der Reduktion und vor dem letzten MAC ein. Blockieren Sie Ausgaben nach dem Abschluss. Setzen Sie Reset nach dem Löschen, mitten im Auftrag und während ein gültiges Ergebnis aussteht. Eine Ausgabe des alten Auftrags nach Reset ist ein Fehler. Vergleichen Sie exakt teilbare Kachelformen mit Formen, die eine Zeile oder Spalte übriglassen; prüfen Sie Masken anhand der Koordinaten.
Definieren Sie für jeden erfolgreichen Fall Matrix, exakte Listen verarbeiteter Terme, Anzahl der advance-Flanken, Pausenzahl und ausgegebene Koordinaten. Negativtests benötigen eine erwartete Fehlerkategorie. Halten Sie exakte Akkumulatorprüfungen getrennt von Ausgabequantisierung. Feste Grenzfälle und Zufallstests mit Startwerten machen Fehler reproduzierbar und erweitern die Abdeckung über ein einzelnes Beispiel hinaus.
Selbst ausprobieren
Bestimmen Sie für N=3,K=1 die letzte Flankennummer und die Flankenanzahl. Bestimmen Sie außerdem die Summe aus vier Minimum×Maximum-Termen für W=8,K=4.
Erklärung lesen
Die letzte Flankennummer ist 1+6−3=4, also fünf Flanken E0..E4. Ein Minimum×Maximum-Produkt beträgt −16256; vier ergeben −65024.