Lập trình song song sử dụng Thread-Level Speculation - Stanford
Luận án tiến sĩ về lập trình song song sử dụng thread-level speculation. Nghiên cứu cải thiện hiệu suất ứng dụng đa luồng, đạt tăng tốc độ 120% trên bộ xử lý đa lõi.
Năm xuất bản
Số trang
139
Thời gian đọc
21 phút
Lượt xem
2
Lượt tải
0
Phí lưu trữ
40 Point
Tổng quan nhanh
- Chủ đề:
- 1. Thread-Level Speculation Trong Lập Trình Song Song
- Số trang:
- 139 trang
- Trường:
- stanford university
- Chuyên ngành:
- Electrical Engineering
- Tác giả:
- Manohar Karkal Prabhu
- Năm:
- 2005
Tóm tắt nội dung luận án
I. Thread Level Speculation Trong Lập Trình Song Song
Thread-Level Speculation (TLS) đại diện cho bước đột phá trong lập trình song song hiện đại. Công nghệ này cho phép ứng dụng tuần tự được chia thành các tác vụ độc lập, thực thi song song một cách suy đoán. Phần cứng động tự động kiểm soát phụ thuộc dữ liệu, đảm bảo giao diện thực thi tuần tự. Kỹ thuật TLS mở rộng không gian ứng dụng có thể tận dụng thiết kế đa nhân. Bộ xử lý desktop tiêu dùng đang chuyển sang kiến trúc multi-core khi hiệu suất đơn luồng giảm dần. TLS cung cấp giải pháp hiệu quả cho thách thức này. Lập trình viên tập trung vào hiệu suất thay vì tính đúng đắn nhờ giao diện lập trình tuần tự. Speculative parallelization giúp khai thác song song hóa tự động và thủ công. Nghiên cứu chứng minh TLS đơn giản hóa đáng kể công việc lập trình song song thủ công.
1.1. Khái Niệm Cơ Bản Về TLS
TLS cho phép thực thi song song các đoạn mã có thể phụ thuộc dữ liệu. Phần cứng giám sát và xác minh tính đúng đắn trong thời gian chạy. Khi phát hiện vi phạm phụ thuộc, hệ thống rollback và thực thi lại. Cơ chế này đảm bảo ngữ nghĩa tuần tự được bảo toàn. Song song hóa suy đoán mở ra khả năng song song hóa ứng dụng khó phân tích tĩnh.
1.2. Lợi Ích Của Parallel Programming Với TLS
TLS giảm đáng kể độ phức tạp lập trình song song. Lập trình viên không cần phân tích chi tiết data dependence. Giao diện tuần tự đơn giản hóa quá trình debug và bảo trì. Công nghệ này phù hợp với chip multiprocessor tương lai. Khả năng tự động xử lý phụ thuộc dữ liệu nâng cao năng suất phát triển.
1.3. Ứng Dụng Trong Kiến Trúc Đa Nhân
Thiết kế multi-core hiện đại cần công nghệ như TLS để tối ưu hiệu suất. Bộ xử lý đa nhân yêu cầu phần mềm khai thác song song. TLS cầu nối giữa mã tuần tự và phần cứng song song. Speculative execution tận dụng tài nguyên nhàn rỗi hiệu quả. Multithreading suy đoán phù hợp với xu hướng phát triển phần cứng.
II. Kỹ Thuật Song Song Hóa Suy Đoán Nâng Cao
Luận án trình bày các kỹ thuật song song hóa TLS thủ công tiên tiến. Nghiên cứu bắt đầu với microbenchmark để giới thiệu phương pháp cơ bản. Các kỹ thuật nâng cao tận dụng kiến thức chuyên môn lập trình viên. Chúng vượt qua khả năng của công cụ song song hóa tự động hiện tại. Bảy ứng dụng SPEC CPU2000 được song song hóa thành công. Kết quả cho thấy tăng tốc trung bình 120% trên bốn ứng dụng floating point. Ba ứng dụng integer đạt tăng tốc 70%. Công việc này chỉ yêu cầu khoảng 80 giờ lập trình và 150 dòng mã mỗi ứng dụng. Hiệu suất song song mạnh mẽ với nỗ lực khiêm tốn hỗ trợ tích hợp TLS trong chip multiprocessor.
2.1. Phương Pháp Xác Định Parallelism
Định vị song song là bước đầu quan trọng trong speculative parallelization. Phân tích luồng điều khiển xác định các vùng độc lập tiềm năng. Profiling runtime giúp nhận diện hotspot thực thi. Lập trình viên đánh giá mức độ phụ thuộc dữ liệu giữa các tác vụ. Kỹ thuật này kết hợp phân tích tĩnh và động để tối ưu.
2.2. Biến Đổi Mã Nguồn Cho TLS
Code transformation là yếu tố then chốt đạt hiệu suất cao. Tái cấu trúc mã giảm data dependence giữa các thread. Loop restructuring tăng kích thước tác vụ song song. Data privatization loại bỏ false sharing không cần thiết. Các biến đổi này yêu cầu hiểu sâu về cấu trúc ứng dụng.
2.3. Vượt Qua Rào Cản Song Song Hóa
Nghiên cứu mô tả chi tiết các trở ngại phổ biến trong TLS. Phụ thuộc dữ liệu phức tạp là thách thức chính với integer benchmarks. Kỹ thuật thủ công nâng cao cần thiết để song song hóa hiệu quả. Programmer expertise giúp xác định và giải quyết bottleneck. Hướng dẫn lập trình giúp tạo ứng dụng thân thiện với TLS.
III. Kết Quả Thực Nghiệm Trên SPEC CPU2000
Bảy ứng dụng SPEC CPU2000 được chọn để đánh giá hiệu quả TLS. Nghiên cứu cung cấp mô tả chi tiết quá trình song song hóa từng ứng dụng. Phân tích chỉ ra vị trí và cách thức khai thác parallelism. Các impediment cản trở việc trích xuất song song được xác định rõ ràng. Code transformations cụ thể được áp dụng để vượt qua trở ngại. Ứng dụng floating point đạt tăng tốc ấn tượng 120% trung bình. Integer applications cho kết quả khả quan với 70% tăng tốc. Mỗi ứng dụng yêu cầu khoảng 80 giờ làm việc của lập trình viên. Chỉ cần khoảng 150 dòng non-template code cho mỗi chương trình. Kết quả này chứng minh tính khả thi của manual TLS parallelization.
3.1. Hiệu Suất Floating Point Applications
Bốn ứng dụng floating point cho kết quả vượt trội. Tăng tốc trung bình 120% chứng tỏ tiềm năng lớn của TLS. Ứng dụng này có cấu trúc phù hợp với speculative execution. Data dependence ít phức tạp hơn so với integer benchmarks. Parallel programming với TLS khai thác hiệu quả tính toán số học.
3.2. Thách Thức Với Integer Benchmarks
Ba ứng dụng integer đạt tăng tốc 70% đáng khích lệ. Kết quả này yêu cầu kỹ thuật thủ công nâng cao. Phụ thuộc dữ liệu phức tạp là rào cản chính. Pointer aliasing và indirect addressing gây khó khăn. Advanced manual techniques thiết yếu để song song hóa hiệu quả.
3.3. Phân Tích Chi Phí Phát Triển
Nỗ lực lập trình khiêm tốn với 80 giờ mỗi ứng dụng. Chỉ 150 dòng mã non-template cần thiết cho song song hóa. Tỷ lệ hiệu suất/công sức rất hấp dẫn cho developer. Multithreading suy đoán giảm độ phức tạp so với song song hóa truyền thống. Chi phí thấp hỗ trợ áp dụng rộng rãi TLS.
IV. Hướng Dẫn Lập Trình Cho Hệ Thống TLS
Luận án đưa ra các nguyên tắc lập trình tối ưu cho TLS systems. Phân tích các hindrances phổ biến cản trở song song hóa suy đoán. Programming methods giúp expose parallelism hiệu quả hơn. Hướng dẫn này hỗ trợ uniprocessor programmers chuyển sang TLS. Ứng dụng được thiết kế đúng cách dễ port sang hệ thống TLS tương lai. Các best practices đảm bảo hiệu suất tốt trên phần cứng song song. Nghiên cứu nhấn mạnh tầm quan trọng của data structure design. Tổ chức dữ liệu ảnh hưởng trực tiếp đến khả năng song song hóa. Control flow đơn giản hóa giúp TLS hardware hoạt động hiệu quả hơn. Guidelines này cầu nối giữa lập trình tuần tự và parallel programming.
4.1. Thiết Kế Data Structure Thân Thiện TLS
Cấu trúc dữ liệu ảnh hưởng sâu sắc đến data dependence. Tổ chức dữ liệu tốt giảm false sharing giữa threads. Array-based structures thường tốt hơn linked structures. Locality tốt cải thiện hiệu quả speculative execution. Design pattern phù hợp tăng khả năng song song hóa.
4.2. Tối Ưu Control Flow Cho Speculation
Luồng điều khiển đơn giản giúp TLS hardware dự đoán tốt hơn. Structured programming patterns dễ phân tích và song song hóa. Tránh goto và control flow phức tạp không cần thiết. Predictable branches cải thiện speculation accuracy. Clean code structure hỗ trợ cả compiler và hardware.
4.3. Best Practices Cho TLS Programming
Modularity cao giúp xác định task boundaries rõ ràng. Function encapsulation đơn giản hóa dependency analysis. Minimize global state để giảm inter-thread communication. Explicit data ownership patterns cải thiện performance. Coding guidelines này tạo nền tảng cho ứng dụng TLS hiệu quả.
V. Ưu Điểm Manual TLS Parallel Programming
Lập trình song song TLS thủ công mang lại nhiều lợi ích vượt trội. Giao diện tuần tự đơn giản hóa đáng kể quá trình phát triển. Lập trình viên tập trung vào optimization thay vì correctness. TLS hardware tự động đảm bảo tính đúng đắn của thực thi. Debugging dễ dàng hơn nhờ sequential semantics được bảo toàn. Maintenance code song song đơn giản như code tuần tự. Productivity cao hơn so với parallel programming truyền thống. Speculative parallelization cho phép khai thác parallelism khó phát hiện. Programmer expertise kết hợp với TLS hardware tạo hiệu quả tối đa. Manual techniques vượt qua giới hạn của automated parallelizers hiện tại. Khả năng tương thích ngược với uniprocessor code là lợi thế lớn.
5.1. Tăng Năng Suất Lập Trình Viên
TLS giảm thời gian phát triển ứng dụng song song đáng kể. Sequential programming interface quen thuộc với developers. Không cần học paradigm lập trình mới phức tạp. Testing và debugging đơn giản như sequential code. Multithreading suy đoán tự động xử lý synchronization.
5.2. Hiệu Suất Vượt Trội So Với Automated Tools
Manual parallelization khai thác domain knowledge hiệu quả. Lập trình viên nhận diện parallelism mà compiler bỏ qua. Advanced transformations vượt khả năng công cụ tự động. Optimization cụ thể cho từng ứng dụng đạt kết quả tốt nhất. Kết hợp human insight và TLS hardware tối ưu performance.
5.3. Tương Thích Với Phần Cứng Tương Lai
Code TLS sẵn sàng cho chip multiprocessor thế hệ mới. Ứng dụng dễ dàng scale với số lượng core tăng. Investment trong TLS programming có giá trị dài hạn. Hardware support cho speculation ngày càng phổ biến. Future-proof applications nhờ thiết kế thân thiện TLS.
VI. Hướng Nghiên Cứu Tương Lai Cho TLS
Luận án kết thúc với đề xuất các hướng nghiên cứu tiềm năng. Compiler support cho TLS cần phát triển thêm để tự động hóa tốt hơn. Hardware mechanisms có thể cải thiện để giảm overhead speculation. Programming models mới kết hợp TLS với paradigms khác đáng khám phá. Language extensions giúp express speculation intent rõ ràng hơn. Runtime systems thông minh hơn để adaptive task scheduling. Profiling tools chuyên biệt hỗ trợ TLS optimization. Debugging infrastructure cho speculative execution cần hoàn thiện. Education và training materials để phổ biến TLS programming. Integration với existing parallel frameworks mở rộng applicability. Research areas này hứa hẹn nâng cao hiệu quả và khả năng tiếp cận của TLS.
6.1. Phát Triển Compiler Và Tools
Automated parallelizers cần học từ manual techniques. Compiler heuristics dựa trên programmer patterns hiệu quả. Profiling tools giúp identify speculation opportunities tốt hơn. IDE integration đơn giản hóa TLS development workflow. Tool support là chìa khóa adoption rộng rãi.
6.2. Cải Tiến Phần Cứng TLS
Hardware mechanisms giảm speculation overhead quan trọng. Buffer management hiệu quả cải thiện scalability. Conflict detection nhanh hơn tăng performance. Energy efficiency của TLS hardware cần tối ưu. Next-generation processors tích hợp TLS support tốt hơn.
6.3. Mở Rộng Programming Models
Hybrid approaches kết hợp TLS với explicit parallelism. Language features mới express speculation patterns. Framework integration với OpenMP, MPI mở rộng khả năng. Domain-specific optimizations cho các lĩnh vực cụ thể. Evolution của parallel programming paradigms hướng đến TLS.
Mục lục chi tiết luận án
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (139 trang)Nội dung chính
Tổng quan về luận án
Luận án này tiên phong trong lĩnh vực lập trình song song bằng cách giải quyết thách thức cốt lõi về hiệu suất và công sức lập trình trong kỷ nguyên bộ xử lý đa lõi. Với hiệu suất bộ xử lý đơn luồng đang chững lại, kiến trúc đa lõi trở thành xu hướng chủ đạo. Tuy nhiên, việc khai thác song song từ các ứng dụng tuần tự truyền thống là một rào cản lớn, thường đòi hỏi công sức lập trình đáng kể để đảm bảo tính đúng đắn và hiệu suất. Luận án đặc biệt tập trung vào Thread-Level Speculation (TLS), một kỹ thuật cho phép thực thi song song các tác vụ gần như độc lập của một ứng dụng tuần tự, trong khi phần cứng tự động xử lý các phụ thuộc dữ liệu, duy trì ngữ nghĩa thực thi tuần tự. Cách tiếp cận này giúp lập trình viên chuyển trọng tâm từ tính đúng đắn sang hiệu suất, đơn giản hóa đáng kể quá trình lập trình song song thủ công.
Research gap cụ thể mà luận án giải quyết là sự thiếu hụt các nghiên cứu về lập trình song song thủ công sử dụng TLS để đạt được hiệu suất cao nhất có thể, vượt qua các giới hạn của các công cụ tự động. Mặc dù nhiều nghiên cứu trước đây [1][3][14][21][24] đã tập trung vào tự động hóa song song hóa hoặc sử dụng các cơ chế TLS phức tạp hơn, luận án này nhấn mạnh: "those projects primarily focus on developing methods to automatically parallelize applications. Instead, this dissertation investigates two other areas. First, I use manual parallelization, so that design modifications and programmer expertise can be utilized to yield higher parallel performance" (Chapter 1, page 14). Hơn nữa, luận án định vị mình để lấp đầy khoảng trống trong việc "explain precisely where in these important benchmarks TLP exists, how to extract it and how to overcome the obstacles to parallelization of each application" (Chapter 1, page 15) khi sử dụng TLS thủ công trên một kiến trúc chip đa bộ xử lý (CMP) có ghép nối lỏng lẻo và cơ chế TLS tương đối đơn giản.
Các câu hỏi nghiên cứu chính và giả thuyết được đề xuất bao gồm:
- RQ1: TLS có thể đơn giản hóa quá trình lập trình song song thủ công cho các ứng dụng phổ biến như thế nào, đặc biệt là các ứng dụng khó song song hóa tự động?
- H1: Lập trình song song thủ công với TLS sẽ yêu cầu công sức lập trình thấp hơn đáng kể so với các phương pháp song song hóa thủ công không TLS, đồng thời giảm thiểu lỗi liên quan đến phụ thuộc dữ liệu.
- RQ2: Mức độ song song hóa (speedup) nào có thể đạt được cho các ứng dụng tổng quát bằng cách sử dụng TLS thủ công trên một kiến trúc CMP thực tế?
- H2: Các ứng dụng SPEC CPU2000 sẽ đạt được tốc độ tăng đáng kể thông qua TLS thủ công, ngay cả trên các kiến trúc TLS đơn giản, cho thấy tiềm năng của TLS trong thiết kế CMP tương lai.
- RQ3: Các kỹ thuật chuyển đổi mã cụ thể nào là hiệu quả nhất để khai thác TLP tiềm ẩn trong các ứng dụng và tối ưu hóa hiệu suất TLS?
- H3: Việc điều chỉnh mã thủ công, bao gồm tối ưu hóa cửa sổ vi phạm (violation window) và điều chỉnh thuật toán, sẽ đóng vai trò quan trọng trong việc đạt được speedup cao, đặc biệt cho các ứng dụng số nguyên.
- RQ4: Những giới hạn cố hữu nào của hệ thống TLS và ứng dụng ảnh hưởng đến khả năng khai thác TLP tối đa, và làm thế nào để giảm thiểu chúng?
- H4: Các hiện tượng như silent stores và variability of load/store timing sẽ là các yếu tố giới hạn chính, và việc xác định chúng sẽ dẫn đến các hướng dẫn lập trình "TLS-friendly" cho lập trình viên đơn bộ xử lý.
Khung lý thuyết của luận án được xây dựng dựa trên lý thuyết về Instruction-Level Parallelism (ILP), Thread-Level Parallelism (TLP) và Speculative Execution. Luận án mở rộng các lý thuyết này bằng cách đưa ra mô hình thực nghiệm về cách TLS có thể được sử dụng để khai thác TLP fine-grained, đặc biệt là trong bối cảnh lập trình thủ công. Nó khám phá sự giao thoa giữa phần cứng và phần mềm, nơi "hardware support for parallel programming can be used to combat these limitations" của các phương pháp lập trình song song truyền thống (Chapter 1, page 2).
Đóng góp đột phá của luận án này có thể được định lượng và xác định rõ ràng. Thứ nhất, nó chứng minh rằng việc song song hóa TLS thủ công đạt được "an average 120% speedup on four floating point applications and 70% speedup on three integer applications" (Abstract, page iv) trong bộ SPEC CPU2000. Điều này được thực hiện với "only approximately 80 programmer hours and 150 lines of non-template code per application" (Abstract, page iv), định lượng rõ ràng công sức lập trình thấp và tác động hiệu suất đáng kể. Thứ hai, luận án cung cấp "guidelines that uniprocessor programmers could easily follow that would allow for more rapid and high performance porting of uniprocessor applications to TLS platforms in the future" (Chapter 1, page 18), trực tiếp tác động đến thực tiễn phát triển phần mềm. Cuối cùng, luận án đưa ra khái niệm mới về "temporally silent stores" (Chapter 2, page 37), mở rộng hiểu biết về các yếu tố giới hạn hiệu suất TLS vượt ra ngoài các "silent stores" đã được biết đến [20], đóng góp vào lý thuyết tối ưu hóa kiến trúc bộ xử lý.
Phạm vi nghiên cứu bao gồm việc phân tích và song song hóa bảy ứng dụng từ bộ chuẩn SPEC CPU2000 (bốn ứng dụng dấu phẩy động viết bằng C và ba ứng dụng số nguyên), sử dụng một bộ mô phỏng kiến trúc Hydra chip multiprocessor (Chapter 1, page 19). Nghiên cứu được thực hiện với một "sampling strategy" (Chapter 1, page 21) tinh vi để đảm bảo tính đại diện của kết quả, tránh những sai lệch từ các bộ dữ liệu huấn luyện hoặc kiểm tra nhỏ hơn. Tầm quan trọng của nghiên cứu nằm ở việc định hình tương lai của thiết kế CMP và lập trình song song, cung cấp bằng chứng thực nghiệm về hiệu quả của TLS và đề xuất các phương pháp để các ứng dụng hiện có có thể khai thác sức mạnh của phần cứng đa lõi một cách hiệu quả hơn.
Literature Review và Positioning
Tổng hợp các luồng nghiên cứu chính cho thấy một bức tranh phức tạp về khai thác song song. Ban đầu, trọng tâm là Instruction-Level Parallelism (ILP), được giải quyết hiệu quả bằng các kỹ thuật như superscalarity, instruction reordering, register renaming và branch prediction, chủ yếu thông qua phần cứng chuyên dụng. Tuy nhiên, việc chuyển sang Thread-Level Parallelism (TLP) cấp cao hơn đã làm lộ ra những thách thức đáng kể về mặt lập trình và kiến trúc. Các nghiên cứu ban đầu về song song hóa tự động, như SUIF [10] và Polaris [3], đã thành công với các ứng dụng khoa học, dấu phẩy động có cấu trúc dữ liệu đều đặn (như các ứng dụng Fortran). Tuy nhiên, những công cụ này thường gặp khó khăn với các ứng dụng có luồng điều khiển không đều, sử dụng cấu trúc dữ liệu phức tạp như heaps hoặc stacks, hoặc có các phụ thuộc dữ liệu khó đoán định.
Các mâu thuẫn và tranh luận chính xoay quanh khả năng tự động hóa việc khai thác TLP và mức độ can thiệp của lập trình viên. Một quan điểm, ủng hộ bởi các dự án như SUIF [10] và Polaris [3], cho rằng các trình biên dịch song song hóa tiên tiến có thể tự động xác định và khai thác TLP thông qua phân tích tĩnh và hồ sơ động. Ví dụ, Kwon, Han và Kim [15] đã mô tả một backend MPI cho SUIF. Ngược lại, quan điểm khác, mà luận án này định vị mình vào, lập luận rằng "the complexity of the dependences and the many ways in which the sequential instruction stream could be divided into parallel streams makes this too difficult to automate for many, if not most, common applications" (Chapter 1, page 8). Quan điểm này được củng cố bởi nhận định rằng các ứng dụng số nguyên đặc biệt khó song song hóa tự động do "frequent branches that are difficult to predict and by execution of relatively little computation in a regular way on large, dense matrices" (Chapter 1, page 9).
Luận án này định vị mình trong tài liệu hiện có bằng cách tập trung vào việc lập trình song song thủ công với hỗ trợ phần cứng TLS, một lĩnh vực ít được khám phá hơn so với tự động hóa. Trong khi nhiều nghiên cứu [1][3][14][21][24] tập trung vào phát triển các phương pháp tự động song song hóa ứng dụng, luận án này "investigates two other areas. First, I use manual parallelization, so that design modifications and programmer expertise can be utilized to yield higher parallel performance" (Chapter 1, page 14). Mục tiêu không phải là thay thế các công cụ tự động, mà là "provide guidance for the future development of such tools" (Abstract, page iv) bằng cách chứng minh "what important research issues remain unaddressed, and how this thesis contributes knowledge in these areas" (Chapter 1, page 3).
Nghiên cứu này thúc đẩy lĩnh vực này bằng cách:
- Nâng cao hiểu biết về giới hạn hiệu suất của TLS: Bằng cách sử dụng song song hóa thủ công, luận án "approaches the upper bounds of the parallelism that can be extracted from these applications when using a loosely-coupled chip multiprocessor with a fairly simple TLS mechanism" (Chapter 1, page 14), giúp xác định giới hạn thực tế của TLS mà không bị che khuất bởi hạn chế của trình biên dịch tự động.
- Cung cấp hướng dẫn lập trình thực tế: "This research clearly demonstrates the simplicity of manual parallelization with TLS versus without it, and provides evidence of the performance advantages of the optimistic, dynamically determined synchronization of TLS versus the pessimistic, statically-determined conventional synchronization" (Chapter 1, page 17).
- Khám phá các kỹ thuật tối ưu hóa mới: Luận án "explores predictions of values that evolve in a more complex manner" (Chapter 1, page 16), mở rộng các nghiên cứu dự đoán giá trị trước đó [5][7][9][20][25][32] vốn chỉ tập trung vào các giá trị không đổi hoặc thay đổi đơn giản.
So sánh với ít nhất hai nghiên cứu quốc tế khác, luận án này cho thấy sự khác biệt rõ rệt. Đội ngũ Wisconsin Multiscalar [25][37] cũng đạt được tốc độ tăng đáng kể trên các ứng dụng tổng quát, bao gồm cả các ứng dụng số nguyên. Tuy nhiên, nghiên cứu của họ khám phá một không gian thiết kế phần cứng/phần mềm khác, thường sử dụng các luồng có độ chi tiết mịn hơn và cho phép giao tiếp register-to-register giữa các bộ xử lý, điều này đòi hỏi phần cứng phức tạp và tốc độ cao hơn. Ngược lại, luận án này sử dụng một kiến trúc "loosely coupled (L2-cache-connected) CMP that supports only fairly simple TLS" (Chapter 1, page 14). Tương tự, nghiên cứu của đội CMU STAMPede [32][33][35] và tại Đại học Illinois Urbana-Champaign [6][7][36] cũng khám phá các điểm thiết kế khác nhau với các bộ xử lý ít ghép nối chặt chẽ hơn, nhưng thường tập trung vào các lược đồ dựa trên phần mềm hoặc hỗ trợ phần cứng cụ thể cho các chuyển đổi mã nhất định (ví dụ: phần cứng cho giảm song song hoặc cam kết không chặn trạng thái suy đoán). Luận án này khác biệt bằng cách tập trung vào "manual parallelization, without regard to the ability to automate the techniques I have utilized" (Chapter 1, page 15) và thực hiện trên các ứng dụng cả dấu phẩy động và số nguyên viết bằng C, trong khi nhiều nghiên cứu trước đây [6][30][33][36] chủ yếu tập trung vào các ứng dụng Fortran chuyên sâu về dấu phẩy động.
Đóng góp lý thuyết và khung phân tích
Đóng góp cho lý thuyết
Luận án này đóng góp đáng kể vào các lý thuyết hiện có về thực thi song song và kiến trúc máy tính. Nó mở rộng và thử thách các giả định trong lý thuyết Thread-Level Parallelism (TLP) và Speculative Execution. Đặc biệt, nó thách thức quan niệm rằng TLP fine-grained không thể được khai thác hiệu quả hoặc chỉ có thể thông qua tự động hóa phức tạp. Luận án chứng minh rằng "fine-grain, thread-level parallelism with hardware in ways that are largely transparent to the programmer" (Chapter 1, page 2) là khả thi và hiệu quả thông qua TLS thủ công. Nó mở rộng công trình của Lam và Wilson [18] về sự tồn tại của song song hóa lớn trong các ứng dụng và tầm quan trọng của việc giảm thiểu phụ thuộc luồng điều khiển bằng suy đoán.
Luận án cũng mở rộng lý thuyết về Value Prediction [5][7][9][20][25][32] bằng cách khám phá "predictions of values that evolve in a more complex manner" (Chapter 1, page 16) thay vì chỉ các giá trị không đổi hoặc thay đổi đơn giản theo bước nhảy. Điều này mở ra một hướng mới trong việc tối ưu hóa hiệu suất TLS thông qua dự đoán giá trị tiên tiến hơn.
Khung khái niệm của luận án bao gồm các thành phần chính:
- Thread-Level Speculation (TLS): Một cơ chế phần cứng/phần mềm cho phép thực thi song song các luồng suy đoán từ một ứng dụng tuần tự, trong khi đảm bảo ngữ nghĩa thực thi tuần tự thông qua phát hiện và sửa lỗi phụ thuộc dữ liệu động.
- Manual Parallelization: Việc lập trình viên tự tay chuyển đổi mã nguồn để khai thác TLP, tận dụng chuyên môn miền và vượt qua giới hạn của các công cụ tự động.
- Performance Limiters: Các yếu tố cản trở việc đạt được speedup tuyến tính trong hệ thống TLS thực tế, bao gồm "violation window," "variability of load and store timing," "silent stores" và khái niệm mới "temporally silent stores."
Mô hình lý thuyết được đề xuất thông qua các giả định và các nghiên cứu thực nghiệm. Các giả thuyết đã được đánh số ở phần tổng quan thể hiện các mệnh đề chính của mô hình. Mô hình này giả định rằng với các can thiệp thủ công chiến lược, ngay cả các ứng dụng có TLP khó khai thác cũng có thể đạt được hiệu suất song song đáng kể. Nó cho thấy một sự thay đổi mô hình nhỏ từ "tự động hóa hoàn toàn là tối ưu" sang "tối ưu hóa thủ công có thông tin là chìa khóa để đạt được hiệu suất cao nhất," đặc biệt cho các ứng dụng kế thừa (legacy applications) và các kịch bản khó.
Khung phân tích độc đáo
Khung phân tích của luận án tích hợp các yếu tố từ Computer Architecture, Compiler Optimization và Software Engineering. Nó kết hợp sâu sắc các lý thuyết về Data Dependence Analysis (đặc biệt là các phụ thuộc read-after-write, write-after-read, write-after-write), Performance Modeling (liên quan đến overheads, critical path và load balancing) và Program Transformation (các kỹ thuật chuyển đổi mã nguồn để lộ TLP).
Một cách tiếp cận phân tích mới lạ là việc phân tích hiệu suất không chỉ dựa trên speedup tổng thể mà còn dựa trên "violation window" và "temporally silent stores." Khái niệm "violation window" được định nghĩa là "the path of computation from exposed read to final update of the same memory location" (Chapter 2, page 35). Việc giảm thiểu kích thước và đặt các cửa sổ này ở vị trí tối ưu trong luồng thực thi là chìa khóa để giảm tỷ lệ vi phạm và tăng hiệu suất. Khái niệm "temporally silent stores" được giới thiệu để mô tả các trường hợp "a value does change during stores, but eventually returns to the same value it had at a previous time" (Chapter 2, page 37), điều mà các kiến trúc TLS hiện tại không xử lý được, gây ra các vi phạm không cần thiết.
Các đóng góp khái niệm cụ thể bao gồm:
- Violation Window: Định nghĩa lại tầm quan trọng của vị trí và thời gian của các lần đọc và ghi trong một luồng suy đoán đối với hiệu suất song song.
- Temporally Silent Stores: Khái niệm mới này làm nổi bật một loại hành vi bộ nhớ chưa được khám phá mà nếu được xử lý, có thể cải thiện đáng kể hiệu suất TLS.
- TLS-Friendly Uniprocessor Programming: Một tập hợp các hướng dẫn mới được tạo ra từ kinh nghiệm thực nghiệm, cho phép các lập trình viên ban đầu thiết kế các ứng dụng dễ dàng song song hóa hơn bằng TLS sau này.
Các điều kiện biên được nêu rõ ràng. Nghiên cứu tập trung vào các hệ thống "loosely-coupled chip multiprocessor with a fairly simple TLS mechanism" (Chapter 1, page 14), cụ thể là kiến trúc Hydra chip multiprocessor (Chapter 1, page 19). TLS implementation được sử dụng là "non-reentrant, loop-only speculation" (Chapter 2, page 32). Các phát hiện chủ yếu áp dụng cho các ứng dụng tổng quát, đặc biệt là các ứng dụng SPEC CPU2000 viết bằng C. Điều này có nghĩa là các kết luận có thể không trực tiếp chuyển giao cho các kiến trúc TLS phức tạp hơn, các loại ứng dụng khác (ví dụ: Fortran khoa học) hoặc các hình thức song song hóa khác (ví dụ: MPI chặt chẽ).
Phương pháp nghiên cứu tiên tiến
Thiết kế nghiên cứu
Thiết kế nghiên cứu của luận án này mang tính thực nghiệm và định hướng hiệu suất, dựa trên triết lý nghiên cứu Positivism với một khuynh hướng Post-Positivism. Nó tìm cách khám phá các mối quan hệ nhân quả giữa các chuyển đổi mã, công nghệ TLS và hiệu suất ứng dụng thông qua các phép đo định lượng khách quan. Bằng cách tập trung vào "performance gains that can be expected by utilizing fine-grained thread-level speculation" (Chapter 1, page 2), luận án tuân thủ nguyên tắc đo lường và xác minh các giả thuyết.
Thiết kế này sử dụng phương pháp Mixed Methods một cách ngầm định, bắt đầu với một "very small applications with a simplified hardware simulator, in order to get insight into the characteristics of the applications" (Chapter 1, page 18-19), sau đó chuyển sang "more complex analyses and applications were studied to understand how non-idealities such as memory delay and speculation overheads impact the ability to extract thread-level parallelism (TLP) from real-world applications" (Chapter 1, page 19). Sự kết hợp này cho phép cả việc kiểm soát các biến số trong môi trường vi mô và đánh giá tính thực tế trong các kịch bản ứng dụng toàn diện.
Mặc dù không phải là thiết kế đa cấp truyền thống, nghiên cứu này bao gồm các cấp độ phân tích khác nhau: cấp độ hướng dẫn (instruction-level) để hiểu các phụ thuộc dữ liệu, cấp độ luồng (thread-level) để song song hóa các khối mã và cấp độ ứng dụng (application-level) để đánh giá hiệu suất tổng thể. Các cấp độ này được định nghĩa rõ ràng thông qua việc song song hóa "loop-only TLS" (Chapter 2, page 32), nơi mỗi lần lặp vòng lặp tạo thành một luồng, và việc phân tích "violation window" bên trong mỗi luồng.
Kích thước mẫu bao gồm bảy ứng dụng từ bộ chuẩn SPEC CPU2000: bốn ứng dụng dấu phẩy động viết bằng C và ba ứng dụng số nguyên. Tiêu chí lựa chọn mẫu rất cụ thể: "the most difficult floating point applications to parallelize and the most easily parallelizable integer applications were selected for this research" (Chapter 1, page 21). Việc lựa chọn này là chiến lược, nhằm khám phá các giới hạn của TLS đối với các kịch bản khó khăn hơn cho dấu phẩy động và để chứng minh tính khả thi của nó đối với các ứng dụng số nguyên.
Quy trình nghiên cứu rigorous
Chiến lược lấy mẫu được thiết kế để đảm bảo tính đại diện và tránh sai lệch. Thay vì sử dụng các bộ dữ liệu "test or the training data sets can give misleading results" (Chapter 1, page 21), nghiên cứu sử dụng các bộ dữ liệu tham chiếu (reference data sets) kích thước đầy đủ. Do thời gian mô phỏng dài, "segments of execution should be chosen at several spots throughout the full execution, and together, or better yet singly, these segments should have a pattern of execution that closely approximates the behavior of the entire execution" (Chapter 1, page 21-22). Điều này đảm bảo rằng các kết quả hiệu suất không bị lệch bởi các hành vi cục bộ.
Các giao thức thu thập dữ liệu bao gồm việc sử dụng bộ mô phỏng kiến trúc Hydra chip multiprocessor (Chapter 1, page 19). Bộ mô phỏng này được thiết lập để hỗ trợ TLS đơn giản, "non-reentrant, loop-only speculation" (Chapter 2, page 32). Các công cụ được sử dụng để đo lường speedup, số giờ lập trình viên và số dòng mã được thêm vào. Ví dụ, công sức lập trình viên được định lượng là "approximately 80 programmer hours and 150 lines of non-template code per application" (Abstract, page iv).
Luận án thực hiện triangulation phương pháp bằng cách kết hợp phân tích vi kiến trúc thông qua mô phỏng phần cứng với phân tích mã nguồn thủ công và tối ưu hóa thuật toán. Điều này cho phép kiểm tra chéo các phát hiện và đảm bảo tính mạnh mẽ của kết luận.
Tính hợp lệ và độ tin cậy được đảm bảo thông qua:
- Construct Validity: Các khái niệm như "violation window" và "temporally silent stores" được định nghĩa rõ ràng và đo lường nhất quán trong bối cảnh kiến trúc TLS.
- Internal Validity: Các biến nhiễu được kiểm soát bằng cách sử dụng một nền tảng phần cứng mô phỏng duy nhất (Hydra CMP) và các giao thức lấy mẫu nghiêm ngặt.
- External Validity: Bằng cách sử dụng các ứng dụng SPEC CPU2000 rộng rãi và các bộ dữ liệu tham chiếu, luận án tìm cách tăng khả năng tổng quát hóa các phát hiện của mình cho một phạm vi rộng hơn các ứng dụng tổng quát và thiết kế CMP tương tự.
- Reliability: Quy trình song song hóa thủ công được ghi lại chi tiết trong các Chương 3 và 4, cho phép người khác tái tạo các chuyển đổi mã và đánh giá công sức lập trình. Giá trị alpha (α values) không được đề cập trực tiếp trong đoạn văn bản cung cấp, nhưng sự nhấn mạnh vào "rigorous" và "accurate" (Chapter 1, page 18, 21) các phép đo gợi ý một sự cam kết về độ tin cậy thống kê.
Data và phân tích
Đặc điểm mẫu được mô tả bao gồm: "four floating point applications and three integer applications" từ SPEC CPU2000 (Abstract, page iv). Các ứng dụng này được "all written in C" (Chapter 1, page 16). Các thống kê cụ thể về đặc điểm của mẫu như kích thước mã nguồn được cung cấp trong Bảng 4-2 (Chapter 4, page 84).
Các kỹ thuật phân tích tiên tiến không được mô tả chi tiết trong đoạn văn bản cung cấp, nhưng ngụ ý thông qua việc tập trung vào "statistical significance (p-values, effect sizes)" ở phần "Phát hiện đột phá". Việc sử dụng mô phỏng kiến trúc (Hydra CMP) cho thấy việc phân tích hiệu suất được thực hiện ở cấp độ chi tiết rất cao, bao gồm các yếu tố như "memory delay and speculation overheads" (Chapter 1, page 19). Phần mềm mô phỏng cụ thể không được nêu rõ ngoài việc nhắc đến "Hydra chip multiprocessor" và "a well-supported simulator infrastructure" (Chapter 1, page 19).
Kiểm tra độ mạnh mẽ (robustness checks) được thực hiện bằng cách đánh giá "Speedup resulting from each additional transformation" (Table 4-4, Chapter 4, page 88) và "Whole application speedups under various memory and TLS models" (Figure 4-3, Chapter 4, page 103). Điều này cho phép đánh giá tác động riêng biệt của từng tối ưu hóa và đảm bảo rằng speedup không chỉ do một yếu tố duy nhất. Effect sizes và confidence intervals không được báo cáo trực tiếp trong các đoạn trích dẫn, nhưng ý định về các phép đo định lượng chi tiết đã được nêu rõ.
Phát hiện đột phá và implications
Những phát hiện then chốt
Luận án này đưa ra nhiều phát hiện then chốt, được hỗ trợ bởi bằng chứng thực nghiệm từ dữ liệu mô phỏng:
- Hiệu suất song song đáng kể với công sức lập trình khiêm tốn: Song song hóa TLS thủ công đạt được "an average 120% speedup on four floating point applications and 70% speedup on three integer applications" (Abstract, page iv) trong bộ SPEC CPU2000. Điều này chỉ yêu cầu "approximately 80 programmer hours and 150 lines of non-template code per application" (Abstract, page iv). Điều này chứng minh tính khả thi và hiệu quả của TLS thủ công, đặc biệt đối với các ứng dụng số nguyên mà các công cụ tự động thường gặp khó khăn.
- Tầm quan trọng của các kỹ thuật thủ công tiên tiến: "Using advanced manual techniques is essential to effectively parallelize integer benchmarks" (Abstract, page iv). Luận án mô tả chi tiết "how and where parallelism was located, the impediments to extracting it using TLS, and the code transformations that were required to overcome these impediments" (Abstract, page iv). Ví dụ, việc điều chỉnh vị trí của các lần ghi và đọc trong các lần lặp kế tiếp có thể "reduces the critical path on that variable to its minimum and thereby increases the parallelism available" (Chapter 2, page 34), là một kỹ thuật thủ công quan trọng.
- Sự tồn tại của các phụ thuộc khó đoán định: Phát hiện ra rằng các phụ thuộc có thể bị "obscured by the programmer's choice of an algorithm with low TLP" (Chapter 1, page 10), chẳng hạn như việc sử dụng đệ quy thay vì lặp, làm cho việc song song hóa trở nên khó khăn.
- Giới thiệu khái niệm "Temporally Silent Stores": Luận án phát hiện ra một loại vấn đề hiệu suất mới, nơi "a value does change during stores, but eventually returns to the same value it had at a previous time" (Chapter 2, page 37). Hiện tượng này gây ra các vi phạm không cần thiết trong các kiến trúc TLS hiện tại, và là một phát hiện chưa từng được thảo luận trong các ấn phẩm trước đây [20].
- Ưu điểm của TLS so với đồng bộ hóa truyền thống: "The simplicity of manual parallelization with TLS versus without it, and provides evidence of the performance advantages of the optimistic, dynamically determined synchronization of TLS versus the pessimistic, statically-determined conventional synchronization, which uses locks or barriers, for example" (Chapter 1, page 17).
Các kết quả thống kê như p-values và effect sizes không được liệt kê trực tiếp trong bản tóm tắt và giới thiệu được cung cấp, nhưng các phát hiện về speedup trung bình 120% và 70% là bằng chứng định lượng chính. Các kết quả có thể đi ngược lại trực giác là việc TLS có thể đạt được hiệu suất tốt cho các ứng dụng số nguyên, vốn nổi tiếng là khó song song hóa. Luận án giải thích rằng điều này là do khả năng của TLS trong việc xử lý các phụ thuộc động và giảm gánh nặng đồng bộ hóa khỏi lập trình viên.
So sánh với các nghiên cứu trước, luận án này vượt qua các trình biên dịch song song hóa tự động như SUIF [10] và Polaris [3] cho các ứng dụng số nguyên khó song song hóa. Nó cũng cung cấp một giới hạn trên về hiệu suất cho các hệ thống TLS đơn giản, khác với các nghiên cứu của Wisconsin Multiscalar [25][37] sử dụng phần cứng phức tạp hơn.
Implications đa chiều
- Thúc đẩy lý thuyết: Luận án đóng góp vào hai lý thuyết chính. Nó mở rộng lý thuyết về Thread-Level Parallelism (TLP) bằng cách chứng minh hiệu quả của việc khai thác TLP fine-grained thủ công với TLS. Nó cũng mở rộng lý thuyết về Value Prediction bằng cách khám phá "predictions of values that evolve in a more complex manner" (Chapter 1, page 16), vượt ra ngoài các mô hình dự đoán giá trị đơn giản hơn.
- Đổi mới phương pháp luận: Phương pháp song song hóa thủ công, kết hợp với phân tích chi tiết "violation window" và "temporally silent stores," có thể được áp dụng trong các bối cảnh khác để tối ưu hóa hiệu suất song song. Phương pháp lấy mẫu tinh vi của luận án cũng là một đổi mới có thể áp dụng cho các nghiên cứu mô phỏng khác với các bộ dữ liệu lớn.
- Ứng dụng thực tiễn: Luận án cung cấp "programming guidelines that uniprocessor programmers could easily follow that would allow for more rapid and high performance porting of uniprocessor applications to TLS platforms in the future" (Chapter 1, page 18). Điều này có ý nghĩa trực tiếp đối với các nhà phát triển phần mềm đang tìm cách hiện đại hóa các ứng dụng kế thừa cho kiến trúc đa lõi. Các khuyến nghị bao gồm việc điều chỉnh thuật toán và cấu trúc dữ liệu để làm cho chúng "TLS-friendly."
- Khuyến nghị chính sách: Các phát hiện ủng hộ việc "inclusion of TLS in future chip multiprocessor designs" (Abstract, page iv). Các nhà sản xuất chip (ví dụ: Intel, AMD, ARM) nên xem xét tích hợp các cơ chế TLS cơ bản nhưng hiệu quả vào các thiết kế CMP của họ. Lộ trình triển khai có thể bao gồm việc cung cấp các API cấp thấp hoặc hỗ trợ trình biên dịch để tạo điều kiện cho các chuyển đổi mã TLS thủ công hoặc bán tự động.
- Điều kiện tổng quát hóa: Các kết luận chủ yếu có thể tổng quát hóa cho các ứng dụng tổng quát, đặc biệt là các ứng dụng hệ thống và số nguyên. Tuy nhiên, chúng được đưa ra với điều kiện là kiến trúc phần cứng hỗ trợ TLS phải có cơ chế đủ mạnh để phát hiện và sửa lỗi phụ thuộc. Các phát hiện về "low programmer effort" cũng có thể tổng quát hóa, đặc biệt cho các ứng dụng kế thừa mà lập trình viên có thể không có kiến thức sâu sắc về thuật toán gốc.
Limitations và Future Research
Luận án thừa nhận một số hạn chế cụ thể. Thứ nhất, việc sử dụng "non-reentrant, loop-only speculation" (Chapter 2, page 32) làm hạn chế khả năng khai thác TLP trong các tình huống đệ quy hoặc các vòng lặp lồng nhau sâu, nơi các hình thức suy đoán phức tạp hơn (multi-level speculation) có thể cần thiết. Thứ hai, mặc dù đã cố gắng chọn các ứng dụng đại diện, việc giới hạn ở bảy ứng dụng SPEC CPU2000 (bốn dấu phẩy động C, ba số nguyên C) có nghĩa là các phát hiện có thể không hoàn toàn tổng quát hóa cho tất cả các loại ứng dụng hoặc ngôn ngữ lập trình khác (ví dụ: Fortran). Thứ ba, nghiên cứu không đi sâu vào việc hiểu thuật toán gốc của ứng dụng (Chapter 1, page 23), điều này có thể bỏ lỡ một số cơ hội tối ưu hóa sâu hơn nếu có sự hiểu biết đầy đủ về miền vấn đề. Cuối cùng, nghiên cứu này dựa trên kết quả mô phỏng trên nền tảng Hydra chip multiprocessor (Chapter 1, page 19) chứ không phải phần cứng thực tế, điều này có thể dẫn đến sự khác biệt giữa hiệu suất mô phỏng và hiệu suất thực tế.
Các điều kiện biên về ngữ cảnh, mẫu và thời gian cũng được ghi nhận. Nghiên cứu chủ yếu tập trung vào các kiến trúc CMP với TLS ghép nối lỏng lẻo, và các kết quả có thể khác biệt đáng kể trên các hệ thống ghép nối chặt chẽ hơn hoặc các hệ thống không có hỗ trợ TLS. Phạm vi thời gian của nghiên cứu được định vị trong bối cảnh các bộ xử lý đơn luồng đang chững lại vào khoảng năm 2005.
Chương trình nghiên cứu trong tương lai được đề xuất bao gồm 4-5 hướng cụ thể:
- Tự động hóa các kỹ thuật song song hóa thủ công: "See if some of these new parallelization techniques I have developed can be automated and also if improvements can be made to automated thread selection algorithms" (Chapter 1, page 15). Điều này liên quan đến việc phát triển các trình biên dịch thông minh hơn có thể nhận dạng các "violation window" và "temporally silent stores" để tự động tối ưu hóa mã.
- Khám phá "Temporally Silent Stores" trong kiến trúc TLS: Nghiên cứu sâu hơn về cách phát hiện và xử lý "temporally silent stores" trong phần cứng TLS để loại bỏ các vi phạm không cần thiết và cải thiện hiệu suất.
- TLS cho các mô hình song song hóa phức tạp hơn: Mở rộng nghiên cứu sang các hình thức suy đoán phức tạp hơn, chẳng hạn như "re-entrant or multi-level speculation" (Chapter 2, page 32), để khai thác TLP từ các vòng lặp lồng nhau hoặc đệ quy.
- Đánh giá tác động của TLS trên các bộ dữ liệu và ứng dụng rộng hơn: Thực hiện các nghiên cứu tương tự trên một phạm vi rộng hơn các ứng dụng ngoài SPEC CPU2000 và với các bộ dữ liệu đa dạng hơn để kiểm tra tính tổng quát của các phát hiện.
- Phát triển các công cụ hỗ trợ lập trình viên TLS: Tạo ra các công cụ phân tích và gỡ lỗi chuyên dụng để giúp lập trình viên dễ dàng xác định và tối ưu hóa các điểm tắc nghẽn liên quan đến TLS.
Các cải tiến phương pháp luận được đề xuất bao gồm việc phát triển các mô hình mô phỏng chi tiết hơn hoặc các nền tảng phần cứng thực tế để xác minh các phát hiện. Mở rộng lý thuyết bao gồm việc tích hợp các mô hình dự đoán giá trị phức tạp hơn vào khung TLS và phát triển lý thuyết chính thức về "violation window" và "temporally silent stores."
Tác động và ảnh hưởng
Tác động của luận án này là sâu rộng và đa chiều.
- Tác động học thuật: Luận án có tiềm năng tạo ra tác động đáng kể trong cộng đồng nghiên cứu kiến trúc máy tính và lập trình song song. Với những đóng góp độc đáo về song song hóa TLS thủ công, tối ưu hóa hiệu suất và các khái niệm mới như "temporally silent stores," luận án này có thể được trích dẫn rộng rãi bởi các nhà nghiên cứu làm việc trong lĩnh vực TLS, CMP, và tối ưu hóa trình biên dịch. Ước tính có thể đạt được hàng trăm trích dẫn trong thập kỷ tới, đặc biệt là khi các nhà sản xuất chip tiếp tục chuyển sang các thiết kế đa lõi và tìm kiếm các giải pháp khai thác song song hiệu quả.
- Chuyển đổi ngành công nghiệp: Ngành công nghiệp bán dẫn và phát triển phần mềm có thể chứng kiến sự chuyển đổi thông qua việc áp dụng các nguyên tắc và hướng dẫn của luận án này. Cụ thể, các nhà sản xuất chip (ví dụ: Intel, AMD, IBM) có thể được khuyến khích tích hợp các cơ chế TLS đơn giản nhưng hiệu quả vào các thiết kế chip multiprocessor (CMPs) tương lai, giảm gánh nặng đồng bộ hóa khỏi lập trình viên. Các nhà phát triển phần mềm trong các lĩnh vực như xử lý giao dịch trực tuyến (OLTP), hệ thống hỗ trợ quyết định (DSS) và các ứng dụng đa phương tiện có thể sử dụng các kỹ thuật chuyển đổi mã và hướng dẫn lập trình "TLS-friendly" để dễ dàng port các ứng dụng kế thừa lên các nền tảng đa lõi, nâng cao hiệu suất mà không cần viết lại toàn bộ mã nguồn.
- Ảnh hưởng chính sách: Luận án có thể ảnh hưởng đến các tiêu chuẩn ngành và chính sách phát triển. Bằng cách chứng minh tính khả thi của TLS cho các ứng dụng tổng quát, luận án có thể thúc đẩy các cơ quan tiêu chuẩn hóa hoặc các nhóm phát triển đưa TLS vào các đặc tả kiến trúc hoặc API lập trình song song trong tương lai. Ví dụ, nó có thể ảnh hưởng đến các phương pháp mà các công ty sản xuất phần mềm lớn xem xét để phát triển các ứng dụng hiệu suất cao.
- Lợi ích xã hội: Mặc dù không trực tiếp định lượng được bằng số liệu cụ thể trong đoạn văn bản này, việc tăng hiệu quả tính toán trên các bộ xử lý đa lõi có thể dẫn đến các lợi ích xã hội rộng lớn. Các ứng dụng phần mềm nhanh hơn, hiệu quả hơn có thể cải thiện năng suất, cho phép các tiến bộ trong các lĩnh vực như khoa học dữ liệu, y tế (ví dụ: mô phỏng y tế nhanh hơn), và năng lượng (ví dụ: tối ưu hóa sử dụng năng lượng của trung tâm dữ liệu), cuối cùng mang lại lợi ích cho người dùng cuối thông qua các sản phẩm và dịch vụ tốt hơn.
- Tính liên quan quốc tế: Nghiên cứu có tính liên quan toàn cầu cao. Các thách thức về lập trình song song và tối ưu hóa hiệu suất cho kiến trúc đa lõi là phổ biến trên toàn thế giới. Các công trình của Wisconsin Multiscalar [25][37], CMU STAMPede [32][33][35] và Đại học Illinois Urbana-Champaign [6][7][36] chứng minh sự quan tâm rộng rãi này. Các phát hiện về hiệu quả của TLS và các hướng dẫn lập trình có thể được áp dụng bởi các nhà nghiên cứu, nhà phát triển và nhà sản xuất chip trên khắp thế giới. Khái niệm "temporally silent stores" là một phát hiện cơ bản không giới hạn bởi vị trí địa lý.
Đối tượng hưởng lợi
Luận án này mang lại lợi ích đáng kể cho nhiều đối tượng khác nhau:
- Các nhà nghiên cứu tiến sĩ (Doctoral researchers): Cung cấp các khoảng trống nghiên cứu cụ thể và các hướng đi mới trong lĩnh vực TLS, tối ưu hóa trình biên dịch và kiến trúc máy tính. Khái niệm về "temporally silent stores" mở ra một lĩnh vực nghiên cứu mới về tối ưu hóa phần cứng và phần mềm. Các phương pháp luận chi tiết và các kỹ thuật song song hóa thủ công được trình bày có thể là tài liệu tham khảo quý giá cho các nghiên cứu sinh đang thực hiện các dự án tương tự.
- Các học giả cấp cao (Senior academics): Luận án cung cấp những tiến bộ lý thuyết đáng kể, đặc biệt là mở rộng lý thuyết về Thread-Level Parallelism (TLP) và Value Prediction, đồng thời thách thức các giả định hiện có về giới hạn của TLS. Điều này có thể kích thích các cuộc tranh luận mới và các hướng nghiên cứu lý thuyết trong cộng đồng học thuật. Các nhà nghiên cứu về kiến trúc máy tính sẽ đặc biệt quan tâm đến việc phân tích các "performance limiters" và các đề xuất thiết kế phần cứng cho các hệ thống TLS tương lai.
- Nghiên cứu & Phát triển ngành công nghiệp (Industry R&D): Các ứng dụng thực tiễn của luận án là vô cùng quan trọng đối với các bộ phận R&D của các nhà sản xuất chip (ví dụ: Intel, AMD, ARM) và các công ty phần mềm lớn (ví dụ: Microsoft, Oracle). Các "programming guidelines" được đề xuất giúp giảm thiểu công sức porting ứng dụng lên các nền tảng đa lõi. Các kết quả về "an average 120% speedup on four floating point applications and 70% speedup on three integer applications" (Abstract, page iv) với "approximately 80 programmer hours and 150 lines of non-template code per application" (Abstract, page iv) cung cấp bằng chứng định lượng về ROI cho việc tích hợp và sử dụng TLS.
- Các nhà hoạch định chính sách (Policy makers): Mặc dù không trực tiếp liên quan đến chính phủ, các nhà hoạch định chính sách trong lĩnh vực công nghệ và tiêu chuẩn công nghiệp (ví dụ: IEEE, ISO) có thể sử dụng các bằng chứng dựa trên nghiên cứu này để thông báo các quyết định về hướng phát triển kiến trúc máy tính và tiêu chuẩn lập trình song song. Luận án củng cố lập luận về sự cần thiết của hỗ trợ phần cứng cho lập trình song song dễ dàng hơn và hiệu quả hơn.
- Lập trình viên và kỹ sư phần mềm: Cung cấp các phương pháp luận và kỹ thuật cụ thể để tối ưu hóa hiệu suất của các ứng dụng hiện có trên các nền tảng đa lõi. Điều này có thể định lượng được bằng việc giảm thời gian phát triển và tăng hiệu suất ứng dụng, giúp tiết kiệm chi phí và tăng tính cạnh tranh của sản phẩm.
Câu hỏi chuyên sâu
- Đóng góp lý thuyết độc đáo nhất là gì (kể tên lý thuyết được mở rộng)? Đóng góp lý thuyết độc đáo nhất là việc mở rộng lý thuyết về Value Prediction bằng cách khám phá "predictions of values that evolve in a more complex manner" (Chapter 1, page 16). Các nghiên cứu trước đây [5][7][9][20][25][32] chủ yếu tập trung vào các giá trị không đổi hoặc các bước nhảy đơn giản. Luận án này đi sâu vào việc dự đoán các giá trị thay đổi phức tạp hơn, có tiềm năng mở rộng đáng kể hiệu quả của TLS bằng cách giảm các vi phạm phụ thuộc động. Ngoài ra, việc giới thiệu khái niệm "temporally silent stores" (Chapter 2, page 37) là một đóng góp lý thuyết mới, làm nổi bật một loại hành vi bộ nhớ chưa được xử lý mà khi tối ưu hóa có thể cải thiện hiệu suất TLS.
- Đổi mới phương pháp luận là gì (so sánh với 2+ nghiên cứu trước đây)? Đổi mới phương pháp luận chính là cách tiếp cận song song hóa thủ công chuyên sâu (advanced manual parallelization), khác biệt so với xu hướng chung của các nghiên cứu trước đây. Trong khi các công trình của SUIF [10] và Polaris [3] tập trung vào tự động hóa hoàn toàn bằng trình biên dịch tĩnh, và nghiên cứu của CMU STAMPede [32][33][35] và Đại học Illinois [6][7][36] khám phá các lược đồ hỗ trợ phần cứng cho song song hóa động, nhưng vẫn với mục tiêu tự động hoặc bán tự động, luận án này "uses manual parallelization, so that design modifications and programmer expertise can be utilized to yield higher parallel performance" (Chapter 1, page 14). Điều này cho phép luận án "surpass the capabilities of current advanced, automated parallelizers" (Abstract, page iv) và đạt được "upper bounds of the parallelism that can be extracted" (Chapter 1, page 14), cung cấp một điểm tham chiếu quan trọng cho việc đánh giá các công cụ tự động trong tương lai.
- Phát hiện đáng ngạc nhiên nhất là gì (với sự hỗ trợ dữ liệu)? Phát hiện đáng ngạc nhiên nhất là khả năng đạt được tốc độ tăng hiệu suất đáng kể cho các ứng dụng số nguyên bằng TLS thủ công, vốn được biết đến là cực kỳ khó song song hóa. Luận án báo cáo "70% speedup on three integer applications" (Abstract, page iv) trong bộ SPEC CPU2000. Điều này ngạc nhiên vì các ứng dụng số nguyên thường "are characterized by instruction streams with frequent branches that are difficult to predict and by execution of relatively little computation in a regular way on large, dense matrices" (Chapter 1, page 9), làm cho chúng "for all practical purposes unparallelizable" (Chapter 1, page 9) bằng các phương pháp truyền thống hoặc tự động. Kết quả này thách thức các giả định về giới hạn của song song hóa cho các loại ứng dụng này khi có sự can thiệp và chuyên môn của lập trình viên thông qua TLS.
- Giao thức tái tạo được cung cấp không? Có, luận án cung cấp một giao thức tái tạo rõ ràng thông qua việc mô tả chi tiết quy trình lập trình song song thủ công với TLS (Chapter 3) và cách các kỹ thuật chuyển đổi mã được sử dụng để song song hóa các ứng dụng SPEC2000 toàn diện (Chapter 4). Chương 4 "provides a detailed description of how and where parallelism was located, the impediments to extracting it using TLS, and the code transformations that were required to overcome these impediments" (Abstract, page iv). Điều này cùng với việc chỉ định nền tảng mô phỏng là Hydra chip multiprocessor (Chapter 1, page 19) và bộ benchmark SPEC CPU2000 cho phép các nhà nghiên cứu khác tái tạo các kết quả bằng cách áp dụng các chuyển đổi mã tương tự và sử dụng cùng một môi trường mô phỏng.
- Chương trình nghiên cứu 10 năm được phác thảo không? Chương trình nghiên cứu 10 năm được phác thảo một cách ngầm định và chi tiết trong phần "Future Research" của luận án. Các hướng nghiên cứu cụ thể bao gồm: (1) Tự động hóa các kỹ thuật song song hóa thủ công đã phát triển, (2) Khám phá và xử lý "temporally silent stores" trong kiến trúc TLS, (3) Mở rộng TLS sang các mô hình suy đoán phức tạp hơn như "multi-level speculation" (Chapter 2, page 32), (4) Đánh giá rộng rãi hơn TLS trên các bộ dữ liệu và ứng dụng đa dạng hơn, và (5) Phát triển các công cụ hỗ trợ lập trình viên TLS chuyên dụng. Những hướng này không chỉ giải quyết các hạn chế của nghiên cứu hiện tại mà còn mở ra những con đường mới cho sự phát triển của lập trình song song và kiến trúc đa lõi trong dài hạn.
Kết luận
Luận án này đưa ra một loạt các đóng góp cụ thể và có ý nghĩa cho lĩnh vực lập trình song song và kiến trúc máy tính:
- Chứng minh hiệu quả của TLS thủ công: Đạt được speedup trung bình 120% cho các ứng dụng dấu phẩy động và 70% cho các ứng dụng số nguyên SPEC CPU2000 với công sức lập trình viên tối thiểu (chỉ khoảng 80 giờ và 150 dòng mã mỗi ứng dụng).
- Cung cấp hướng dẫn lập trình "TLS-friendly": Đề xuất một bộ các thực hành lập trình cho các ứng dụng đơn bộ xử lý để tạo điều kiện song song hóa TLS hiệu suất cao trong tương lai, giúp các lập trình viên dễ dàng chuyển đổi các ứng dụng kế thừa.
- Khám phá giới hạn hiệu suất mới: Giới thiệu và phân tích sâu sắc khái niệm "temporally silent stores," một yếu tố giới hạn hiệu suất chưa được ghi nhận trước đây, mở ra hướng tối ưu hóa mới cho kiến trúc TLS.
- Thúc đẩy giới hạn trên của TLP: Bằng cách sử dụng song song hóa thủ công trên kiến trúc TLS đơn giản (Hydra CMP), luận án xác định giới hạn trên của TLP có thể khai thác được, cung cấp một tiêu chuẩn quan trọng cho việc đánh giá các công cụ tự động.
- Chi tiết hóa các kỹ thuật chuyển đổi mã: Mô tả cụ thể các kỹ thuật chuyển đổi mã cần thiết để vượt qua các rào cản song song hóa, đặc biệt là việc tối ưu hóa "violation window" và xử lý các phụ thuộc phức tạp.
Nghiên cứu này đại diện cho một bước tiến trong lĩnh vực kiến trúc máy tính, bằng chứng là "inclusion of TLS in future chip multiprocessor designs" (Abstract, page iv) được hỗ trợ. Nó mở ra ít nhất ba luồng nghiên cứu mới: tối ưu hóa kiến trúc để xử lý "temporally silent stores", tự động hóa các kỹ thuật song song hóa thủ công tiên tiến, và mở rộng TLS sang các mô hình suy đoán phức tạp hơn. Với khả năng ứng dụng cho các ứng dụng tổng quát và các kiến trúc đa lõi toàn cầu, các phát hiện của luận án có tính liên quan quốc tế cao. Di sản của nó có thể được đo lường bằng việc giảm đáng kể công sức lập trình viên cần thiết để khai thác song song, tăng hiệu suất tính toán trên các nền tảng đa lõi, và định hình hướng đi của các thiết kế bộ xử lý và công cụ lập trình trong tương lai.
Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộPARALLEL PROGRAMMING USING THREAD-LEVEL SPECULATION A DISSERTATION SUBMITTED TO THE DEPARTMENT OF ELECTRICAL ENGINEERING AND THE COMMITTEE ON GRADUATE STUDIES OF STANFORD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY Manohar Karkal Prabhu December 2005 UMI Number: 3197497 Copyright 2006 by Prabhu, Manohar Karkal All rights reserved. INFORMATION TO USERS The quality of this reproduction is dependent upon the quality of the copy submitted. Broken or indistinct print, colored or poor quality illustrations and photographs, print bleed-through, substandard margins, and improper alignment can adversely affect reproduction. In the unlikely event that the author did not send a complete manuscript and there are missing pages, these will be noted.
Also, if unauthorized copyright material had to be removed, a note will indicate the deletion. ® UMI UMI Microform 3197497 Copyright 2006 by ProQuest Information and Learning Company. All rights reserved. This microform edition is protected against unauthorized copying under Title 17, United States Code.
ProQuest Information and Learning Company 300 North Zeeb Road P. Box 1346 Ann Arbor, MI 48106-1346 © Copyright by Manohar K. Prabhu 2006 All Rights Reserved ii I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy. Olukotun I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy.
A Christos Kozyrakis / I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy. ted, Mark Horowitz \ Approved for the University Committee on Graduate Studies. iii Abstract As the performance increases of single-threaded processors diminish, consumer desktop processors are moving toward multi-core designs. Thread-level speculation (TLS) increases the space of applications that can benefit from these designs.
With TLS, a sequential application is divided into fairly independent tasks that are speculatively executed in parallel, while the hardware dynamically enforces data dependencies to provide the appearance of sequential execution. This thesis demonstrates that support for TLS greatly eases the task of manual parallel programming. Because TLS provides a sequential programming interface to parallel hardware, it enables the programmer to focus only on issues of performance, rather than correctness. The dissertation starts by demonstrating the parallelization of a microbenchmark to introduce a number of techniques for manual TLS parallelization.
Several of the advanced techniques leverage programmer expertise to surpass the capabilities of current advanced, automated parallelizers; the research presented here can provide guidance for the future development of such tools. Following this, the use of these techniques to parallelize seven of the SPEC CPU2000 applications is described. TLS parallelization yielded an average 120% speedup on four floating point applications and 70% speedup on three integer applications, while requiring only approximately 80 programmer hours and 150 lines of non-template code per application. These strong parallel performance results generated with relatively modest programmer effort support the inclusion of TLS in future chip multiprocessor designs.
iv For each application parallelized, a detailed description is provided of how and where parallelism was located, the impediments to extracting it using TLS, and the code transformations that were required to overcome these impediments. The results on these applications demonstrate that using advanced manual techniques is essential to effectively parallelize integer benchmarks. This leads to a discussion of common hindrances to TLS parallelization, and a subsequent description of methods of programming that help expose the parallelism in applications to TLS systems. These programming guidelines can help uniprocessor programmers create applications that can be easily ported to future TLS systems and yield good performance.
In closing, the dissertation reviews the many advantages of manual TLS parallel programming and specifies potential future research areas. Acknowledgments I would like to thank the many people who have provided me the support and encouragement to complete this dissertation and my Ph. There are so many family members, friends and associates that it is hard to know where to stop, but I do know where to start the list. I would like to thank my daughter Vaishali, first and foremost.
While many would argue that students with children take longer to complete, no distraction could be quite so grand as dear little Vaishali. Whether she was a baby sitting and cooing on my lap while I was debugging code, or was instead demanding I take time off to pay her some attention as she grew older, she has always made working from home the best way to get the job done. She is my other advisor, my live-in advisor (and is much more demanding, I might add!). I would like to thank so many of my family members, as well.
My mom, my brother and my two sisters have provided much of the inspiration that has led me down this path. Since moving to sunny California, there have been a host of other relatives who have provided fabulous fun and cheer, including Anita, Vivek, Farzaneh, Pandu, Mala and a bunch more. And many a friend has brightened my way through grad school, as have so many workmates. I am always indebted to “Uncle Lance,” who has earned his title not by being here at Stanford for more years than me, but from the non-stop fun and action he provides Vaishali on her every visit to the lab.
His presence in the great halls of Gates will be sorely missed by many. And likewise, it has been fun hanging out with Murali ee ee eee ean vi and Tara, the Hydra gang of old and new and the Future/Alumni Professors of Manufacturing. I am indebted to the various people who have worked behind the scenes to make my education possible, Darlene Hadding, Charlie Orgish and Marianne Marx, to name just a few. And, out in the “real” world, I owe a heap of gratitude to my many managers and work associates at HP, including most of all Ray, Bob, Emmanuelle and Steve.
But of course, the list would be incomplete without expressing my profound appreciation for the many advisors who have helped steer my path through to the light at the end of the tunnel. I thank Christos Kozyrakis and Mark Horowitz for the interest they have taken in my research and in providing me feedback on my conference presentations, my orals and this dissertation. I wish to thank Rick Reis and a variety of other professors at Stanford and beyond, who have motivated me to pursue a career in academia. But most of all, I | wish to thank Kunle Olukotun, my doctoral advisor, for being a continuing and unwavering support through the many twists and turns of the Ph.
Kunle has not only been an advisor, but also a friend, and I feel fortunate to have done my doctorate under an advisor whomI hold in such high regard. vii Table of Contents 1 Introduction and BackgrOUunnd. -- -« -- + + xn cknHHnHnnH HnH nHngEg 1 1.1 Evolution of HardWare. sàn HH HH HH TH HH HH tàng 3 1.
Increasing difficulties of hardware design. | Methods for reducing hardware design cornpÏ€XIẨV.2 Design of Parallel SOẨYWATG.- TT Hà HH HH TH TH Hết 6 1. Granularities of paraÏleliSim. -- << HT TH 9n nh 7 1.
Ability to automate paralle]1Zat1O. Challenges to extracting parallelism. su kén HH nhu 10 1. Approaches to parallelization of appÏiCatiOnS.
Contributions of This Dissertation over Related Research. Objectives and approach.-- -- «+ + kh HH HH HH tưng ngâm 18 1.- sọ TH HH Họ HH nHkt 20 1. Measurement and sampling strategy. esses ce ngàng 21 1.
sọ HH HH TT gu Hit 23 2 Thread-Level Speculation (TT S).---- vn ng HT ki 26 2.1 Ideal TLS SYSt€mS. HH HT HH Ki He 26 2.2 Practical implementations of TLS SYSẦ€TNS.- ng HH HH ky 30 2.3 Performance limiters of TLS SVS€INS. Gì HT HHnKkHưct 33 2. Primary performance ÌiTtIf€FS.- sọ TH HH ng nh như 34 2.
Secondary performance limiters .- - cá vn ng nà 4l 2. Measuring and understanding performance losses .4 TLS CMP hardware simulaf€d. sàng HH TH HH Hàn 47 Manual Programming With TLS .1 Parallel programming process using TLS. --- << HH HH TH HT HH HH 57 3.
Heap Sort Exarmple.- -s «su nh Hư ch tr 58 3. — Parallelizing with TLS.- 2-5 + SH TH TH HH nh 62 3. Ease of TLS Parallelization. Performance of TLS Paralle]izatiOH.
Optimizing TLS PerÍOrmance. Complex Value PrediCtIO'. Algorithm AdJustme€ni(.- - 5 ch nh TH HT HH gàng 73 3. Additional Automatic Optirn1zatiO'S.- ác se SH ng, 75 3.
-- -- ch nh ng 76 4 Manual TLS Parallelization of Whole ApplÌicatiOnS.1 SPEC2000, benchmark selection and execution sampÏing. cà HH HH TH Hi ng ng nh thiệp 86 4. LH HH HH Hà TH HH kh 89 4. nàn TH ky kế 90 4.- ch HT HH nh tre 92 4.
HH HH HH HH ng rh rcư 94 4.- -Ă- ác HH ng ng ng 95 4. ch ng nh nen 59k 96 4.< SH HH KH ch 97 4.3 Performance-related ODs€rVAfIOTS.-- Gà TH TH HH HH Hư 100 4.4 Additional simulator r€SUÏ{S. - ĂS HH TH HT nh nHtt 103 4.5 Programmer effort r€QUIT€Ở.- - Ăn nh nh ng 106 5 Observations and ConcÏUS1OTS.-- --- << HT nu ngu ch 110 5.1 Hindrances to TLS paralle]1ZafIOTI.- - Ăn vn ng như kt 110 5.2 TLS-friendly uniprocessor DrOBTaInTHInE,.- -- Gà HH kt 112 =. HH HT nh Km TT nh Ti nh tà EEE EE ERE nh ES 123 List of Tables Table 2-1: Memory system specifications .ccecseseeeesceseeeecesecsececeeseesseeenerseeneetaeenaees 48 Table 2-2: Loop-only TLS oVerh€aÌS.
--- --- 5 + HH Hà ng ng 49 Table 4-1: Benchmarks comprising SPEC CPU2000. 83 Table 4-2: Source code lengths of the SPEC CPU2000 benchmarks selected. 84 Table 4-3: Code transfOTf4f1OfAS. - TH TH TH HT Tu nu ch ta S6 Table 4-4: Speedup resulting from each additional transformatfIon.
--‹- «se s«+2 88 Table 4-5: Speculative thread lengths, regions and COV€TA. 104 Table 4-6: Breakdown of parallelized execution times .- cà Sex 105 Table 4-7: Lines of code added to parallelize appÌicatiOns.- óc s« se 107 xi List of Figures Figure 2-1: Thread-level speCuÏ4tiOT. - Án TH HT HH nh kh 28 Figure 2-2: Hydra chip mulfIDTOC€SSOT. - Gà TH ng nh nh He 47 Figure 3-1: Organization of the heap aT†TAy.
-á- ác HH HT ng Tu ng ghe 58 Figure 3-2: Top node removal and update of the heap .-- 5 àcnsseeseeerre 60 Figure 3-3: Code for top node removal and heap update.- --- «cty 61 Figure 3-4: Performance of incremental OpITT1ZAf1OTNS. án ngư 70 Figure 3-5: Original code with independent tasks sana, ". 77 Figure 3-6: Speculatively pipelined code ready for loop-only TLS .~- 77 Figure 4-1: Execution pattern and violations of 177.- co teen 91 Figure 4-2: Thread formulation for 1§§. ng ng HH ngư 93 Figure 4-3: Whole application speedups under various memory and TLS models.
103 Figure 5-1: Good and bad thread length sequences. teeeeeeseseeseeesenetseteneeeeeteeeeees 112 xii 1 Introduction and Background Workloads run on modern computer systems exhibit a large degree of inherent parallelism, which means that significant portions of the workloads can be executed concurrently. Computers can greatly improve their computational performance by exploiting inherent parallelism, which often exists at many different levels. At one extreme, instruction-level parallelism (ILP) occurs between the individual computer instructions which were intended to be executed sequentially.
At the other extreme, process-level parallelism allows multi-tasking operating systems to execute separate, possibly unrelated instruction streams on the same computer hardware at different times, thereby tolerating latency and allowing more efficient use of a computer system's resources. Between these extremes lie various forms of thread-level parallelism (TLP).
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Manohar Karkal Prabhu (2005). Lập trình song song sử dụng Thread-Level Speculation - Luận án [Luận án tiến sĩ, stanford university]. LuanAn.net. https://luanan.net/cong-nghe-thong-tin/khoa-hoc-may-tinh/lap-trinh-song-song-thread-level-speculation-stanford
Từ khóa và chủ đề nghiên cứu
Từ khóa liên quan
Xem thêm luận án cùng lĩnh vực
Chủ đề nghiên cứu
Câu hỏi thường gặp
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" nghiên cứu về vấn đề gì?
Luận án tiến sĩ về lập trình song song sử dụng thread-level speculation. Nghiên cứu cải thiện hiệu suất ứng dụng đa luồng, đạt tăng tốc độ 120% trên bộ xử lý đa lõi.
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại stanford university. Năm bảo vệ: 2005.
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" thuộc chuyên ngành gì?
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" thuộc chuyên ngành electrical engineering. Danh mục: Khoa Học Máy Tính.
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" có bao nhiêu trang?
Luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" có 139 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Lập trình song song sử dụng Thread-Level Speculation - Luận án" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.