Seminarium: Systemy Rozproszone
16 listopada 2023 12:15, sala 4070
Szymon Dominikowski, Tymoteusz Wiśniewski



CHERI



Capability Hardware Enhanced RISC Instructions

Błędy pamięci są jednymi z najpopularniejszych, a zarazem najpoważniejszych podatności kodu, toteż od lat próbuje się z nimi walczyć na wszelakie sposoby. Statyczne analizatory, ciasteczka stosu są krokiem w dobrą stronę, ale nie są w stanie wykryć wszystkich przypadków. Bezpieczne języki takie jak Rust czy Go ciągle muszą wywoływać zewnętrzne funkcje, a miliardy linijek kodu w C/C++ w dzień nie wyparują z naszych komputerów.

Na częściowy ratunek przychodzi nam przedmiot mojej prezentacji, CHERI. Jest to rozszerzenie ISA do takich architektur jak RISC-V czy ARM dodające sprzętowe wsparcie do sprawdzania poprawności operacji pamięciowych poprzez dodanie metadanych do wskaźników. Aby skorzystać z benefitów wystarczy tylko zrekompilować istniejący kod źródłowy, czasami z bardzo minimalnymi zmianami, na nowy procesor.

Podczas mojej prezentacji wytłumaczę zasady działania, podam narzuty wydajnościowe oraz pokażę co można już uruchomić na komputerach z CHERI.

Zapraszam,
Szymon Dominikowski



Bibliografia:





BWoS: Formally Verified Block-based Work Stealing for Parallel Processing



Work stealing to popularna technika szeregowania zadań w systemach wielordzeniowych. Używana jest między innymi przez garbage collector maszyny wirtualnej Javy, runtime języka Go i runtime Tokio dla języka Rust. Każdy wątek posiada własną kolejkę zadań do wykonania a w przypadku, gdy jest ona pusta, wątek „podkrada” zadania z kolejek innych wątków aby uniknąć bezczynności. Takie podejście zapewnia równomierne rozmieszczenie zadań na rdzenie procesora, ale powoduje także zwiększoną rywalizację wątków przy synchronizacji dostępów do kolejki.

Opowiem o nowym rodzaju współbieżnej kolejki opartej na buforze cyklicznym, który jest podzielony na bloki. Dzięki podzieleniu kolejki na bloki można oddzielić podkradające wątki od właściciela kolejki i zmniejszyć koszty synchronizacji. Autorzy publikacji podają poprawę przepustowości do 1.26x przy przetwarzaniu danych JSON w Go oraz do 1.12x przy przetwarzaniu zapytań HTTP korzystającego z Tokio.

Zapraszam,
Tymoteusz Wiśniewski



Bibliografia: