2012-01-14 19 views
22

J.M. Siskind's research statement trạng thái:Các tham chiếu khác về cách trình biên dịch Stalin tối ưu hóa một cách tàn bạo?

Stalin là một trình biên dịch tối ưu hóa cho Đề án mà thực hiện toàn bộ chương trình phân tích tĩnh và sử dụng kết quả phân tích đó để tạo mã cực kỳ hiệu quả. Stalin sử dụng một bộ sưu tập lớn các kỹ thuật phân tích tĩnh. Nó thực hiện một dạng phân tích lưu lượng biến đổi mới, sử dụng phép phân tích luồng biến đổi đơn dòng để thực hiện phân tách theo hướng dòng chảy: nhân bản các bản sao chuyên biệt của các thủ tục và phân bổ từng cuộc gọi của các mục tiêu tới các dòng vô tính đó. Nó sử dụng kết quả phân tích dòng chảy để thực hiện phân tích thời gian sống, phân tích thoát, phân tích điểm-điểm và phân tích biệt hiệu. Những phân tích này hỗ trợ một dạng chuyển đổi đóng gói nhẹ mới lạ giúp loại bỏ hầu hết các khe đóng cửa, sử dụng các kỹ thuật như toàn cầu hoá và nội địa hoá biến đổi, nén backchain tĩnh và thường loại bỏ hầu hết các đóng cửa khỏi chương trình. Nó cũng sử dụng các phân tích trên để hỗ trợ quản lý lưu trữ dựa trên khu vực theo dòng chảy, trong đó bộ sưu tập rác trong thời gian chạy được thay thế bằng phân bổ tĩnh và deallocation trên cơ sở từng giá trị trừu tượng và theo từng chương trình. Nó cũng thực hiện chuyển đổi CPS nhẹ theo hướng dòng chảy, sử dụng các mở rộng của các kỹ thuật đi tiên phong với Screamer, để hỗ trợ việc tiếp tục lớp học cực kỳ hiệu quả. Cuối cùng, nó hỗ trợ việc sắp xếp dòng nội tuyến và trình bày mức thấp để chọn việc thực hiện (hoặc không thực hiện) các thẻ, kiểm tra thẻ và gửi thẻ trên cơ sở giá trị theo từng giá trị và theo từng chương trình. Điều này giúp loại bỏ hầu hết các thẻ thời gian chạy, kiểm tra thẻ, gắn thẻ, xóa thẻ, gửi thẻ, đánh boxing và bỏ hộp từ các chương trình. Những phân tích và tối ưu hóa này cho phép Stalin tạo ra mã cực kỳ hiệu quả vượt trội hơn tất cả các trình biên dịch Scheme khác bởi các yếu tố khác nhau giữa hai và một trăm, đặc biệt cho mã số lượng lớn. Stalin thường tạo ra mã tốt hơn mã c viết tay và Fortran.

Tôi có thể tìm thấy giấy rất thú vị sau đây về đóng cửa/triển khai thực hiện chức năng: Flow-Directed Lightweight Closure Conversion. Tôi cũng đã gửi email cho tác giả để hỏi về các giấy tờ về các chủ đề khác, được đề cập như được viết trong giấy chuyển đổi đóng cửa:

Siskind, J. M. 2000a. Chuyển đổi CPS nhẹ theo hướng dòng chảy. Để chuẩn bị.

Siskind, J. M. 2000b. Đa hướng theo hướng dòng chảy. Để chuẩn bị.

Siskind, J. M. 2000c. Lựa chọn biểu diễn theo dòng chảy. Để chuẩn bị.

Siskind, J. M. 2000d. Quản lý lưu trữ theo hướng dòng chảy. Để chuẩn bị

Thật không may, anh ấy không bao giờ có xung quanh để viết những giấy tờ đó. Câu hỏi của tôi đối với bạn là: có bất kỳ giấy tờ thay thế hoặc liên quan nào đề cập đến các chủ đề này không? Tôi rất quan tâm để tìm hiểu cách Stalin (hoặc các trình biên dịch khác) có thể biên dịch một ngôn ngữ cấp cao như Scheme là rác được thu thập, tự động gõ, hỗ trợ các hàm lớp đầu tiên, và thậm chí là các lớp tiếp theo đầu tiên. .

+10

Tôi tự hỏi, tại sao các phiếu bầu ở đây? –

+0

Có lẽ một số người nghĩ rằng đó là một trò đùa vì tiêu đề? Nhiều khả năng, họ nghĩ nó quá lý thuyết. Tôi không đồng ý. –

+0

Có lẽ vì câu hỏi phù hợp hơn với stackexchange cstheory. – erjiang

Trả lời

4

R. Kent Dybvig's publications list.

Chỉnh sửa: Giới thiệu tốt về Chez Scheme là ICFP presentationpaper that went along with that. Một số giấy tờ liên quan đến Đề án cụ thể (macro, nhiều giá trị, tiếp tục) và một số được áp dụng rộng rãi hơn (Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling).

+1

Bất kỳ điều gì đặc biệt áp dụng để tối ưu hóa trình biên dịch Scheme? – spacemanaki

+0

Bạn đã xem danh sách chưa? – erjiang

+2

Vâng tôi đã làm, và một số tiêu đề rõ ràng là không liên quan đến tối ưu hóa trình biên dịch trong khi những người khác có thể được nhưng tôi không chắc chắn nơi một nơi tốt để bắt đầu là. Tôi đã không cố gắng để được snarky, tôi đã thực sự tò mò. Có một bài báo nào mà bạn nghĩ là một khởi đầu tốt không? – spacemanaki

Các vấn đề liên quan