Parallel Programming Using Thread-Level Speculation

Luận án tiến sĩ về parallel programming sử dụng thread level speculation (TLS). Nghiên cứu các kỹ thuật song song hóa, hiệu năng và ứng dụng TLS trong thực tế.

Trường đại học

Stanford University

Chuyên ngành

Electrical Engineering

Người đăng

Ẩn danh

Thể loại

Dissertation

2005

139
1
0

Phí lưu trữ

35 Point

Mục lục chi tiết

Acknowledgments

Abstract

1. CHƯƠNG 1: INTRODUCTION AND BACKGROUND

1.1. Evolution of Hardware

1.2. Increasing difficulties of hardware design

1.3. Methods for reducing hardware design complexity

2. CHƯƠNG 2: THREAD-LEVEL SPECULATION (TLS)

2.1. Ideal TLS Systems

2.2. Practical implementations of TLS Systems

2.3. Performance limiters of TLS Systems

2.4. Primary performance limiters

2.5. Secondary performance limiters

2.6. Measuring and understanding performance losses

2.7. TLS CMP hardware simulated

3. CHƯƠNG 3: MANUAL PROGRAMMING WITH TLS

3.1. Parallel programming process using TLS

3.2. Heap Sort Example

3.3. Parallelizing with TLS

3.4. Ease of TLS Parallelization

3.5. Performance of TLS Parallelization

3.6. Optimizing TLS Performance

3.7. Complex Value Prediction Algorithm Adjustment

3.8. Additional Automatic Optimizations

4. CHƯƠNG 4: MANUAL TLS PARALLELIZATION OF WHOLE APPLICATIONS

4.1. SPEC2000, benchmark selection and execution sampling

4.2. Performance-related Observations

4.3. Additional simulator results

4.4. Programmer effort required

5. CHƯƠNG 5: OBSERVATIONS AND CONCLUSIONS

5.1. Hindrances to TLS parallelization

5.2. TLS-friendly uniprocessor programming

List of Tables

List of Figures

Tóm tắt

I. TLS Cách song song hóa chương trình Tổng quan Lợi ích

Hiệu năng của bộ xử lý đơn luồng đang giảm dần, các bộ xử lý desktop hướng tới thiết kế đa lõi. Thread-Level Speculation (TLS) mở rộng phạm vi các ứng dụng hưởng lợi từ thiết kế này. Với TLS, một ứng dụng tuần tự được chia thành các tác vụ tương đối độc lập, thực thi song song một cách suy đoán, trong khi phần cứng thực thi động các phụ thuộc dữ liệu để tạo ra sự xuất hiện của thực thi tuần tự. Luận án này chứng minh hỗ trợ cho TLS giúp đơn giản hóa rất nhiều nhiệm vụ lập trình song song thủ công. Vì TLS cung cấp giao diện lập trình tuần tự cho phần cứng song song, nó cho phép lập trình viên chỉ tập trung vào các vấn đề về hiệu năng, thay vì tính chính xác. Manohar Karkal Prabhu khẳng định TLS giúp lập trình viên tập trung vào hiệu năng thay vì tính đúng đắn, trích dẫn từ luận án của ông.

1.1. Song song hóa chương trình bằng TLS Giải pháp đột phá

TLS (Thread-Level Speculation) là một kỹ thuật song song hóa chương trình hiệu quả, đặc biệt quan trọng trong bối cảnh hiệu năng của bộ xử lý đơn luồng đang chững lại. TLS cho phép chia một chương trình tuần tự thành nhiều luồng, thực thi đồng thời trên nhiều lõi xử lý, giúp tăng tốc độ xử lý tổng thể. Phương pháp này dựa trên việc thực thi suy đoán, trong đó các luồng được thực thi đồng thời mà không cần biết trước kết quả của các luồng khác.

1.2. Ưu điểm vượt trội của Thread Level Speculation TLS

So với các kỹ thuật song song hóa truyền thống, TLS mang lại nhiều ưu điểm. Thứ nhất, TLS cho phép tự động hóa quá trình song song hóa, giảm thiểu sự can thiệp của lập trình viên. Thứ hai, TLS có thể tận dụng hiệu năng chương trình trên các ứng dụng có cấu trúc phức tạp, khó song song hóa bằng các phương pháp thông thường. Theo nghiên cứu, TLS có thể cải thiện hiệu năng đáng kể mà không đòi hỏi nhiều thời gian và công sức lập trình.

II. Thách thức của song song hóa và vai trò của TLS Nghiên cứu sâu

Việc trích xuất song song hóa ở cấp độ luồng đòi hỏi theo dõi một lượng lớn trạng thái suy đoán và tương tác giữa các chỉ thị. Điều này gây khó khăn cho phần cứng hiện tại, trong khi các giải pháp dựa trên phần mềm đòi hỏi quá nhiều chi phí, nỗ lực của lập trình viên hoặc trí thông minh của trình biên dịch. Nghiên cứu này trình bày hiệu năng có thể đạt được bằng cách sử dụng TLS (Thread-Level Speculation), một cách tiếp cận cụ thể để trích xuất cấp độ song song hóa này. Nghiên cứu cũng chứng minh nỗ lực lập trình thấp để thực hiện song song hóa này cho các ứng dụng thông thường và cách tiếp cận lập trình khác nhau bởi một lập trình viên sử dụng TLS. Các nhà nghiên cứu đã tốn rất nhiều thời gian và công sức vào vấn đề này.

