Mục lục ...................................................................................................................... 1 Giới thiệu vấn đề nghiên cứu .................................................................................... 2 1. Đặt vấn đề .................................................................................................... 2 2. Mục tiêu nghiên cứu .................................................................................... 2 Nội dung của vấn đề nghiên cứu ............................................................................... 3 1. Tổng quan về Kiến trúc máy tính và DataLevel Parallelism ..................... 3 1.1. Kiến trúc máy tính và vai trò của nó trong xử lý video ........................... 3 1.2. DataLevel Parallelism và lợi ích của nó trong việc xử lý dữ liệu video 3 2. Vector Architectures .................................................................................... 4 2.1. Định nghĩa và cách kiến trúc vector tận dụng DLP ................................. 4 2.2. Các tính năng và lợi ích của Vector Architectures trong xử lý video ..... 6 3. SIMD Architectures ..................................................................................... 7 3.1. Định nghĩa SIMD (Single Instruction, Multiple Data) Architectures ..... 7 3.2. Ưu điểm và nhược điểm của SIMD trong xử lý video: ........................... 7 4. GPU Architectures ..................................................................................... 10 4.1. GPU trong xử lý video ........................................................................... 10 4.2. Kiến trúc cơ bản của GPU ..................................................................... 10 4.3. Ưu Điểm Của GPU Trong Xử Lý Video: .............................................. 12 4.4. Ứng Dụng Cụ Thể Của GPU Trong Xử Lý Video: ............................... 13 Kết luận ................................................................................................................... 14 Tài liệu tham khảo ................................................................................................... 15
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN
KHOA ĐIỆN TỬ VIỄN THÔNG
Tiểu luận
Các vấn đề hiện đại của Kỹ thuật Máy tính
Họ và tên:
Mã sinh viên:
Lớp học phần:
Đinh Văn Khải
21020444
ELT3241_1
Chủ đề:
Kiến trúc máy tính cho xử lý video:
Đa luồng dữ liệu
Trang 2Mục lục
Mục lục 1
Giới thiệu vấn đề nghiên cứu 2
1 Đặt vấn đề 2
2 Mục tiêu nghiên cứu 2
Nội dung của vấn đề nghiên cứu 3
1 Tổng quan về Kiến trúc máy tính và Data-Level Parallelism 3
1.1 Kiến trúc máy tính và vai trò của nó trong xử lý video 3
1.2 Data-Level Parallelism và lợi ích của nó trong việc xử lý dữ liệu video 3 2 Vector Architectures 4
2.1 Định nghĩa và cách kiến trúc vector tận dụng DLP 4
2.2 Các tính năng và lợi ích của Vector Architectures trong xử lý video 6
3 SIMD Architectures 7
3.1 Định nghĩa SIMD (Single Instruction, Multiple Data) Architectures 7
3.2 Ưu điểm và nhược điểm của SIMD trong xử lý video: 7
4 GPU Architectures 10
4.1 GPU trong xử lý video 10
4.2 Kiến trúc cơ bản của GPU 10
4.3 Ưu Điểm Của GPU Trong Xử Lý Video: 12
4.4 Ứng Dụng Cụ Thể Của GPU Trong Xử Lý Video: 13
Kết luận 14
Tài liệu tham khảo 15
Trang 3Giới thiệu vấn đề nghiên cứu
1 Đặt vấn đề
Trong thời đại số hóa ngày nay, sự phổ biến của video trong nhiều lĩnh vực cuộc sống đã tạo ra một bức tranh nhu cầu ngày càng tăng về xử lý video một cách hiệu quả Các ứng dụng từ giải trí, y tế đến an ninh đều đặt ra thách thức lớn về việc xử lý lượng lớn
dữ liệu video một cách nhanh chóng và chính xác Trong bối cảnh này, vai trò quyết định của Computer Architecture trở nên rõ ràng, đặc biệt là khi áp dụng khái niệm Data-Level Parallelism
Việc xử lý video đòi hỏi sự hiệu quả và tốc độ, đặc biệt là khi đối mặt với các yếu
tố như độ phân giải cao, tần suất khung hình nhanh, và các định dạng nén phức tạp Do đó, nghiên cứu về cách Computer Architecture sử dụng Data-Level Parallelism có thể giúp tối
ưu hóa quá trình xử lý video và đáp ứng mức độ yêu cầu ngày càng cao từ các ứng dụng khác nhau
2 Mục tiêu nghiên cứu
Mục tiêu chính của bài tiểu luận này là tìm hiểu và phân tích cách các kiến trúc máy tính, đặc biệt là Vector, SIMD, và GPU Architectures, tận dụng Data-Level Parallelism để cải thiện hiệu suất xử lý video Bài nghiên cứu sẽ đi sâu vào các khía cạnh cụ thể của Data-Level Parallelism và áp dụng chúng vào việc xử lý video từ các khía cạnh khác nhau như giải mã, xử lý hình ảnh, và nén video
Bằng cách tập trung vào những kiến trúc quan trọng như Vector, SIMD, và GPU, chúng ta có thể hiểu rõ hơn về cách chúng đồng tác động để tối ưu hóa việc xử lý video, cung cấp các giải pháp hiệu quả và hiệu suất cho các ứng dụng thực tế Mục tiêu cuối cùng
là đưa ra những kiến thức cụ thể và áp dụng chúng để cải thiện khả năng xử lý video trên các kiến trúc máy tính hiện đại
Trang 4Nội dung của vấn đề nghiên cứu
1 Tổng quan về Kiến trúc máy tính và Data-Level Parallelism 1.1 Kiến trúc máy tính và vai trò của nó trong xử lý video
Trước hết, để hiểu về vai trò của kiến trúc máy tính trong xử lý video, cần định rõ khái niệm về kiến trúc máy tính Kiến trúc máy tính là tổ chức và cách thức hoạt động của các thành phần trong một hệ thống máy tính, từ đó đảm bảo rằng các tác vụ có thể thực hiện một cách hiệu quả Trong ngữ cảnh xử lý video, kiến trúc máy tính đóng vai trò quan trọng trong việc xử lý và hiển thị hình ảnh và video một cách nhanh chóng và chất lượng
Xử lý video đòi hỏi sự nhanh nhạy và hiệu quả cao, từ việc xử lý ảnh đến giải mã video và hiển thị Kiến trúc máy tính phải được thiết kế để tối ưu hóa các tác vụ này thông qua sự tận dụng các khái niệm như bộ nhớ cache, đồng bộ hóa và đặc biệt là Data-Level Parallelism
1.2 Data-Level Parallelism và lợi ích của nó trong việc xử lý dữ liệu video
Data-Level Parallelism là một khái niệm quan trọng trong thiết kế kiến trúc máy tính, trong đó các hoạt động được thực hiện đồng thời trên nhiều dữ liệu đầu vào Trong ngữ cảnh xử lý video, việc này trở nên quan trọng khi cần xử lý hàng loạt hình ảnh hoặc khung hình cùng một lúc
Dữ liệu video thường lớn và phức tạp, bao gồm hàng triệu pixel và dữ liệu màu sắc
Sự tận dụng hiệu quả của Data-Level Parallelism giúp kiến trúc máy tính thực hiện các phép toán đồng thời trên nhiều phần của dữ liệu video, từ đó cải thiện hiệu suất xử lý và giảm thời gian đáp ứng
Trong bài tiểu luận này, chúng ta sẽ xem xét cụ thể cách kiến trúc máy tính tận dụng Data-Level Parallelism trong ba lĩnh vực chính: Vector Architectures, SIMD Architectures, và GPU Architectures Điều này sẽ giúp chúng ta hiểu rõ hơn về cách Data-Level Parallelism được tích hợp vào kiến trúc máy tính để nâng cao khả năng xử lý video
Data-Level Parallelism (DLP) là một khái niệm quan trọng trong lĩnh vực Computer Architecture, nhấn mạnh vào khả năng xử lý nhiều dữ liệu đồng thời để tăng cường hiệu suất Trong ngữ cảnh xử lý video, DLP đặt trọng điểm vào việc thực hiện các phép toán trên các tập dữ liệu lớn một cách đồng thời, thay vì tuần tự
Mô hình DLP thường được triển khai qua các kiến trúc Vector, SIMD, và GPU, nơi
mà mỗi lệnh có thể được áp dụng đồng thời lên nhiều dữ liệu Điều này cực kỳ quan trọng trong xử lý video với số lượng lớn các pixel, frame và dữ liệu liên quan khác
Trang 52 Vector Architectures
2.1 Định nghĩa và cách kiến trúc vector tận dụng DLP
Vector Architectures là một dạng kiến trúc máy tính mà trong đó các lệnh có thể thực hiện đồng thời trên nhiều dữ liệu, thường được tổ chức dưới dạng các vector Trong ngữ cảnh của xử lý video, Vector Architectures được áp dụng để tận dụng Data-Level Parallelism (DLP) bằng cách xử lý đồng thời nhiều pixel hay phần tử dữ liệu của video
Kiến trúc vectơ lấy các tập hợp phần tử dữ liệu nằm rải rác trong bộ nhớ, đặt chúng vào các tệp thanh ghi tuần tự lớn, hoạt động trên dữ liệu trong các tệp thanh ghi đó và sau
đó phân tán kết quả trở lại bộ nhớ Một lệnh duy nhất hoạt động trên các vectơ dữ liệu, dẫn đến hàng tá thao tác đăng ký-đăng ký trên các phần tử dữ liệu độc lập
Các tệp thanh ghi lớn này hoạt động như bộ đệm do trình biên dịch điều khiển, vừa
để ẩn độ trễ của bộ nhớ vừa để tận dụng băng thông bộ nhớ Bởi vì tải và lưu trữ vectơ được phân chia theo đường ống sâu, nên chương trình chỉ thanh toán độ trễ bộ nhớ dài một lần cho mỗi lần tải hoặc lưu trữ vectơ so với một lần cho mỗi phần tử, do đó khấu hao độ trễ trên 32 phần tử Thật vậy, các chương trình vector cố gắng giữ cho bộ nhớ luôn bận rộn
Kiến trúc vectơ có thể mang lại hiệu suất tốt mà không tốn năng lượng và chi phí thiết kế phức tạp như các bộ xử lý siêu vô hướng không hoạt động tốt Lệnh vectơ là sự kết hợp tự nhiên với xu hướng này vì kiến trúc sư có thể sử dụng chúng để tăng hiệu suất của các bộ xử lý vô hướng theo thứ tự đơn giản mà không làm tăng đáng kể nhu cầu năng lượng và độ phức tạp của thiết kế
Vector Architectures được mở rộng thông qua RV64V Extension trong kiến trúc RISC-V, một bộ chỉ thị (ISA) mà trong đó, RV64V là một extension đặc biệt để hỗ trợ vectorization RV64V Extension mở rộng bộ thanh ghi (register file) để chứa các vector registers Điều này cho phép lưu trữ và thực hiện các phép toán trên vector một cách hiệu quả RV64V cung cấp một loạt các chỉ thị mới để thực hiện các phép toán vector, giúp tận dụng Data-Level Parallelism
Cấu trúc cơ bản của kiến trúc vectơ, RV64V, bao gồm kiến trúc vô hướng RISC-V Ngoài ra còn có 32 thanh ghi vectơ và tất cả các đơn vị chức năng đều là đơn vị chức năng vectơ Các thanh ghi vectơ và vô hướng có số lượng cổng đọc và ghi đáng kể để cho phép thực hiện nhiều thao tác vectơ đồng thời Một bộ công tắc thanh ngang (đường màu xám dày) kết nối các cổng này với đầu vào và đầu ra của các đơn vị chức năng vectơ (Jonh L Hennessy, David A.Patterson, 2019)
Trang 6Hình 2-1: Cấu trúc cơ bản của kiến trúc vectơ
▪ Vector registers: Mỗi thanh ghi vectơ chứa một vectơ duy nhất, và RV64V có 32
vectơ, mỗi vectơ rộng 64 bit Tệp thanh ghi vectơ cần cung cấp đủ cổng để cung cấp cho tất cả các đơn vị chức năng vectơ Các cổng này sẽ cho phép mức độ chồng chéo cao giữa các hoạt động vectơ đối với các thanh ghi vectơ khác nhau Các cổng đọc và ghi, có tổng cộng ít nhất 16 cổng đọc và 8 cổng ghi, được kết nối với đầu vào hoặc đầu ra của đơn vị chức năng bằng một cặp công tắc thanh ngang Một cách
để tăng băng thông tệp đăng ký là soạn nó từ nhiều ngân hàng, hoạt động tốt với các vectơ tương đối dài
▪ Vector functional units: Mỗi đơn vị được sắp xếp đầy đủ trong quá trình triển khai
và nó có thể bắt đầu một hoạt động mới trên mỗi chu kỳ đồng hồ Cần có một đơn
vị điều khiển để phát hiện các mối nguy hiểm, cả các mối nguy hiểm về cấu trúc đối với các đơn vị chức năng và các mối nguy hiểm về dữ liệu khi truy cập vào sổ đăng
ký
Trang 7▪ Vector load/store unit: Bộ nhớ vectơ tải hoặc lưu trữ một vectơ đến hoặc từ bộ nhớ
Tải và lưu trữ vectơ được sắp xếp đầy đủ trong triển khai RV64V giả định để các
từ có thể được di chuyển giữa các thanh ghi vectơ và bộ nhớ với băng thông một từ trên mỗi chu kỳ đồng hồ, sau độ trễ ban đầu Đơn vị này thường cũng sẽ xử lý tải
vô hướng và lưu trữ
▪ Scalar registers: Các thanh ghi vô hướng cũng có thể cung cấp dữ liệu làm đầu vào
cho các đơn vị chức năng vectơ, cũng như tính toán các địa chỉ để chuyển đến đơn
vị tải/lưu trữ vectơ Đây là 31 thanh ghi đa năng thông thường và 32 thanh ghi dấu phẩy động của RV64G Một đầu vào của các đơn vị chức năng vectơ chốt các giá trị vô hướng khi chúng được đọc ra khỏi tệp thanh ghi vô hướng
2.2 Các tính năng và lợi ích của Vector Architectures trong xử lý video
- Đồng thời hóa Dữ liệu (Data Parallelism):
Đồng thời hóa dữ liệu là khả năng thực hiện các phép toán trên nhiều dữ liệu đồng thời, thường được thực hiện trên các vector, là nhóm các phần tử dữ liệu có cùng loại Vector Architectures tận dụng đồng thời hóa dữ liệu để xử lý hàng loạt pixel hoặc frame video cùng một lúc Điều này giúp giảm thời gian xử lý và tăng hiệu suất trong các tác vụ như mã hóa, giải mã, và xử lý hình ảnh
- Hiệu suất Cao:
Vector Architectures cung cấp hiệu suất cao bằng cách thực hiện các phép toán trên nhiều dữ liệu đồng thời, giảm thời gian thực hiện toàn cục Trong các tác vụ đòi hỏi xử lý video nhanh chóng như phát sóng trực tiếp, Vector Architectures giúp tăng tốc quá trình
xử lý và đáp ứng nhanh chóng với dữ liệu video đầu vào
- Tối ưu hóa Bộ nhớ:
Vector Architectures thường đi kèm với bộ nhớ cache hiệu quả, giúp giảm thời gian truy cập dữ liệu và tối ưu hóa việc sử dụng bộ nhớ Trong xử lý video, nơi có nhiều dữ liệu liên tục, việc tối ưu hóa bộ nhớ giúp giảm độ trễ và tăng tốc quá trình xử lý video
- Tiết Kiệm Năng Lượng:
Bằng cách thực hiện nhiều phép toán đồng thời, Vector Architectures có thể hoàn thành công việc với ít lệnh hơn, giảm độ trễ và tiết kiệm năng lượng Trong các thiết bị di động và hệ thống có hạn về năng lượng, Vector Architectures giúp tối ưu hóa việc sử dụng nguồn năng lượng trong quá trình xử lý video
- Ứng Dụng Đa Dạng:
Vector Architectures không chỉ được sử dụng trong xử lý video mà còn trong nhiều ứng dụng khác như xử lý tín hiệu, tính toán khoa học, và trí tuệ nhân tạo Vector Architectures mang lại tính linh hoạt và đa dụng, có thể được áp dụng trong nhiều lĩnh vực của xử lý video, từ xử lý hình ảnh đến mã hóa và giải mã video
Trang 83 SIMD Architectures
3.1 Định nghĩa SIMD (Single Instruction, Multiple Data) Architectures
Kiến trúc SIMD (Single Instruction, Multiple Data) là một hình thức quan trọng của Data-Level Parallelism, trong đó một lệnh duy nhất được thực hiện đồng thời trên một nhóm các dữ liệu SIMD thường được sử dụng trong các CPU và GPU để tận dụng Data-Level Parallelism trong các tác vụ đòi hỏi xử lý hàng loạt dữ liệu như xử lý video, đồ họa,
và xử lý tín hiệu Trong xử lý video, SIMD Architectures giúp tối ưu hóa việc xử lý hàng loạt các pixel hoặc phần tử dữ liệu cùng một lúc
Tiện ích mở rộng đa phương tiện SIMD (SIMD Instruction Set Extensions for Multimedia) bắt đầu bằng một quan sát đơn giản rằng nhiều ứng dụng đa phương tiện hoạt động trên các loại dữ liệu hẹp hơn so với bộ xử lý 32 bit được tối ưu hóa Hệ thống đồ họa
sẽ sử dụng 8 bit để thể hiện từng màu trong số ba màu cơ bản cộng với 8 bit để minh bạch Tùy thuộc vào ứng dụng, mẫu âm thanh thường được biểu diễn bằng 8 hoặc 16 bit Bằng cách phân vùng chuỗi mang bên trong, chẳng hạn như bộ cộng 256 bit, bộ xử lý có thể thực hiện các hoạt động đồng thời trên các vectơ ngắn gồm 32 toán hạng 8 bit, 16 toán hạng 16 bit, 8 toán hạng 32 bit hoặc 4 toán hạng 64 bit Toán hạng Chi phí bổ sung của các bộ cộng được phân vùng như vậy là nhỏ Giống như các lệnh vectơ, lệnh SIMD chỉ định thao tác tương tự trên các vectơ dữ liệu Không giống như các máy vectơ có tệp thanh ghi lớn chẳng hạn như thanh ghi vectơ RISC-V RV64V, có thể chứa 32 phần tử 64 bit trong mỗi thanh ghi trong số 32 thanh ghi vectơ, lệnh SIMD có xu hướng chỉ định ít toán hạng hơn và do đó sử dụng thanh ghi nhỏ hơn nhiều các tập tin
Ngược lại với các kiến trúc vectơ, vốn cung cấp một tập lệnh tinh tế nhằm mục đích trở thành mục tiêu của trình biên dịch vector hóa, các phần mở rộng SIMD có ba thiếu sót chính: không có thanh ghi độ dài vectơ, không có hướng dẫn truyền dữ liệu sải bước hoặc thu thập/phân tán và không có thanh ghi mặt nạ (Dongarra, J.J., Luszczek, P., Petitet, A., 2003)
3.2 Ưu điểm và nhược điểm của SIMD trong xử lý video:
Ưu điểm:
▪ Hiệu suất cao: SIMD là một trong những phương pháp tối ưu nhất để tận dụng
Data-Level Parallelism trong xử lý video Việc thực hiện cùng một lệnh trên nhiều
dữ liệu đồng thời giúp giảm độ trễ và tăng tốc quá trình xử lý, đặc biệt là khi áp dụng cho các tác vụ đòi hỏi xử lý hàng loạt pixel như mã hóa và giải mã video
▪ Tiết kiệm năng lượng: Bằng cách giảm số lượng lệnh cần thiết để xử lý một lượng
lớn dữ liệu, SIMD có thể giảm lượng công việc và năng lượng cần thiết cho quá trình xử lý video Điều này làm cho SIMD trở thành lựa chọn phù hợp trong các hệ thống có hạn về năng lượng, như các thiết bị di động và thiết bị tích hợp
Trang 9Nhược điểm:
▪ Khả năng linh hoạt giảm: SIMD thường chỉ hiệu quả khi áp dụng cho các tác vụ có
cấu trúc dữ liệu đồng nhất Trong những trường hợp khác nhau, kiến trúc này có thể trở nên không hiệu quả vì nó không linh hoạt trong việc xử lý các loại dữ liệu khác nhau
Ví dụ: Nếu một ứng dụng xử lý video đòi hỏi xử lý cả hình ảnh màu và âm thanh đồng thời, SIMD có thể gặp khó khăn trong việc đồng thời xử lý cả hai loại dữ liệu này
▪ Khả năng lập trình khó khăn: Việc lập trình cho SIMD có thể đầy thách thức, đặc
biệt là đối với những nhà phát triển mới Đòi hỏi sự hiểu biết sâu sắc về cấu trúc máy tính và tối ưu hóa mã lệnh để tận dụng đúng Data-Level Parallelism
Ví dụ: Việc viết mã cho SIMD thường đòi hỏi sử dụng các hàm vectorized và các lệnh đặc biệt, có thể làm tăng độ phức tạp của mã nguồn và đòi hỏi kiến thức chuyên sâu
▪ Giới hạn trong đa dạng dữ liệu: SIMD hoạt động tốt khi xử lý các loại dữ liệu giống
nhau và có cấu trúc đồng nhất Trong khi nó là lựa chọn lý tưởng cho xử lý video, nhưng có thể gặp khó khăn khi xử lý các loại dữ liệu khác nhau
3.3 Các ứng dụng cụ thể và hiệu suất của SIMD trong việc xử lý video :
- Mã hóa và Giải mã Video:
SIMD được rộng rãi sử dụng trong mã hóa và giải mã video (video encoding and decoding) Các thuật toán mã hóa như H.264, HEVC, hay VP9 thường tận dụng hiệu ứng SIMD để xử lý hàng loạt dữ liệu pixel cùng một lúc
Việc thực hiện các phép toán đồng thời trên nhiều pixel giúp tăng tốc quá trình nén
và giải nén video, cải thiện hiệu suất trong việc truyền tải và phát sóng video
SIMD cho phép tối ưu hóa mã lệnh để hiệu quả hóa việc xử lý các khối hình ảnh lớn trong quá trình mã hóa và giải mã video
Ví dụ: Trong thuật toán x264 (H.264 video encoder), SIMD được sử dụng để thực hiện các phép toán trên nhiều pixel cùng một lúc, cải thiện hiệu suất mã hóa video
- Xử Lý Hình Ảnh:
Các bộ lọc hình ảnh và các phép toán xử lý hình ảnh thường sử dụng SIMD để thực hiện đồng thời trên nhiều pixel, giúp cải thiện hiệu suất xử lý hình ảnh
Việc áp dụng SIMD trong xử lý hình ảnh giúp tối ưu hóa quá trình thay đổi kích thước, làm mịn ảnh, hoặc thực hiện các phép biến đổi trên nhiều điểm ảnh cùng một lúc
Ví dụ: Trong các thư viện xử lý hình ảnh như OpenCV, SIMD được tích hợp để tăng cường hiệu suất của các phép toán xử lý hình ảnh, giúp thực hiện các bộ lọc và biến đổi nhanh chóng
Trang 10- Thực Tế Ảo và Trò Chơi Điện Tử:
SIMD được sử dụng rộng rãi trong lĩnh vực thực tế ảo (VR) và trò chơi điện tử để
tăng cường hiệu suất đồ họa
Trong việc xử lý đồ họa và video trong thời gian thực, SIMD giúp thực hiện các
phép toán đồng thời trên dữ liệu hình ảnh và video, cung cấp trải nghiệm trực quan và
mượt mà
Ví dụ: Trong phát triển trò chơi điện tử, SIMD được sử dụng để tối ưu hóa các phép
toán đồ họa như ánh sáng, bóng, và hiệu ứng đặc biệt
- Xử Lý Video Trực Tiếp (Real-Time Video Processing):
Trong các hệ thống an ninh, y tế, và giải trí, SIMD được tích hợp để xử lý video trực
tiếp, từ nhận dạng đối tượng đến theo dõi chuyển động
Việc thực hiện đồng thời trên nhiều frame video giúp cải thiện khả năng phát hiện
và xử lý các sự kiện quan trọng trong thời gian thực
Ví dụ: Trong các hệ thống giám sát an ninh, SIMD được sử dụng để tăng tốc việc
xử lý video và nhận diện đối tượng, giúp giảm độ trễ và cải thiện khả năng đáp ứng