Tải bản đầy đủ (.pdf) (13 trang)

Tiểu Luận Xử Lý Dữ Liệu Song Song Trong Kiến Trúc Vector, Simd Và Gpu.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.8 MB, 13 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>3. Thời gian thực hiện vector </b>... 5

<b>4. Ưu điểm của kiến trúc vector ... 5 </b>

<b>III. Single Instruction, Multiple Data (SIMD) ... 5 </b>

<b>1. Khái niệm ... 5 </b>

<b>2. SIMD đa phương tiện ... 6 </b>

<b>3. Mơ hình Roofline ... </b>6

<b>4. Ưu điểm và ứng dụng của SIMD ... 7 </b>

<b>IV. Graphics Processing Units (GPU) ... 8 </b>

<b>1. Khái niệm ... 8 </b>

<b>2. Cấu trúc bộ nhớ GPU NVIDIA</b> ... 8

<b>3. So sánh VMIPS và GPU ... 9 </b>

<b>4. So sánh SIMD và GPU... 10 </b>

<b>V. Kiến trúc máy tính cho xử lý video: Xử lý song song cho xe tự hành ... 11</b>

<b>1. Song song dữ liệu cho xử lý video ... 11 </b>

<b>2. Vai trò của song song dữ ệu cho xe tự hànhli</b> ... 11

<b>3. Thách thức trong việc triển khai song song dữ ệu trong xe tự hànhli</b> ... 12

<b>VI. Kết luận ... 12</b>

<b>Tài liệu tham khảo ... 13 </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

3

Dữ ệu cấp độ song song (DLP) là một kỹ thuật cải thiện hiệu suất của chương trình máy li tính bằng cách thực thi nhiều lệnh trên nhiều thành phần dữ liệu cùng một lúc. Điều này có thể được thực hiện theo nhiều cách, bao gồm bộ xử lý vector, mở rộng SIMD (Single Instruction, Multiple Data) và GPU (Graphics Processing Units).

Hiệu suất của chương trình máy tính được xác định bởi tốc độ ực thi của các chỉ ị. Tốth th c độ ực thi của các chỉ ị được giới hạn bởth th i tốc độ của bộ xử lý, tốc độ truy cập bộ nhớ và độ phức tạp của các chỉ ị. Một cách để cải thiện hiệu suất của chương trình máy tính là sử th dụng tính tốn song song. Tính tốn song song là thực hiện nhiều tác vụ cùng một lúc. Có nhiều cấp độ tính tốn song song, bao gồm dữ ệu cấp độ song song (DLP), cấp độ ỉ ị li ch th song song (ILP) và cấp độ cấp độ song song (TLP).

DLP là cấp độ tính tốn song song cơ bản nhất. DLP được thực hiện bằng cách thực thi nhiều chỉ ị trên nhiều phần tử dữ ệu cùng mộth li t lúc.

<b>1. Khái niệm</b>

Cấu trúc vector là một kiến trúc máy tính chuyên dụng, nơi dữ ệu được phân tán trong bộ li nhớ, sau đó được đưa vào các bộ đăng ký lớn theo thứ tự, thực hiện các hoạt động trên dữ liệu trong những bộ đăng ký đó, và sau đó kết quả được phân tán trở lại bộ nhớ. Mỗi lệnh duy nhất thực hiện trên các vector dữ ệu, điều này dẫn đến hàng chục các hoạt động li register-register trên các phần tử dữ ệu độli c lập.

Các bộ đăng ký lớn này đóng vai trị như các bộ đệm được điều khiển bởi trình biên dịch, cả để che giấu độ ễ của bộ nhớ và tận dụng băng thơng bộ nhớ. Vì các hoạt động load và tr store của vector được xây dựng sâu, chương trình chỉ phải trả giá một lần cho độ ễ của bộ tr nhớ cho mỗ ệnh load hoặi l c store vector so với mỗi phần tử, từ đó phân chia độ ễ qua.tr