2.1. Khó khăn trong trích xuất song song hóa chương trình

Việc trích xuất song song hóa chương trình không phải lúc nào cũng dễ dàng. Nhiều ứng dụng có cấu trúc phức tạp, với các phụ thuộc dữ liệu và điều khiển phức tạp, khiến cho việc chia chúng thành các luồng độc lập trở nên khó khăn. Điều này đòi hỏi các kỹ thuật phân tích và biến đổi mã nguồn phức tạp, cũng như sự can thiệp của lập trình viên để xác định các điểm song song tiềm năng. Các kỹ thuật tối ưu hóa Compiler optimization đóng vai trò quan trọng.

2.2. Vượt qua rào cản Giải pháp Thread Level Speculation TLS

TLS (Thread-Level Speculation) cung cấp một giải pháp hiệu quả để vượt qua những rào cản này. Bằng cách cho phép các luồng thực thi song song một cách suy đoán, TLS có thể tận dụng hiệu năng chương trình ngay cả khi không biết trước các phụ thuộc dữ liệu. Nếu phát hiện xung đột dữ liệu, TLS sẽ tự động khôi phục trạng thái và thực thi lại các luồng bị ảnh hưởng, đảm bảo tính chính xác của kết quả. Hiệu năng chương trình được cải thiện đáng kể.

2.3. Phân tích rủi ro và chi phí Overhead của TLS

Mặc dù mang lại nhiều lợi ích, TLS cũng có những hạn chế. Việc thực thi suy đoán có thể dẫn đến chi phí phát sinh (overhead) do khôi phục trạng thái và thực thi lại các luồng. Ngoài ra, việc quản lý bộ nhớ và đồng bộ hóa dữ liệu giữa các luồng suy đoán cũng đặt ra những thách thức nhất định. Vì vậy, cần có các kỹ thuật tối ưu hóa để giảm thiểu chi phí và tăng cường hiệu năng của TLS.

III. TLS Hướng dẫn lập trình song song tối ưu hóa hiệu năng

Chương này xem xét sự phát triển và các vấn đề hiện tại xung quanh cả phần cứng và phần mềm để trích xuất song song hóa. Thảo luận về cách các vấn đề về phần cứng và phần mềm đã ảnh hưởng đến sự phổ biến và dễ dàng của lập trình song song. Đầu tiên, hãy xem xét những tiến bộ trong phần cứng, và cách những thách thức để tiếp tục theo Định luật Moore đã làm cho bộ xử lý đa chip trở thành một thiết kế thay thế hấp dẫn cho bộ xử lý đơn. Tiếp theo, chuyển trọng tâm sang phần mềm và xem xét cách lập trình song song thường được thực hiện và những hạn chế của nó. Hỗ trợ phần cứng cho lập trình song song có thể được sử dụng để chống lại những hạn chế này, và mô tả nghiên cứu hiện tại và trước đây đã được thực hiện trong lĩnh vực này.

3.1. Phương pháp lập trình song song với Thread Level Speculation

Để tận dụng tối đa hiệu năng của TLS, cần tuân thủ một số nguyên tắc lập trình nhất định. Đầu tiên, nên chia ứng dụng thành các luồng có kích thước phù hợp, sao cho thời gian thực thi của mỗi luồng không quá ngắn cũng không quá dài. Thứ hai, nên giảm thiểu các phụ thuộc dữ liệu giữa các luồng, để giảm thiểu số lượng xung đột và khôi phục trạng thái. Cuối cùng, nên sử dụng các kỹ thuật đồng bộ hóa hiệu quả để đảm bảo tính nhất quán của dữ liệu.

3.2. Tối ưu hóa trình biên dịch Compiler optimization cho TLS

Trình biên dịch đóng vai trò quan trọng trong việc tối ưu hóa hiệu năng của TLS. Trình biên dịch có thể tự động phân tích mã nguồn, xác định các điểm song song tiềm năng, và tạo ra các luồng suy đoán tương ứng. Ngoài ra, trình biên dịch cũng có thể thực hiện các biến đổi mã nguồn để giảm thiểu phụ thuộc dữ liệu và tăng cường tính độc lập của các luồng.

3.3. Các phương pháp đo lường và hiểu tổn thất hiệu năng do TLS

Việc đánh giá hiệu năng của một hệ thống sử dụng TLS đòi hỏi các phương pháp đo lường và phân tích đặc biệt. Cần theo dõi các chỉ số như tốc độ tăng tốc, số lượng xung đột dữ liệu, chi phí khôi phục trạng thái, và chi phí đồng bộ hóa. Bằng cách phân tích các chỉ số này, có thể xác định các điểm nghẽn cổ chai và thực hiện các cải tiến để tối ưu hóa hiệu năng.

IV. Ứng dụng thực tế TLS Đánh giá hiệu quả trên SPEC CPU2000

