2012-01-14 13 views
22

J.M. Siskind's research statement stanowi:Inne odniesienia do brutalnego optymalizowania kompilatora Stalina?

Stalin jest kompilatora na schemacie, który wykonuje całego programu analizy statycznej i wykorzystuje wynik tej analizy generuje bardzo wydajnego kodu. Stalin wykorzystuje duży zbiór technik analizy statycznej. Wykonuje nowatorską formę analizy przepływu wielowariantowego, która wykorzystuje iteracyjną analizę przepływu monowariantowego w celu wykonywania rozdzielania strumieniowego: klonowanie wyspecjalizowanych kopii procedur i przypisywanie docelowych obiektów do takich klonów za miejsce wywołania. Wykorzystuje wyniki analizy przepływu do wykonywania analiz w czasie życia, analizy ucieczki, analizy punktów i analizy aliasów. Analizy te wspierają nową formę lekkiej konwersji zamknięć, która eliminuje większość szczelin zamykających, wykorzystując takie techniki, jak zmienna globalizacja i lokalizacja, kompresuje statyczny backchain i zwykle eliminuje większość zamknięć programów. Wykorzystuje również powyższe analizy do obsługi ukierunkowanego na przepływ zarządzania pamięcią w oparciu o region, w którym to procesie wyrzucanie elementów do pamięci jest zastępowane statyczną alokacją i dealokacją na podstawie wartości abstrakcyjnej i na podstawie programu. Wykonuje również ukierunkowaną na strumień, lekką konwersję CPS, wykorzystując rozszerzenia technik pionierskich w Screamer, aby wspierać ekstremalnie efektywne kontynuacje pierwszej klasy. Na koniec obsługuje on opcję bezpośredniego wyświetlania i wyboru reprezentacji niskiego poziomu, aby wybrać implementację (lub brak implementacji) znaczników, sprawdzanie znaczników i wysyłanie znaczników na podstawie wartości abstrakcyjnej i punktu programowego. Eliminuje to większość tagów czasu pracy, sprawdzanie tagów, tagowanie, usuwanie tagów, wysyłanie tagów, boksowanie i rozpakowywanie z programów. Te analizy i optymalizacje umożliwiają Stalinowi generowanie niezwykle wydajnego kodu, który przewyższa wszystkie inne kompilatory schematów o współczynniki od dwóch do stu, szczególnie w przypadku kodu liczbowo intensywnego. Stalin często generuje kod, który przewyższa odręczny kod c i Fortran.

udało mi się znaleźć następujące bardzo interesujący papieru na zamknięciach/funkcja zwraca realizacji: Flow-Directed Lightweight Closure Conversion. Ja również e-mail do autora z prośbą o dokumenty na inne tematy, które są wymienione jako być napisane w gazecie konwersji Zamknięcie:

Siskind, J. M. 2000a. Płynna, lekka konwersja CPS. W przygotowaniu.

Siskind, J. M. 2000b. Poliwariancja ukierunkowana na przepływ. W przygotowaniu.

Siskind, J. M. 2000c. Wybór reprezentacji ukierunkowanej na przepływ. W przygotowaniu.

Siskind, J. M. 2000d. Zarządzanie magazynem ukierunkowane na przepływ. W przygotowaniu

Niestety, nigdy nie pisał tych dokumentów. Moje pytanie brzmi: czy istnieją jakieś alternatywne lub powiązane artykuły, które obejmują te tematy? Jestem bardzo zainteresowany nauczeniem się, w jaki sposób Stalin (lub inne kompilatory) może skompilować tak wysoki poziom języka, jak Schemat, który jest zbiorem śmieci, dynamicznie wpisany, obsługuje funkcje pierwszej klasy, a nawet pierwszej klasy kontynuacji, może być statycznie skompilowany do tak wydajnego kodu .

+10

Zastanawiam się, dlaczego tu są bliskie głosy? –

+0

Może niektórzy myślą, że to żart z powodu tytułu? Bardziej prawdopodobne, że uważają to za zbyt teoretyczne. Nie zgadzam się. –

+0

Prawdopodobnie dlatego, że pytanie jest lepiej dostosowane do zmiany stosu cstheory. – erjiang

Odpowiedz

4

R. Kent Dybvig's publications list.

Edit: Dobre wprowadzenie do Schematu Chez jest jego ICFP presentation i paper that went along with that. Niektóre dokumenty odnoszą się konkretnie do Schematu (makra, wielokrotne wartości, kontynuacje), a niektóre z nich są szerzej stosowane (Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling).

+1

Wszystko, co dotyczy optymalizacji kompilatorów schematów? – spacemanaki

+0

Czy spojrzałeś na listę? – erjiang

+2

Tak, zrobiłem, a niektóre tytuły nie są oczywiście związane z optymalizacją kompilatorów, podczas gdy inne mogą być, ale nie jestem pewien, gdzie jest dobre miejsce na rozpoczęcie. Nie próbowałem być chytry, byłem naprawdę ciekawy. Czy istnieje jeden papier, który Twoim zdaniem byłby dobrym początkiem? – spacemanaki

Powiązane problemy