Kiến trúc vector (VMIPS) là một kiến trúc vector dựa trên Cray-1. Kiến trúc này có các thành phần chính sau:

Đây là phần quan trọng nhất của cấu trúc vector VMIPS. Cho ph bộ xử lý lưu trữ ép và truy cập nhiều phần tử dữ ệu cùng một lúc. Mỗi thanh ghi vector trong kiến trúc li VMIPS có thể lưu trữ 64 phần tử 64 bit. Điều này cho phép bộ xử lý thực hiện các phép tính trên 4096 bit dữ ệu cùng mộli t lúc.

Các đơn vị chức năng vector là thành phần thực thi phép tính trong kiến trúc VMIPS. Mỗi đơn vị ức năng vector có thể ực hiện các phép tính cộng, trừ, nhân và chia ch th trên các thanh ghi vector. Đơn vị chức năng vector cho phép thực hiện c tính cùng ác một lúc. ều nĐi ày có thể giúp cải thiện hiệu suất của các ứng dụng vector.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4

Hệ ống ống dẫn là một kỹ th thuật cho phép thực thi nhiều lệnh cùng một lúc. Điều này có nghĩa là các lệnh có thể được thực thi ngay cả khi các lệnh khác đang được thực thi trong các đơn vị ch c năng vector khácứ

<i>Hình 1: Cấu trúc cơ bản của kiến trúc vector</i>

Đơn vị tải/lưu trữ vector (VLU) chịu trách nhiệm tải và lưu trữ các vector vào và từ bộ nhớ. Các lệnh tải và lưu trữ vector có thể được thực thi đồng thời với các lệnh khác. Điều này cho phép bộ xử lý VMIPS thực hiện các phép tính vector trên các dữ liệu được tải từ bộ nhớ với tốc đ cao.ộ

VLU có thể xử lý các lệnh tải và lưu trữ vector có độ dài từ 1 đến 64 phần tử. Các lệnh tải và lưu trữ vector có thể được sử dụng để tải các vector từ bộ nhớ vào các thanh ghi vector hoặc lưu trữ các vector từ các thanh ghi vector vào bộ nhớ. VLU cũng có thể xử lý các lệnh tải và lưu trữ theo từng phần. Các lệnh tải và lưu trữ theo từng phần cho phép bộ xử lý VMIPS tải và lưu trữ các dữ ệu theo từng phần li tử. Điều này có thể hữu ích trong các ứng dụng yêu cầu xử lý dữ ệu theo từng phần li tử.

Thanh ghi theo từng phần (SREG) là một tập hợp các thanh ghi 64 bit. SREG có thể được sử dụng để lưu trữ các dữ ệu theo từng phần. SREG được sử dụng bởi VLU li để lưu trữ các dữ ệu được tải từ bộ ớ hoặc được tạo bởi các đơn vị ức năng li nh ch vector.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

5

SREG cũng có thể được sử dụng bởi các đơn vị ức năng vector để cung cấp đầch u vào cho các phép tính vector. Điều này cho phép các phép tính vector được thực hiện trên các dữ liệu được lưu trữ trong SREG.

<b>3. Thời gian thực hiện vector</b>

Thời gian thực hiện vector (VET) phụ <i>thuộc vào ba yếu tố chính gồm: Độ dài vector: Chiều dài vector càng lớn, thời gian thực hiện phép tính càng lâu; Các mối nguy cơ cấu trúc: Các </i>

mối nguy cơ cấu trúc xảy ra khi hai hoặc nhiều phép tính cố gắng sử dụng cùng một tài nguyên cùng một lúc Các lỗi này có thể được tránh bằng cách sử dụng các lệnh vector .

<i>cùng nhau trong một convoy; Các phụ thuộc dữ liệu: Các phụ thu</i>ộc dữ ệu xảy ra khi một li phép tính phụ thuộc vào kết quả của phép tính khác. Các phụ thuộc này có thể được tránh bằng cách sử dụng chaining.