Luận án này tập trung vào việc trích xuất song song hóa ở cấp độ trung gian của các luồng. Trên thực tế, sự song song hóa giữa các luồng hạt mịn (khoảng 100 đến 10.000 chỉ thị động) hiếm khi được khai thác. Theo dõi trạng thái cần thiết là quá khó đối với phần cứng hiện có, trong khi các giải pháp dựa trên phần mềm đòi hỏi quá nhiều chi phí, nỗ lực của lập trình viên hoặc trí thông minh của trình biên dịch. Nghiên cứu trình bày hiệu năng đạt được bằng cách sử dụng TLS (Thread-Level Speculation) hạt mịn, một cách tiếp cận cụ thể để trích xuất cấp độ song song hóa này. Nghiên cứu cũng chứng minh nỗ lực lập trình thấp cần thiết để thực hiện song song hóa này cho các ứng dụng thông thường và cách tiếp cận lập trình khác nhau bởi một lập trình viên sử dụng TLS.

4.1. Lựa chọn Benchmark SPEC CPU2000 để đánh giá TLS

Để đánh giá hiệu năng của TLS một cách khách quan, nghiên cứu sử dụng bộ benchmark SPEC CPU2000, một bộ benchmark tiêu chuẩn được sử dụng rộng rãi để đánh giá hiệu năng của bộ xử lý. Bộ benchmark này bao gồm nhiều ứng dụng khác nhau, từ các ứng dụng tính toán khoa học đến các ứng dụng xử lý văn bản, cho phép đánh giá TLS trong nhiều tình huống khác nhau.

4.2. Kết quả Tăng tốc đáng kể nhờ Thread Level Speculation

Kết quả thực nghiệm cho thấy TLS có thể mang lại sự tăng tốc đáng kể cho nhiều ứng dụng trong bộ benchmark SPEC CPU2000. Theo nghiên cứu, TLS đã tăng tốc 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, với nỗ lực lập trình tương đối thấp. Điều này chứng tỏ TLS là một kỹ thuật song song hóa hiệu quả và tiết kiệm chi phí.

4.3. Các yếu tố ảnh hưởng đến hiệu năng TLS Phân tích chi tiết

Nghiên cứu cũng phân tích các yếu tố ảnh hưởng đến hiệu năng của TLS, chẳng hạn như kích thước cache, số lượng lõi xử lý, và các phụ thuộc dữ liệu giữa các luồng. Kết quả cho thấy việc tối ưu hóa các yếu tố này có thể giúp cải thiện đáng kể hiệu năng của TLS. Ví dụ, việc tăng kích thước cache có thể giảm thiểu số lượng xung đột dữ liệu và cải thiện hiệu năng tổng thể.

V. Kết luận Ưu điểm hạn chế và tương lai của TLS

Luận án này chỉ ra những ưu điểm của lập trình song song thủ công TLS và chỉ định các lĩnh vực nghiên cứu tiềm năng trong tương lai. Nghiên cứu kết luận rằng, TLS hỗ trợ rất lớn trong việc dễ dàng lập trình song song thủ công. TLS cung cấp một giao diện lập trình tuần tự cho phần cứng song song, nó cho phép người lập trình chỉ tập trung vào các vấn đề về hiệu suất, thay vì sự chính xác.

5.1. Tổng kết ưu điểm của Thread Level Speculation TLS

TLS mang lại nhiều ưu điểm, bao gồm khả năng tự động hóa quá trình song song hóa, giảm thiểu sự can thiệp của lập trình viên, và khả năng tận dụng hiệu năng chương trình trên các ứng dụng phức tạp. Ngoài ra, TLS cũng có thể giúp giảm thiểu chi phí phát triển phần mềm song song, bằng cách cho phép lập trình viên sử dụng các công cụ và kỹ thuật quen thuộc.

5.2. Các vấn đề còn tồn tại và hướng nghiên cứu TLS trong tương lai

Mặc dù TLS đã đạt được nhiều thành công, vẫn còn nhiều vấn đề cần được giải quyết. Một trong những vấn đề quan trọng nhất là giảm thiểu chi phí phát sinh do thực thi suy đoán. Ngoài ra, cần có các kỹ thuật mới để quản lý bộ nhớ và đồng bộ hóa dữ liệu giữa các luồng suy đoán một cách hiệu quả hơn. Nghiên cứu trong tương lai có thể tập trung vào việc phát triển các kiến trúc phần cứng và phần mềm mới để hỗ trợ TLS tốt hơn.

5.3. TLS Giải pháp song song hóa cho kỷ nguyên đa lõi

Trong kỷ nguyên đa lõi, TLS có thể đóng vai trò quan trọng trong việc tận dụng tối đa hiệu năng của bộ xử lý. Bằng cách cho phép các ứng dụng tận dụng nhiều lõi xử lý một cách hiệu quả, TLS có thể giúp cải thiện đáng kể thời gian phản hồi và khả năng xử lý của hệ thống. Vì vậy, TLS là một kỹ thuật song song hóa hứa hẹn cho tương lai.

14/05/2025

Trích đoạn nội dung tài liệu

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 đủ