Powiedzmy, że 32-bitowa wartość jest zapisywana w miejscu w pamięci, które obejmuje 2 strony. Dla dobra argumentu przyjmijmy, że 2 bajty kończą się na pierwszej stronie, a 2 kolejne na drugiej. Pierwsza strona jest zapisywalna, ale druga strona nie jest mapowana. Wykonanie instrukcji w całości spowoduje błąd strony i jest to w porządku.Co się stanie, gdy niepodpisany zapis przekroczy granicę strony i zostanie wywołana usterka?
Moje pytanie brzmi: czy wyzwalacz błędu strony wystąpi przed lub po zapisaniu pierwszych 2 bajtów wartości w pamięci? Innymi słowy, kod będzie działał po tym, jak błąd (na przykład program obsługi błędów) będzie w stanie zaobserwować częściowy zapis?
Załóżmy, że środowisko X86, ponieważ podejrzewam, że zachowanie może być architektury, a może nawet konkretnego modelu.
IIRC, cały zapis zostaje przerwany z winy. Podręczniki Intel x86 powinny dokumentować to szczegółowo, jeśli chcesz dokładnie sprawdzić. Mniej pewne na ten temat, ale ukryte magazyny IIRC AVX512 * mogą * faktycznie przechowywać niektóre z elementów (bez wad) przed popełnieniem błędu. Właśnie sprawdziłem instrukcję refaktoryzacji ISA dotyczącą instrukcji rozpraszania, a oni nie mówią, że: symbole rozproszone sprawdzają błędy w określonej kolejności. (Ale w przypadku pojedynczego elementu rozproszenia, jeśli to jest błąd, to w ogóle nie jest wykonywane.) –
Byłbym zaskoczony, gdyby istniały jakiekolwiek architektury, które pozwalałyby na częściowe przechowywanie na stronie, która nie jest wadliwa. BTW, linki do podręczników x86 Intela w [wiki tagu x86] (https://stackoverflow.com/tags/x86/info). –
@PeterCordes - Nie sprawdzałem sklepów AVX-512, ale bez wątpienia tak to działa. Nawet zbieracze AVX2 działają w ten sposób: aktualizują rejestr masek po każdej operacji zbierania (co do zasady w każdym razie), aby można je było przerwać (tak mi się wydaje), więc jeśli zostanie zgłoszony wyjątek, część ładunku mogła już zostać zakończona, a rejestr maski odzwierciedli to (więc potencjalnie problem można naprawić i ponowne uruchomienie obciążenia). Bez wątpienia AVX-512 zbiera się tak samo i byłoby dziwnie, gdyby rozproszenia były inne. – BeeOnRope