Convoy là một nhóm các lệnh vector có thể ực hiện cùng nhau mà khơng có bất kỳ lỗth i cấu trúc nào. Chaining cho phép một phép tính vector bắt đầu ngay khi các phần tử riêng lẻ của toán hạng vector nguồn của nó có sẵn.Thời gian thực hiện của một chuỗi phép tính vector trong chimes là xấp xỉ bằng số convoy trong chuỗi nhân với chiều dài vector. Công thức chung của thời gian thực hiện vector là

<i>T = t_c * n * L</i>

Với T là thời gian thực hiện vector, t_c là thời gian thức hiện một convoy, n là số convoy, L là chiều dài vector.

<b>4. Ưu điểm của kiến trúc vector</b>

Chúng ta thấy được mộ ố ưu điểt s m của kiến trúc vector:

• Tăng tốc độ: Kiến trúc vector có thể tăng tốc độ xử lý các ứng dụng có thể được tối ưu hóa cho vector hóa.

• Đơn giản hóa lập trình: Kiến trúc vector có thể đơn giản hóa lập trình cho các nhà phát triển khơng quen thuộc với lập trình song song.

• Tăng khả năng mở rộng: Kiến trúc vector có thể giúp tăng khả năng mở rộng của máy tính

Kiến trúc vector được sử dụng rộng rãi trong các ứng dụng khoa học và kỹ thuật, chẳng hạn như mô phỏng, xử lý tín hiệu và xử lý hình ảnh. Một số bộ xử lý phổ biến hỗ ợ kiếtr n trúc vector bao gồm Intel Xeon Phi, AMD Ryzen Threadripper và NVIDIA Tesla.

<b>1. Khái niệm</b>

SIMD (Single Instruction, Multiple Data) là một kiến trúc xử lý song song dữ liệu, cho phép bộ xử lý thực hiện cùng một phép toán trên nhiều phần tử dữ ệu cùng một lúc. Kiến trúc li SIMD được sử dụng rộng rãi trong các ứng dụng đa phương tiện, chẳng hạn như xử lý hình ảnh, xử lý âm thanh và mã hóa video.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

6 Có hai loại SIMD chính:

▪ SIMD tổng qt: SIMD tổng quát cho phép thực hiện các phép toán trên các dữ liệu có kiểu dữ ệu và kích thước khác nhau.li

▪ SIMD đa phương tiện: SIMD đa phương tiện được thiết kế để tối ưu hóa cho các ứng dụng xử lý đa phương tiện, chẳng hạn như xử lý hình ảnh và âm thanh.

<b>2. SIMD đa phương tiện</b>

Trong đây chúng ta tìm hiểu về SIMD đa phương tiện. SIMD đa phương tiện thường được sử dụng trong các ứng dụng xử lý đa phương tiện, chẳng hạn như xử lý hình ảnh và âm thanh. Các ứng dụng này thường phải thực hiện các phép tốn trên các dữ liệu có kiểu dữ liệu và kích thước nhỏ như 8 bit và 16 bit.

Các ại SIMD đa phương tiện bao gồm: lo

▪ MMX, đây là SIMD đa phương ện đầu ti cho kiến trúc x86 năm 1996 hỗ ợ ti ên tr các phép toán trên dữ liệu từ 8 đến 16 bit

▪ SSE l SIMD kế nhiệm MMX cho kiến trúc x86 nà ăm 1999 hỗ ợ các phtr ép toán từ 8 bit, 16 bit và 32 bit;

▪ AVX là SIMD mới nh t ấ ra mắt năm 2010 để hỗ ợ các phtr ép tốn đến 64bit. Lập trình kiến trúc SIMD đa phương tiện theo truyền thống được thực hiện thông qua các thư viện hoặc hợp ngữ do tính chất đặc biệt của các phần mở rộng . Tuy nhiên, các phần mở rộng gần đây đã trở nên thường xuyên hơn, khiến chúng dễ dàng được tối ưu hóa trình biên dịch hơn. Kết quả là, các trình biên dịch giờ đây có thể tự động tạo ra các hướng dẫn SIMD cho một số ại mã nhất định, chẳng hạn như mã khoa học. Để đảm bảo trình biên lo dịch tạo ra các lệnh SIMD, người lập trình phải căn chỉnh tất cả dữ ệu trong bộ nhớ theo li chiều rộng của đơn vị SIMD.

