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

Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của NVIDIA trong bài toán mã hóa âm thanh chuẩn AAC

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 (39.86 MB, 68 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------PHẠM XUÂN TOÁI

ỨNG DỤNG CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG TRÊN
CÁC BỘ XỬ LÝ ĐỒ HỌA ĐA LÕI CỦA NVIDIA TRONG
BÀI TOÁN MÃ HÓA ÂM THANH CHUẨN AAC

Chuyên ngành : Công Nghệ Thông Tin

LUẬN VĂN THẠC SĨ KHOA HỌC
Chuyên Ngành Công Nghệ Thông Tin

NGƯỜI HƯỚNG DẪN KHOA HỌC :
1. TS.Nguyễn Hữu Đức

Hà Nội –2011


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

LỜI CAM ĐOAN.
Tôi là Phạm Xuân Toái
Sinh viên lớp cao học Công Nghệ Thông Tin
Khóa 2009 Đại Học Bách Khao Hà Nội
Mã số Học Viên: CB091354
Tôi cam kết Luận Văn Tốt Nghiệp là kết quả nghiên cứu của bản thân tôi dưới
sự hướng dẫn của T.S.Nguyễn Hữu Đức.
Các kết quả nêu trong Luận Văn Tốt Nghiệp là trung thực, không phải sao
chép toàn văn của bất kì công trình nào khác.



Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-2-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

LỜI CẢM ƠN
Trước tiên, em xin được gửi lời cảm ơn chân thành, sâu sắc tới thầy Nguyễn
Hữu Đức, Phó Giám đốc Trung Tâm Tính toán Hiệu năng cao Đại Học Bách Khoa
Hà Nội, là người trực tiếp hướng dẫn em thực hiện luận văn này. Trong suốt thời
gian thực hiện luận văn, thầy đã rất nhiệt tình hướng dẫn, đưa ra những định hướng,
lời khuyên quý báu cho bản luận văn tốt nghiệp của em.
Em cũng xin gửi lời cảm ơn tới anh Lê Đức Tùng, bạn Lê Đức Hùng cùng tập
thể cán bộ, sinh viên Trung tâm Tính Toán Hiệu năng cao Đại Học Bach Khoa Hà
Nội đã giúp đỡ, tạo mọi điều kiện cho em trong suốt quá trình thực hiện luận văn.
Tôi cũng gửi lời cảm ơn tới bạn Phạm Nguyễn Quang Anh cùng tập thể lớp
Cao học Công Nghệ Thông Tin khóa 2009 Đại Học Bách Khoa Hà Nội vì đã có
những đóng góp, chia sẻ rất kịp thời các thông tin rất hữu ích trong suốt quá trình
học tập và thực hiện luận văn tốt nghiệp của tôi.
Lời cuối cùng, tôi xin gửi lời cảm ơn tới người thân, gia đình, bạn bè đã luôn
động viên, cổ vũ tôi trong suối thời gian tôi thực hiện bản luận văn này.

Hà Nội, ngày 6 tháng 4 năm 2011
Phạm Xuân Toái
Lớp Cao Học Công Nghệ Thông Tin 2009
Đại Học Bách Khoa Hà Nội

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội

-3-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

MỤC LỤC
DANH MỤC HÌNH VẼ. ........................................................................................... - 6 DANH MỤC CÁC BẢNG BIỂU. ............................................................................. - 7 DANH MỤC CÁC THUẬT NGỮ ............................................................................ - 8 MỞ ĐẦU. ................................................................................................................. - 9 CHƯƠNG I. ÂM THANH KĨ THUẬT SỐ. ............................................................ - 12 1.1.Âm Thanh Kỹ Thuật Số.................................................................................. - 12 1.1.1.PCM......................................................................................................... - 12 1.1.2.Lấy mẫu (Sampling). ................................................................................ - 13 1.1.3. Độ Phân Giải (Resolution). ..................................................................... - 13 1. 1.4.Nén.......................................................................................................... - 15 1.2..Định Dạng và Chuẩn Âm Thanh Số............................................................... - 17 1.2.1. Các Chuẩn Âm Thanh Số. ....................................................................... - 17 1.2.2.Mã hóa..................................................................................................... - 18 1.2.3.Kiểu Tệp và Định Dạng Tệp..................................................................... - 18 1.2.4.Header và Siêu dữ liệu. ............................................................................ - 19 1.3.Chuẩn MPEG-AAC........................................................................................ - 19 1.3.1.Tổng quan về MPEG-AAC ....................................................................... - 19 1.3.2.Mã Hóa Mô Đun. ..................................................................................... - 20 1.3.3.Các Định Dạng Chứa............................................................................... - 21 CHƯƠNG II. LẬP TRÌNH ĐA DỤNG TRÊN CÁC BỘ XỬ LÝ ĐỒ HỌA ĐA LÕI
CỦA NVIDIA ......................................................................................................... - 22 2.1.Bộ Xử Lý Đồ Họa GPU. ................................................................................ - 22 2.2 Kiến Trúc Tính Toán trên GPU Tesla............................................................ - 24 Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-4-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

2.3. Mô Hình Lập Trình Song Song CUDA......................................................... - 28 2.4. Những mặt hạn chế của CUDA .................................................................... - 35 2.5. Thiết Lập Môi Trường Tính Toán CUDA...................................................... - 36 2.5.1. Môi trường phần cứng............................................................................. - 36 2.5.2.Bộ công cụ phát triển phần mềm .............................................................. - 37 CHƯƠNG III. PHÂN TÍCH GIẢI THUẬT MÃ HÓA AAC. .................................. - 38 3.1.Thuật Toán Mã Hóa AAC. ............................................................................. - 38 3.1.1.Mô hình âm thanh. ................................................................................... - 40 3.1.2.Điều chỉnh khuếch đại (Gain Control)...................................................... - 43 3.1.3.Filter Bank và Block Switching. ............................................................... - 43 3.1.4.Bộ Dự Đoán (Prediction). ........................................................................ - 44 3.1.5.Định dạng nhiễu thời gian(Temporal Noise Shaping(TNS)). .................... - 45 3.1.6.Mã hóa nối Stereo(Joint Stereo Coding)................................................... - 45 3.1.7.Lượng tử hóa và Mã Hóa ......................................................................... - 46 3.1.8.Mã hóa không mất mát thông tin. ............................................................. - 47 3.2.Khả Năng Song Song Hóa của quá trình mã hóa AAC. .................................. - 48 3.3.Phân Tích Thời Gian Mã Hóa AAC................................................................ - 51 CHƯƠNG IV. CẢI THIỆN HIỆU NĂNG MÃ HÓA ACC VỚI CÁC BỘ XỬ LÝ
ĐỒ HỌA ĐA LÕI NVIDIA .................................................................................... - 58 4.1.Thực Hiện Biến Đổi Tuần FFT Trên Cuda. .................................................... - 58 4.2.Tăng Tộc Độ Mã Hóa AAC............................................................................ - 61 4.3.Kết Quả Thực Nghiệm. .................................................................................. - 64 CHƯƠNG V. KẾT LUẬN VÀ ĐỊNH HƯỚNG. ..................................................... - 67 TÀI LIỆU THAM KHẢO. ...................................................................................... - 68 Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-5-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

DANH MỤC HÌNH VẼ.
Hình 1.1. Chuyển đổi tương tự -thành số ................................................................. - 13 Hình 1.2. Tần số lấy mẫu và độ phân giải................................................................ - 15 Hình 1.3. Hình minh họa phương pháp mã hóa MP3............................................... - 16 Hình 1.4.Cấu trúc của một file âm thanh số............................................................. - 19 Hình 2.1: GPU dành nhiều transitor hơn để xử lý dữ liệu........................................ - 22 Hình 2.2.: Biểu đồ số phép tính dâu chấm động trên giâyvà băng thông bộ nhớ giữa
CPU và GPU........................................................................................................... - 24 Hình 2.3: Kiến trúc Tesla ........................................................................................ - 25 Hình 2.4. Đối chiếu hai đoạn mã xử lý tuần tự và song song ................................... - 30 Hình 2.5: Phân cấp bộ nhớ...................................................................................... - 33 Hình 2.6. Mô hình các luông song song trên Cuda .................................................. - 34 Hình 2.7.Môi trường tính toán Cuda ....................................................................... - 36 Hình 3.1.Mô hình mã hóa AAC................................................................................ - 39 Hình 3.2.Giản đồ khối của mô hình âm thanh.......................................................... - 42 Hình 3.3.Công cụ Điều khiển khuếch đại................................................................. - 43 Hình 3.4.Sơ đồ Prediction. ...................................................................................... - 45 Hình 3.5.Mô hình mã hóa AAC với một file PCM. ................................................... - 48 Hình 3.6. Biểu đồ tỷ lệ thời gian thực hiện trong mã hóa AAC................................. - 57 Hình 4.1.Mô hình thực AAC Encoder song song...................................................... - 63 Hình 4.2.Biểu đồ tỉ lệ tăng tốc của biến đổi CudaFFT song song. ........................... - 66 -

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-6-



Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

DANH MỤC CÁC BẢNG BIỂU.
Bảng 1.1. Các tần số lấy mẫu âm thanh chính. ........................................................ - 14 Bảng 1.2. Một số chuẩn âm thanh phổ biến. ............................................................ - 17 Bảng 3.1.Kết quả phân tích thời gian thực hiện mã hóa với tệp 1. ........................... - 53 Bảng 3.2.Kết quả phân tích thời gian thực hiện mã hóa với tệp 2 ............................ - 54 Bảng 3.3.Kết quả phân tích thời gian thực hiện mã hóa với tệp 3. ........................... - 55 Bảng 3.4.Kết quả phân tích thời gian thực hiện mã hóa với tệp 4. ........................... - 55 Bảng 3.5.Kết quả phân tích thời gian thực hiện mã hóa với tệp5. ............................ - 56 Bảng 4.1.Số thời gian tính CudaFFT. ...................................................................... - 60 Bảng 4.2.Thời gian mã hóa file 1............................................................................. - 65 Bảng 4.3.Thời gian mã hóa file 2............................................................................. - 65 Bảng 4.4.Thời gian mã hóa file 3............................................................................. - 65 Bảng 4.5.Thời gian mã hóa file 4............................................................................. - 66 Bảng 4.6.Thời gian mã hóa file 5............................................................................. - 66 -

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-7-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

DANH MỤC CÁC THUẬT NGỮ
1. MPEG – Moving Picture Experts Group: tên một nhóm phát triển .
2. AAC – Advanced Audio Coding: Tên của một chuẩn mã hóa âm thanh kĩ

thuật số.
3. MP3 – MPEG Layer III: Tên của một chuẩn mã hóa âm thanh kĩ thuật số.
4. CPU –Centre Processing Unit: Bộ xử lý trung tâm của máy tính.
5. GPU- Graphic Processing Unit: Bộ xử lý đồ họa.
6. FFT – Fast Fourier Transform: Viết tắt của thuật toán biến đổi fourier nhanh.
7. MDCT – Modified Discrete Cosine Transform: Viết tắt của biến đổi phép

biến đổi cô si rời rạc.
8. PCM - pulse-code modulation: Định dạng âm thanh kĩ thuật số không nén.
9. Bitrate – tỷ lệ bit: chỉ số tương ứng với số lượng bit dữ liệu cần để lưu trữ dữ

liệu trong một đơn vị thời gian, thường được tính là kbit/s.


Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-8-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

MỞ ĐẦU.

Sự phát triển của công nghệ thông tin và truyền thông đã và sẽ ảnh hưởng
ngày càng sâu sắc đến mọi lĩnh vực, đời sống của con người. Ngày nay, tất cả các
dữ liệu từ văn bản, hình ảnh, âm thanh, video đều đã được số hóa. Đặc biệt trong
lĩnh vực âm thanh, đang có sự chuyển đổi mạnh mẽ về thiết bị, cách thức thưởng
thức, cách thức phân phối của âm thanh đặc biệt làm âm nhạc. Với sự tiện dụng và
chất lượng không ngừng được cải tiến thì các thiết bị âm thanh kĩ thuật số đang
ngày các trở nên phổ biến. Cách thực hiện phân phối của âm thanh cũng có nhiều
thay đổi, đặc biệt là trong lĩnh vực âm nhạc, nghe nhạc trực tuyến đang dần dần
thay thế nhà hát và băng đĩa. Cùng với đó là các chuẩn âm thanh không ngừng được
cải tiến để có được chất lượng tốt hơn, hiệu suất mã hóa, giải mã cao hơn và phù
hợp với việc nghe trực tuyến hơn. Sự ra đời của chuẩn âm thanh MPEG AAC cũng
không nằm ngoài mục đích trên. Bên cạnh việc cải tiến về chất lượng âm thanh thì
việc cải tiến về tốc độ mã hóa, giải mã cũng là một vấn đề rất đáng để quan tâm.
Hai yếu tố chính ảnh hưởng tới quá trình cải tiến này là: năng lực của các hệ thống
phần cứng hỗ trợ mã hóa/giải mã; và giải thuật cũng như chương trình mã hóa giải
mã trên các hệ thống phần cứng này. Xu hướng cho thấy các hệ thống vi xử lý đa
lõi đi kèm với công nghệ tính toán song song đang dần dần được áp dụng vào công
nghệ mã hóa/giải mã nói chung và cho bài toán mã hóa âm thanh nói riêng.
Cùng với sự phát triển về mặt thuật toán, phần mềm thì lĩnh vực phần cứng
cũng đã có những bước phát triển vượt bậc. Khi các mạch điện tử gần như đã đạt tới

tới hạn về tốc độ thì việc xây dựng các bộ xử lý đa lõi (2, 4, 8 lõi) và nhiều lõi (hàng
chục tới hàng trăm lõi) đang trở thành xu hướng phát triển để nâng cao sức mạnh
tính toán của hệ thống. Sự ra đời của các bộ xử lý đồ họa (GPU) với hàm trăm bộ
xử lý vô hướng có khả năng xử lý song song cao đã mang lại một phương thức mới
để nâng cao tốc độ tính toán. Đặc biệt với sự ra đời của các bộ xử lý đồ họa theo
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
-9-


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

kiến trúc Tesla chuyên dụng cho tính toán hiệu năng cao của NVIDIA và bộ công
cụ lập trình Cuda đã làm cho việc lập trình tính toán trên các bộ xử lý đồ họa mạnh
mẽ và tiện lợi hơn cho các ứng dụng đồ họa cũng như phi đồ họa. Vậy nên GPU
đang là một lựa chọn mới để tăng tốc độ tính toán và giải quyết các bài toán tính
toán hiệu năng cao.
Xuất phát từ những nhu cầu trong mã hóa/giải mã âm thanh và xu thế tính toán
hiệu năng cao trên các bộ xử lý đồ họa đa lõi, luận văn định hướng đến việc ứng
dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa của NVIDIA để áp dụng
cho bài toán mã hóa, giải mã âm thanh chuẩn AAC nhằm tăng tốc độ cho quá trình
mã hóa/giải mã này.
Bằng phương pháp phân tích, thử nghiệm, luận văn đã đi vào phân tích các
khả năng song song hóa trong quy trình mã hóa chuẩn âm thanh AAC, đo đạc thời
gian thực hiện của từng bước trong quy trình để xác định những pha cần được song
song, từ đó đưa ra các giải pháp ứng dụng GPU nhằm tăng tốc độ mã hóa chuẩn âm
thanh AAC.
Qua quá trình tìm hiểu các vấn đề lý thuyết liên quan, phân tích và thực
nghiệm, tác giả đã tìm hiểu được về lý thuyết âm thanh kĩ thuật số, mô hình triến
trúc Tesla, kỹ thuật lập trình Cuda, tìm hiểu thuật toán mã hóa AAC, phân tích các

khả năng song song của thuật toán. Đóng góp chính của luận văn là :
 đưa ra những kết quả phân tích về thời gian thực hiện của các bước
trong quá trình mã hóa AAC trên giải thuật tuần tự;
 đề xuất giải pháp song song hóa một phần trong quá trình mã hóa góp
phần cải tiến tốc độ mã hóa lên gấp hơn hai lần (trên hệ thống thử
nghiệm).
Các phần tiếp của đồ án sẽ được tổ chức như sau: Chương I trình bày các vấn
đề cơ bản về âm thanh kĩ thuật số. Chương II trình bày về kiến trúc Tesla và mô
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 10 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

hình lập trình song song Cuda. Chương III đưa ra các phân tích về giải thuật mã hóa
chuẩn âm thanh AAC. Chương IV trình bày về giải pháp sử dụng GPU để tăng tốc
độ mã hóa AAC và kết quả thực nghiệm. Chương V là kết luận và định hướng công
việc tương lai.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 11 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

CHƯƠNG I. ÂM THANH KĨ THUẬT SỐ.

Chương này trình bày các vấn đề cơ bản của âm thanh kĩ thuật số nói chung và

giới thiệu các đặc tính của chuẩn âm thanh MPEG-AAC
1.1.Âm Thanh Kỹ Thuật Số.

Âm thanh tự nhiên có thể được thu lại như là tín hiệu tương tự bởi
microphone. Để chuyển đổi tín hiệu tương tự này thành định dạng dữ liệu của các
tệp âm thanh kĩ thuật số thì thường phải trải qua một số giai đoạn:
 Tiền xử lý (pre-emphasis) (tùy chọn, có thể có hoặc không).
 Lấy mẫu (sampling)
 Chuyển đổi Tương tự sang Số (Analog to Digital Conversion).
 Nén(Compression)
 Đóng gói và bao bọc (Packetization and wrapping).
Hệ thống âm thanh kĩ thuật số đầu tiên sử dụng mã hóa tuyến tính không nén,
vì vậy chỉ cần thực hiện ba quá trình đầu tiên: tiền xử lý, lấy mẫu và chuyển đổi
tương tự sang số. Dạng dữ liệu được sử dụng rộng dãi nhất là PCM (pulse-code
modulation).
1.1.1.PCM.

PCM (pulse-code mudulation) là dạng cơ bản của âm thanh kĩ thuật số. Các
microphone sẽ sinh ra các điện áp tương ứng với áp suất (hoặc là tốc độ) của không
khí. Các mẫu này được lấy trong các khoảng thời gian đều nhau. Giá trị của mẫu sẽ
được chuyển thành dưới dạng số. Các tham số cơ bản của mã hóa là tần số lấy mẫu
(sampling rate) và độ phân giải (resolution) hoặc là độ sâu bit. Bước tiền xử lý trong
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 12 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

lược đồ lấy mẫu là để loại bỏ các âm thanh chói tai, hoặc là các nhiễu tần số cao,

trong các mạch điện tử. Bằng cách nâng các nội dung tần số cao, tý lệ tín hiệu nhiễu
có thể được cải thiện. Vì vậy tiền xử lý được sử dụng trong việc phát sóng FM, và
là một tùy chọn trong mã hóa kỹ thuật số. Điều này làm giảm bớt năng lượng ở các
tần số cao với các nội dung điển hình. Tuy nhiên giai đoạn này không thực sự cần
thiết đối với quá trình chuyển đổi và mã hóa. Quá trình chuyển đổi từ sóng âm
thành tương tự thành số có thể được thực hiện như hình minh họa 1.1.

Hình 1.1. Chuyển đổi tương tự -thành số
1.1.2.Lấy mẫu (Sampling).

Tần số lấy mẫu được thiết lập bởi bộ đáp ứng tần số. Lý thuyết lấy mẫu chỉ ra
rằng tần số lấy mẫu nên lớn hơn hoặc bằng hai lần biên độ tín hiệu muốn thu. Tần
số lấy mẫu là một giá trị thỏa hiệp: tần số cao hơn thì có nhiều mẫu được sinh ra.
Con người có thể nghe được trong khoảng từ 20 đến 20000Hz, nhưng giọng nói
của con người chỉ sử dụng trong khoảng giới hạn ở giữa là từ 500 đến 3000Hz. Đối
với các ứng dụng có độ trung thực cao, tần số lấy mẫu phải lớn hơn hoặc bằng
40kHz, nhưng đối với các kênh tiếng nói thì tần số có thể được sử dụng ở tỷ lệ thấp
là 6kHz.
1.1.3. Độ Phân Giải (Resolution).

Quá trình mã hóa số sẽ chuyển các sóng tương tự (analog waveform), với các
giá trị liên tục, thành một số cấp độ rời rạc – một quá trình lượng tử hóa. Số lượng
cấp độ được sử dụng sẽ xác định độ phân giải.
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 13 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC


Tần số lấy mẫu

Bộ đáp ứng tần số

Ứng dụng

8 kHz

200 Hz–3.3 kHz

Điện thoại

16 kHz

100 Hz–7 kHz

Truyền giọng nói băng thông rộng

32 kHz

50 Hz–15 kHz

Thông tin đại chúng

44.1 kHz

20 Hz–20 kHz

Tiêu dung


48 kHz

20 Hz–20 kHz

Hệ thống chuyên nghiệp

Max. 192 kHz

Lên tới 96 kHz

DVD-A

Lên tới 100 kHz

SACD

2.8224 MHz

Bảng 1.1. Các tần số lấy mẫu âm thanh chính.
Giá trị bước tối thiểu thiết lập sàn tiếng ồn của tín hiệu được chuyển đổi.
Trong phần lớn các biến đổi, mỗi bước có cùng một giá trị, được gọi là PCM tuyến
tính. Các chương trình ứng dụng có yêu cầu thấp hơn thường sử dụng 16bit lấy
mẫu. Những người dùng chuyên nghiệp sẽ yêu cầu độ phân giải cao hơn là 20 hoặc
24bit. Bảng 1.1 chỉ ra các khoảng lấy mẫu và ứng dụng. Trong thực thế, điều này
không thể đạt được, vì vậy vẫn có một số tiếng ồn được thể hiện trong bộ chuyển
đổi tương tự thành số và trong các giai đoạn trước giữa bộ chuyển đổi microphone
và bộ chuyển đổi.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 14 -



Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

Hình 1.2. Tần số lấy mẫu và độ phân giải.
1. 1.4.Nén.
1. 1.4.1.Nén không mất mát thông tin.
Nhiều loại dữ liệu chứa các thông tin dư thừa mà có thể có cách thức biểu diễn
khác hiệu quả hơn, đó chính là các phương pháp nén không mất mát thông tin. Một
trong các phương pháp thường được sử dụng đó là phương pháp mã hóa Huffman.
Ưu điểm chính của phương pháp này đó là khi giải nén thì có thể khôi phục lại
toàn bộ thông tin được mã hóa mà không có lỗi.
Tuy nhiên nhược điểm của phương pháp này là tỷ lên nén thấp dẫn tới dữ liệu
phải lưu trữ lớn.
1. 1.4.2. Nén mất mát thông tin.
Nén mất mát thông tin hoạt động bằng các bỏ qua các thông tin không cần
thiết và các thông tin dư thừa (tức là các âm thanh mà phần lớn con người không thể
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 15 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

nghe thấy được) và sau đó áp dụng các kỹ thuật nén không mất mát thông tin để
giảm kích thước dữ liệu nhiều hơn. Với mã hóa mất mát thông tin, chất lượng âm
thanh nhận được sẽ khác nhau tùy thuộc vào các yếu tố như là tỷ lệ bit, độ phức tạp
của âm nhạc và kiểu phần mềm mã hóa.


Hình 1.3. Hình minh họa phương pháp mã hóa MP3.
Mã hóa mất dữ liệu là một quá trình chuyển đổi dữ liệu âm thanh dạng số chưa
được nén, như là PCM, WAV, hoặc là AIFF, thành các định dạng được nén như là
MP3, AAC. Các phần mềm được sử dụng trong các quá trình mã hóa (hoặc giải mã)
được xem như là một bộ CODEC trong mã hóa và giải mã (hoặc là một bộ nén/ giải
nén). Thường có nhiều hơn một CODEC cho một định dạng âm thanh, thậm chí
cùng một định dạng âm thanh,các bộ CODEC khác nhau cũng có thể có chất lượng
âm thanh và tốc độ mã hóa khác nhau.
Ưu điểm chính của nén mất mát thông tin đó là tỉ lệ nén cao.Nhưng nhược
điểm đó là sau khi giải nén thì không khôi phục lại được thông tin ban đầu và bộ
giải mã, mã hóa phức tạp.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 16 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

1.2..Định Dạng và Chuẩn Âm Thanh Số.
Từ định dạng trong có một vài nghĩa, tùy thuộc vào ngữ cảnh. Khi nói về định
dạng của âm thành là chúng ta nói đến cách thức nội dụng âm thanh được tổ chức
để lưu trữ và phải hồi lại thông tin.
1.2.1. Các Chuẩn Âm Thanh Số.
Các chuẩn của các định dạng âm thanh số có thể để chỉ ra các định dạng tệp,
các phương pháp mã hóa, tỷ lệ lấy mẫu, độ phân giải, thiết bị vật lý và các đặc tính
khác. Các tham số như là tỷ lệ lấy mẫu, độ phân giải và số lượng các kênh có được
chỉ định các giá trị cố định hoặc là một khoảng giá trị.
Các chuẩn âm thanh số là cần thiết để đảm bảo khá năng tương thích giữa các
thiết bị và phương tiện từ các nguồn khác nhau. Ví dụ như một tệp dữ liệu MP3 bất

kì được tạo theo đúng chuẩn MP3 thì có thể được chơi trên bất kì chương trình hay
thiết bị chơi nhạc nào có hỗ trợ chuẩn MP3.
Một số chuẩn, ví dụ như là chuẩn âm thanh CD, lại cung cấp chỉ một phương
pháp mã hóa, kiểu phương tiện, độ phân giải và tỷ lệ mẫu, trong khi một số chuẩn
khác, ví dụ như chuẩn âm thanh DVD, lại chỉ định một kiểu phương tiện nhưng có
thể bao gồm các độ phân giải và tỷ lệ lấy mẫu khác nhau.

Chuẩn

Kiểu
Phương pháp
Phương
mã hóa
Tiện

Số kênh

Độ
Hệ số lấy
phân
mẫu
giải

CD audio

PCM

CD

2 (stereo)


44.1 kHz

16-bit

DVD-Audio

PCM, MLP

DVD

26

44.1192
kHz

16-, 20-,
24-bit

MPEG
Audio MPEG LayerBất kì
Layer-III (MP3) III

Đơn
âm
1648 kHz
hoặc stereo

Bảng 1.2. Một số chuẩn âm thanh phổ biến.


Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 17 -

N/A


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

1.2.2.Mã hóa.
Khi âm thanh tương tự được chuyển thành dữ liệu số, các mẫu (các đơn vị âm
thanh rời rạc) được lưu trữ trong một tệp (hoặc luồng) không có bất kì một xử lý
nào khác ngoại trừ việc sắp xếp chúng theo đúng thứ tự của một định dạng cụ thể.
Việc nhận lại dữ liệu để chơi chỉ đơn giản là phép xử lý lấy lại dữ liệu theo đúng
thứ tự. Kiểu âm thanh này thường được xem như là kiểu thô hoặc là kiểu chưa được
nén.
Mã hóa cung cấp thêm các xử lý ngoài việc lưu trữ một dữ liệu theo đúng thứ
tự một cách đơn thuần. Các bộ mã hóa cung cấp các chương trình toán học phức tạp
được gọi là các thuật toán tới một phần hoặc toàn bộ dữ liệu của tệp thay vì tới một
mẫu âm thanh riêng lẻ. Điều này cho phép các bộ mã hóa phân tích tệp âm thanh
một cách tổng thể để có thể đưa ra các quyết định xem thông tin nào không thể nghe
được và thông tin nào có thể được loại bỏ. Các bộ mã hóa lưu trữ các kết quả âm
thanh được mã hóa trong các tệp, hoặc gửi tới một máy chủ để được tạo luồng
(stream) thông qua mạng máy tính.
Trước khi được chơi, âm thanh cần phải được giải nén hoặc là giải mã. Các
chương trình có thể thưc hiện toàn bộ quá trình, từ mã hóa/nén tới giải mã/giải nén
thì được gọi là các bộ CODEC. Một định dạng thường có nhiều hơn một bộ mã
hóa,vì vậy từ phương pháp mã hóa thường để chỉ một định dạng nén cụ thể.

1.2.3.Kiểu Tệp và Định Dạng Tệp.


Từ định dạng có thể được sử dụng để mô tả một kiểu tệp âm thanh số cụ thể
như là AIFF và WAV. Có một cách gọi chính xác hơn là kiểu tệp. Chúng ta có thể
nhận biết kiểu tệp theo phần mới rộng của nó ví dụ như các tệp .wav và .aiff là các
kiểu file WAV và AIFF.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 18 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

Định dạng tệp để chỉ cấu trúc của dữ liệu trong tệp. Ví dụ, dữ liệu bên trong
một tệp âm thanh số bao gồm một chuỗi các bit theo thứ tự xác định.
Đặc tả của một định dạng file có thể đơn giản chỉ là một tài liệu định nghĩa
làm thể nào để lưu trữ và thể hiện được dữ liệu trong file.
1.2.4.Header và Siêu dữ liệu.

Dữ liệu âm thanh trong file có thể có nhiều cấu trúc khác nhau. Ví dụ như một
file AIFF hoặc WAV có thể chỉ một kênh hoặc hai kênh, hoặc có thể được ghi âm ở
một số hệ số lấy mẫu, độ phân giải khác nhau.
Trong nhiều kiểu tệp được sử dụng cho âm thanh số, ở đầu của các tệp chứa
dữ liệu thêm vào được gọi là một header, phần này xác định cấu trúc phần dữ liệu
dữ liệu âm thanh được lưu trong tệp. Khi một chương trình mở tệp đó, đầu tiên nó
đọc header để xác định xem nào sẽ đọc phần dữ liệu còn lại như thế nào.

Hình 1.4.Cấu trúc của một file âm thanh số.

1.3.Chuẩn MPEG-AAC

1.3.1.Tổng quan về MPEG-AAC
AAC (Advanced Audio Coding) là một lược đồ mã hóa và nén mất mát thông
tin được chuẩn hóa của âm thanh kĩ thuật số. Được thiết kế để với mục đích là phiên
bản kế tiếp của định dạng MP3, nên một cách tổng quan thì định dạng AAC đạt
được chất lượng tốt hơn nếu trong cùng tỉ lệ bít.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 19 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

AAC được hợp tác phát triển bởi các công ti AT&T Bell Laboratories,
Fraunhofer IIS, Dolby Laboratories, Sony Corporation và Nokia. Và được công bố
chính thức thành một chuẩn quốc tế bởi MPEG (Moving Picture Experts Group)
vào tháng 4 năm 1997. AAC được đặc tả trong phần 7 của chuẩn MPEG-2 và trong
phần 3 của MPEG-4.[3]
AAC hỗ trợ tới 48 kênh âm thanh. Tỷ lệ mẫu được hỗ trợ bởi hệ thống AAC
biến đổi trong khoảng từ 8kHz tới 96Khz. Tỷ lệ bit trên một kênh tối đa phụ thuộc
vào tần số lấy mẫu và biến đổi từ 48kb/s đến 576kb/s. Có thể thỏa mãn các yêu cầu
tối thiểu của chất lượng của âm thanh nổi (stereo) ở 96kbit/s, nhưng để đáp ứng
được yêu cầu âm thanh hi-fi thì tỉ lệ bit tối thiểu là 128kbit/s.
AAC cũng là định dạng chuẩn và mặc định của các thiết bị như là iPhone,
iPod, iPad, Nintendo DSi, iTunes, DivX Plus Web Player và PlayStation 3.
1.3.2.Mã Hóa Mô Đun.
ACC đưa ra một cách tiếp cận Mođun để mã hóa. Phụ thuộc vào độ phức tạp
của luồng dữ liệu được mã hóa, hiệu năng mong muốn và yêu cầu đầu ra, các bộ
thực thi có thể tạo ra một chuẩn mẫu (profile) để định nghĩa một tập các công cụ sẽ
được sử dụng.

Phần 7 của chuẩn MPEG-2 phát hành năm 1997 đã đưa ra ba chuẩn mẫu mặc
định:


Low Complexity (LC) – Chuẩn đơn giản nhất và được sử dụng rộng rãi nhất



Main Profile (Main) – Chuẩn có chật lượng tốt nhất nhưng hiệu năng mã
hóa thấp nhất



Scalable Sample Rate (SSR): Có độ phức tạp lớn hơn LC nhưng hiệu năng
cao hơn Main.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 20 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

Trong phần 3 của chuẩn MPEG-4 đã định nghĩa một số công cụ nén mới và
ứng dụng trong một số chuẩn mẫu mới. Sau đây là danh sách một các chuẩn mẫu
được định nghĩa trong MPEG-4.


Main Audio Profile




Scalable Audio Speech Audio Profile



Synthetic Audio Profile



High Quality Audio Profile



Low Delay Audio Profile



Mobile Audio Internetworking Profile



AAC Profile



High Efficiency AAC Profile




High Efficiency AAC v2 Profile

1.3.3.Các Định Dạng Chứa.

Dữ liệu âm thanh AAC có thể được đóng gói trong nhiều hơn một định dạng
cơ bản được gọi là Định dạng Trao Đổi Dữ liệu Âm thanh (ADIF – Audio Data
Interchange Format), bao gồm một header chung ở đầu và các khối dữ liệu âm
thanh AAC ở sau. Bên cạnh đó, dữ liệu AAC có có thể được đóng gói trong một
định dạng kiểu luồng (streaming) được gọi là Luồng Truyền Dữ liệu Âm Thanh
(ADTS – Audio Data Transport Stream), bao gồm một chuỗi các khung dữ liệu
(frame), mỗi khung dữ liệu có một một header ở đầu và phần dữ liệu âm thanh ở
sau. Trong định dạng ADTS , tệp âm thanh không cần phải có một header chung mà
chỉ là một tập các khung dữ liệu được sắp xếp theo đúng thứ tự.

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 21 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

CHƯƠNG II. LẬP TRÌNH ĐA DỤNG TRÊN CÁC BỘ XỬ LÝ ĐỒ HỌA
ĐA LÕI CỦA NVIDIA
Chương này sẽ trình bày các vấn đề cơ bản về bộ xử lý đồ họa GPU, kiến
trúc hợp nhất giữa tính toán và đồ họa Tesla, mô hình lập trình song song trên Cuda
và môi trường tính toán Cuda.
2.1.Bộ Xử Lý Đồ Họa GPU.
Trong những 90 của thế kỉ trước, chúng ta đã những bước phát triển không
ngừng về tốc độ của bộ xử lý trung tâm (CPU – Centre Processing Unit), với tốc độ
tăng từ 200Mz lên tới sấp xỉ 4Ghz, và tốc độ này gần như đã đạt tới tới hạn về mặt

vật lý. Do đó, để nâng cao sức mạnh tính toán của bộ xử lý thì cần có một hướng đi
mới đó là tính toán song song. Trong khi các nhà phát triển CPU đưa ra các bộ xử lý
đa lõi nhưng vẫn chỉ để cố gắng tăng tốc độ thực hiện cho một công việc đơn lẻ thì
lại các nhà phát triển các bộ xử lý đồ họa GPU (Graphic Processing Unit) lại phát
triển theo hướng làm thế nào để các công việc có thể thực hiện song song một cách
tối đa. Chính vì vậy, trong khi số lượng lõi tính toán trong CPU chưa đạt đến con
số 8 lõi thì số lượng lõi xử lý GPU đã đạt tới 1024 lõi vào đầu năm 2011. Tính đến
tháng 6/2008, GPU thế hệ GT200 của NVidia đã đạt tới ngưỡng 933GFlops gấp
hơn 10 lần so với bộ xử lý hai lõi Intel Xeon 3.2 GHz tại cùng thời điểm. Hình 2.2
thể hiện sự tăng tốc về năng lực tính toán của các bộ xử lý đồ hoạ Nvidia so với bộ
xử lý Intel
Lý do phía sau sự khác biệt về khả năng tính toán dấu phẩy động giữa CPU và
GPU chính là GPU được thiết kế cho mục đích tính toán mạnh, khả năng tính toán
song song cao – và do đó được thiết kế sao cho có nhiều transistor được dùng để xử
lý dữ liệu hơn là dùng cho đệm dữ liệu và điều khiển luồng, như hình minh họa
trong hình 2.1 và hình 2.2.

Hình 2.1: GPU dành nhiều transitor hơn để xử lý dữ liệu
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 22 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 23 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong

bài toán mã hóa âm thanh chuẩn AAC

Hình 2.2.: Biểu đồ số phép tính dâu chấm động trên giâyvà băng thông bộ nhớ
giữa CPU và GPU
Do đó, GPU đặc biệt phù hợp để giải quyết các bài toán có thể tính toán song
song về dữ liệu – tức là cùng chương trình được thực hiện trên nhiều bộ dữ liệu một
cách song song – với cường độ tính toán số học cao – tỷ lệ số thao tác số học trên số
thao tác với bộ nhớ. Bởi vì cùng chương trình được thực hiện cho mỗi bộ dữ liệu,
nên không cần đòi hỏi cao về hoạt động điều khiển luồng, và bởi vì chương trình
được thực hiện trên nhiều bộ dữ liệu và có cường độ số học cao, nên độ trễ truy cập
bộ nhớ có thể được ẩn đi cùng với các phép tính thay vì phải đệm một lượng dữ liệu
lớn. Do đó, bộ xử lý GPU không chỉ ứng dụng trong xử lý đồ họa mà còn được ứng
dụng trong các tính toán hiệu năng cao để thực hiện tăng tốc cho các bài toán có yêu
cầu tính toán lớn và có khả năng thực hiện song song.
Và để mở rộng ứng dụng của GPU trong các tính toán chung và tính toán hiệu
năng cao, Nvidia đã đưa ra dòng sản phẩm Tesla và bộ công cụ lập trình song song
Cuda.

2.2 Kiến Trúc Tính Toán trên GPU Tesla

Được Nvidia giới thiệu vào tháng 11 năm 2006, kiến trúc tính toán và đồ họa
hợp nhất Tesla đã phát triển, gia tăng đáng kể về số lượng so với phạm vi của các
GPU đồ họa không lập trình được – khả năng xử lý các mảng dữ liệu đa tiến trình
của nó dần trở thành một nền tảng hợp nhất hiệu năng cao cho cả những ứng dụng
tính toán đồ họa và ứng dụng tính toán song song thông thường trên GPU .
Bằng cách chia tỉ lệ số các bộ xử lý (processor) và các thành phần bộ nhớ, kiến
trúc Tesla đã mở rộng một dải thị trường các GPU bao gồm: những GPU có hiệu
năng cao như GeForce 8800, những sản phẩm tính toán chuyên nghiệp như Quadro,
Tesla và những dòng card đồ họa GeForce GPU. Những đặc trưng tính toán của các
dòng card này làm cho việc lập trình với các các lõi GPU trở nên dễ dàng hơn trong

môi trường lập trình C và với môi trường CUDA. Và việc nó sẵn có trong các máy
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 24 -


Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa đa lõi của Nvidia trong
bài toán mã hóa âm thanh chuẩn AAC

laptop, desktop, workstation, và server với môi trường lập trình C và phần mềm
CUDA, đã tạo nên những nền tảng kiến trúc siêu máy tính Tesla đầu tiên ở khắp
mọi nơi.

Hình 2.3: Kiến trúc Tesla
Kiến trúc Tesla được xây dựng xung quanh một mảng có thể mở rộng của các
SM (streaming multiprocessors – đa xử lý dòng lệnh). Những GPU hiện nay có thể
thực hiện từ 768 cho tới 12288 tiến trình thực thi đồng thời. Việc mở rộng qui mô
thực thi song song hóa một cách trong suốt trên một dải rộng (của các dòng GPU)
sẽ là chìa khóa mục tiêu của cả kiến trúc GPU và mô hình lập trình CUDA. Hình
trên trình bày một GPU với 14 SMs - tương đương với 112 lõi SP (streaming
processor), kết nối liên thông với 4 bộ nhớ DRAM bên ngoài. Khi một chương trình
CUDA trên host CPU gọi một lưới kernel – grid kernel (C dành cho CUDA là mở
rộng của C, nó cho phép người lập trình có thể định nghĩa các hàm C được gọi là
nhân – kernel. Và khi được gọi, nhân này sẽ được thực hiện N lần song song với
nhau bởi N tiến trình CUDA (CUDA thread) khác nhau, trái ngược với chỉ có một
tiến trình được chạy như hàm C thông thường), đơn vị phân phát công việc tính
toán, gọi tắt là CWD (compute work distribution) sẽ liệt kê các block (block – khối,
Phạm Xuân Toái – Cao Học CNTT - 2009- Đại Học Bách Khoa Hà Nội
- 25 -



×