<b>3. Mơ hình Roofline</b>

Mơ hình Roofline là một mơ hình trực quan để so sánh hiệu suất tiềm năng của các kiến trúc máy tính khác nhau. Nó biểu diễn hiệu suất của một kiến trúc SIMD dưới dạng hàm số của độ dày dữ ệu, là tỷ lệ giữa số phép tính số ực với số byte dữ ệu được truy cậli th li p trong bộ nhớ

<i>Hình 2: Cường độ số học, được chỉ định bằng số phép tốn dấu phẩy động để chạy chương trình chia cho số byte được truy cập trong bộ nhớ chính</i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

7

chính. Mơ hình Roofline có thể được sử dụng để xác định xem một chương trình có bị giới hạn bởi băng thơng bộ nhớ hay hiệu suất tính tốn.

Mơ hình Roofline là một đồ ị hai chiều biểu diễn hiệu suất số ực dưới dạng hàm số th th của độ dày dữ ệu. Mơ hình có ba đường:li

▪ Đường ngang biểu thị hiệu suấ ố t s thực tối đa của máy tính. ▪ Đường chéo biểu thị băng thơng bộ nhớ tối đa của máy tính. ▪ Điểm giao của hai đường này được gọi là "đỉnh mái".

Nếu độ dày dữ ệu của một chương trình lớn hơn đỉnh mái, chương trình đó bị giới hạli n bởi băng thơng bộ nhớ. Cịn nếu độ dày dữ ệu của một chương trình nhỏ hơn đỉnh mái, li chương trình đó bị giới hạn bởi hiệu suất tính tốn.

<b>Ta có thế dùng mơ hình Roofline để làm so sánh hiệu suất của hai kiến trúc máy tính NEC </b>

<i>Hình 3: a) Mơ hình Roofline cho NEC SX-9 CPU b) Mơ hình Roofline cho ; Intel Core i7 920</i>

▪ NEC SX-9: NEC SX-9 là một siêu máy tính vector có hiệu suất số ực tối đa là th 102,4 GFLOP/giây và băng thông bộ nhớ tối đa là 162 GByte/giây.

▪ Intel Core i7 920: Intel Core i7 920 là một máy tính đa lõi có hiệu suất số thực tối đa là 42,66 GFLOP/giây và băng thông bộ nhớ tối đa là 16,4 GByte/giây

Điều này cho thấy NEC SX-9 nhanh hơn Intel Core i7 920 rất nhiều đối với các chương trình có độ dày dữ ệu 0,25 hoặc thấp hơn. Điều này là do SX-9 có băng thơng bộ nhớ li cao hơn nhiều.

<b>4. Ưu điểm và ứng dụng của SIMD</b>

Chúng ta có thể thấy được mộ ố ưu điểt s m của SIMD mang lại cho xử lý đa phương tiện gồm:

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

8

Tăng tốc độ xử lý: SIMD đa phương tiện có thể giúp tăng tốc độ xử lý các ứng dụng xử lý đa phương tiện bằng cách thực hiện các phép toán trên nhiều dữ liệu cùng một lúc.

▪ Giảm chi phí: SIMD đa phương tiện thường ít tốn kém hơn để triển khai so với các kiến trúc vector tổng quát.

▪ Giảm độ phức tạp: SIMD đa phương tiện thường dễ lập trình hơn so với các kiến trúc vector tổng quát.

SIMD đa phương tiện đượ ứng dụng rộng rãi trong các ứng dụng xử lý đa phương tiện c như:

▪ Xử lý hình ảnh: SIMD đa phương tiện được sử dụng trong các ứng dụng xử lý hình ảnh, chẳng hạn như lọ ảnh, chuyển đổi màu sắc c, và nhận dạng hình ảnh. ▪ Xử lý âm thanh: SIMD đa phương tiện đượ ử dụng trong các ứng dụng xử lý âm c s

thanh như mã hóa âm thanh, giải mã âm thanh, và xử lý âm thanh thời gian thực. SIMD đa phương tiện là một công nghệ quan trọng được sử dụng trong các ứng dụng xử lý đa phương tiện. SIMD đa phương tiện có thể giúp tăng tốc độ xử lý các ứng dụng này bằng cách thực hiện các phép toán trên nhiều dữ ệu cùng mộli t lúc.

<b>IV. Graphics Processing Units (GPU)1. Khái niệm</b>

Graphics Processing Unit, là một loại chip chuyên dụng được thiết kế để xử lý đồ họa. Tuy nhiên, trong những năm gần đây, GPU đã được sử dụng ngày càng nhiều cho các ứng dụng tính tốn tổng quát, chẳng hạn như khoa học, kỹ thuật và tài chính. GPU bắt nguồn từ các bộ tăng tốc đồ họa, được sử dụng để tăng tốc việc hiển thị đồ họa trên màn hình. Các bộ tăng tốc đồ họa ban đầu sử dụng kiến trúc vector, trong đó các phép tính được th c hiự ện trên các nhóm dữ ệu song song.li

GPU bao gồm m t sộ ố thành phần chính:

▪ Khối xử lý đa luồng (multithreaded processing unit, MMU): MMU là bộ não của GPU, chịu trách nhiệm điều phối các hoạt động của GPU.

▪ Đơn vị tính tốn số ực (floating-point processing unit, FLPU): FLPU là thành th phần thực hiện các phép tính số thực.

▪ Đơn vị tính toán logic (logic processing unit, LPU): LPU là thành phần thực hiện các phép tính logic.

▪ Bộ nhớ truy cập ngẫu nhiên (random-access memory, RAM): RAM là nơi lưu trữ dữ ệu và mã cần thiết cho GPU.li

GPU NVIDIA có cấu trúc bộ nhớ ba cấp, bao gồm bộ nhớ riêng, bộ nhớ cục bộ và bộ nhớ GPU.

▪ Bộ nhớ riêng: Bộ nhớ riêng là bộ nhớ ngoài DRAM dành riêng cho mỗi luồng SIMD. Nó được sử dụng cho khung ngăn xếp, đổ rác thanh ghi và các biến riêng không vừa với thanh ghi. Các luồng SIMD không chia sẻ bộ nhớ riêng.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

9

Bộ nhớ cục bộ: Bộ nhớ cục bộ là bộ nhớ trên chip dành riêng cho mỗi bộ xử lý SIMD đa luồng..

▪ Bộ nhớ GPU: Bộ nhớ GPU là bộ nhớ ngoài DRAM được chia sẻ bởi toàn bộ GPU và tất cả các khối luồng. Nó được sử dụng cho các biến toàn cục và cấu trúc dữ liệu khối luồng.

<i>Hình 4: Cấu trúc bộ nhớ GPU</i>

Thay vì dựa vào bộ nhớ đệm lớn để chứa toàn bộ tập làm việc của ứng dụng, GPU truyền thống sử dụng bộ nhớ đệm phát trực tuyến nhỏ hơn và dựa vào đa luồng rộng rãi của các luồng của các lệnh SIMD để ẩn độ trễ dài đến DRAM, vì tập làm việc của chúng có thể lên đến hàng trăm megabyte. Với việc sử dụng đa luồng để ẩn độ ễ DRAM, diện tích tr chip được sử dụng cho bộ ớ đệm trong bộ xử lý hệ ống được sử dụng thay vào đó nh th cho các tài ngun tính toán và cho số ợng lớn thanh ghi để giữ ạng thái của nhiều lư tr luồng của các lệnh SIMD. Ngược lại tải và lưu vectơ phân bổ độ ễ tr trên nhiều phần tử, vì chúng chỉ ả độ ễ mộ ần và sau đó nố ếp các truy cập cịn lạ Mặtr tr t l i ti i. c dù triết lý cơ bản là ẩn độ trễ bộ nhớ, hãy lưu ý rằng các GPU và bộ xử lý vector mới nhất đã thêm bộ nhớ đệm.

<b>3. So sánh VMIPS và GPU</b>

Bộ xử lý vector và GPU có nhiều điểm tương đồng giống nhau:

▪ Song song cấp dữ ệu: Cả kiến trúc vector và GPU đều khai thác song song cấli p dữ ệu để li thực hiện nhiều phép toán trên nhiều phần tử dữ ệu trong mộ ệnh. li t l ▪ Thực thi SIMD (Single Instruction, Multiple Data): Cả kiến trúc vector và GPU

đều sử dụng thực thi SIMD, trong đó một lệnh có thể ực hiện cùng một phép th toán trên nhiều phần tử dữ liệu cùng một lúc.

▪ Bộ xử lý luồng: Cả kiến trúc vector và GPU đều sử dụng bộ xử lý luồng, là các bộ xử lý chuyên dụng được thiết kế để xử lý luồng dữ ệu song song cao. li

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

10

Dù có nhiều điểm tương đồng với nhau tuy nhiên VMIPS với GPU vẫn có nhiều điểm khác biệ với nhaut

Mẫu truy cập bộ nhớ Liên tiếp Bước nhảy, phân tán

Mơ hình lập trình Truyền thống Chun dụng

Kiến trúc vector và GPU đều có những ưu điểm và nhược điểm riêng. Kiến trúc vector phù hợp hơn cho các ứng dụng có mẫu truy cập bộ nhớ liên tiếp và yêu cầu độ chính xác cao. GPU phù hợp hơn cho các ứng dụng có mẫu truy cập bộ nhớ ức tạp và yêu cầu ph hiệu suất cao.

<b>4. So sánh SIMD và GPU</b>

Máy tính SIMD đa phương tiện và GPU (Bộ xử lý đồ họa) đều là các loại bộ xử lý song song sử dụng kiến trúc SIMD (Single Instruction, Multiple Data) để tăng tốc các tác vụ địi hỏi nhiều tính toán. Tuy nhiên, chúng khác nhau về mục tiêu thiết kế chính, ứng dụng mục tiêu và mơ hình lập trình.

▪ Kiến trúc SIMD: Cả máy tính SIMD đa phương tiện và GPU đều sử dụng kiến trúc SIMD, cho phép chúng thực thi một lệnh trên nhiều phần tử dữ liệu cùng một lúc.

▪ Song song dữ ệu: Cả hai đều tận dụng song song dữ ệu, khai thác tiềm năng li li thực hiện nhiều phép tính trên nhiều phần tử dữ ệu cùng một lúc. li

▪ Bộ xử lý luồng: Cả hai đều sử dụng bộ xử lý luồng, là các bộ xử lý chuyên dụng được thiết kế để xử lý hiệu quả luồng dữ liệu song song cao.

Sự khác nhau giữa SIMD với GPU

Mục tiêu thiết kế Xử lý âm thanh, video Xử lý đồ họa, tính tốn

Máy tính SIMD đa phương tiện và GPU đều là những bộ xử lý song song mạnh mẽ mang lại những cải tiến đáng kể về hiệu suất cho các phép tính song song dữ ệu. Tuy nhiên, li mục tiêu thiết kế, ứng dụng mục tiêu và mơ hình lập trình riêng biệt của chúng khiến chúng phù hợp với các loại tác vụ tính tốn khác nhau. Máy tính SIMD đa phương tiện được thiết kế cho xử lý âm thanh/video, trong khi GPU thống trị xử lý đồ họa và ngày càng trở thành những bộ tăng tố ổng quát đa năng.c t

</div>

×