Chương 1 TỔNG QUAN CÁC KIẾN TRÚC DSP HIỆN NAY 1.1 Các kiến trúc DSP thương mại ngoài nước 1.1 Các dòng DSP truyền thống (Conventional DSP Processor) Hiệu suất và giá thành của các bộ xử lý DSP rất đa dạng. Các bộ DSP với giá thành thấp và hiệu suất thấp thường dựa trên kiến trúc DSP truyền thống. Kiến trúc này tương tự như kiến trúc của bộ xử lý DSP đầu những năm 1980. Tập lệnh thường phức tạp với mỗi lệnh bao gồm nhiều tác vụ nhỏ.
Mỗi lệnh được thực thi trong mỗi chu kỳ xung clock. Trong kiến trúc thường chỉ có một bộ nhân hoặc một bộ MAC (Multiply and Accumulate) và một bộ ALU (Arithmetic Logic Unit). Các DSP thuộc dòng này bao gồm họ ADSP-21xx của Analog Devices, họ TMS320C2xx của Texas Instruments, và họ DSP560xx của Motorola. Hình 1 thể hiện sơ đồ khối của DSP TMS320C25.
Các thành phần phần cứng được xây dựng xung quanh bus chương trình và bus dữ liệu. DSP TMS320C25 sử dụng 4K ô nhớ 16-bit cho bộ nhớ chương trình và 544 ô nhớ 16-bit cho bộ nhớ dữ liệu.2 Các dòng DSP tầm trung (Midrange DSP Processors) Các DSP ở dòng này đạt được hiệu suất cao hơn so với các DSP dòng truyền thống nhờ vào sự kết hợp giữa tăng tốc độ xung clock và áp dụng kiến trúc phức tạp hơn. Dòng DSP tầm trung có khuynh hướng được pipeline thành nhiều tầng hơn so với dòng DSP truyền thống. Ngoài ra, các thành phần phần cứng thường được thêm vào để tăng tốc, chẳng hạn như bộ barrel shifter hoặc bộ nhớ cache lệnh.
Ngoài những khác biệt trên, dòng DSP tầm trung có nhiều nét tương tự như dòng truyền thống. Dòng này bao gồm các họ DSP563xx của Motorola và họ TMS320C54x của Texas Instruments. Hình 2 thể hiện sơ đồ khối của DSP TMS320C54x. Kiến trúc Harvard sửa đổi được sử dụng.
Do vậy, bộ nhớ chương trình và bộ nhớ dữ liệu có không gian riêng biệt và có thể truy cập đồng thời. Kiến trúc có một bus bộ nhớ chương trình và ba bus bộ nhớ dữ liệu. Tập lệnh có tính chuyên biệt cao. 5 Hình 1 Sơ đồ khối DSP TMS320C25 1.3 Các dòng DSP truyền thống được mở rộng (Enhanced-Conventional DSP Processors) Để tăng cao hiệu suất hơn nữa, kiến trúc DSP truyền thống được mở rộng bằng cách thêm vào các đơn vị tính toán song song, thường là một bộ nhân và một bộ cộng thứ hai.
Để tận dụng sức mạnh phần cứng, tập lệnh được mở rộng để cho phép nhiều hoạt động được mã hóa trong một câu lệnh duy nhất. Các hoạt động này sẽ được thực hiện song song khi câu lệnh được thực thi. Các DSP này thường có bus dữ liệu rộng để lấy nhiều dữ liệu hơn trên mỗi chu kỳ xong clock. 6 Chúng được gọi là dòng DSP truyền thống được mở rộng bởi vì chúng dựa trên kiến trúc bộ xử lý DSP truyền thống chứ không phải một kiến trúc hoàn toàn mới.
Hình 3 so sánh các đơn vị tính toán và đường bus của một DSP truyền thống (dòng DSP16xx của Lucent Technologies) và một DSP mở rộng của nó (dòng DSP16xxx của Lucent Technologies). Hình 2 Sơ đồ khối DSP TMS320C54x 7 Hình 3 Các đơn vị tính toán và đường bus của DSP truyền thống và mở rộng 1.4 Các dòng DSP theo kiến trúc Multi-Issue (Multi-Issue Architectures) Dòng DSP truyền thống được mở rộng, cải thiện hiệu suất bằng cách cho phép nhiều hoạt động được mã hóa trong mỗi lệnh, nhưng vẫn theo xu hướng của việc sử dụng phần cứng chuyên biệt với tập lệnh phức tạp. Do vậy, nó gặp một số vấn đề tương tự như DSP truyền thống: rất khó để viết chương trình theo ngôn ngữ assembly và rất khó để xây dựng compiler cho kiến trúc này một cách hiệu quả. Với mục tiêu đạt được hiệu suất cao và có thể tận dụng các compiler, một số bộ vi xử lý DSP mới sử dụng kiến trúc song song "multi-issue".
Ngược lại với bộ DSP truyền thống và DSP truyền thống mở rộng, nó sử dụng tập lệnh với những câu lệnh rất đơn giản, mỗi câu lệnh thường mã hóa một hoạt động duy nhất. Điều này giúp cho DSP Multi-Issue có thể chạy ở xung clock cao hơn. Ngoài ra, DSP dòng này thực hiện nhiều tính toán song song bằng cách thực thi một nhóm câu lệnh cùng một lúc. Hai loại của dòng DSP này là VLIW (very long instruction word) và superscalar.
Hai loại này có kiến trúc khá giống nhau, khác nhau chủ yếu nằm ở cách nhóm các câu lệnh lại để thực hiện song song. Đa số các bộ xử lý DSP Multi-Issue hiện nay sử dụng phương pháp VLIW. Các họ DSP theo kiến trúc này gồm có C62x, C64x và C67x của Texas Instruments. Sơ đồ khối của họ C6x được thể hiện ở Hình 4.
Kiến trúc này có 8 bộ tính toán: L1, S1, M1, D1, L2, S2, M2 và D2 cho phép thực hiện tối đa 8 lệnh cùng một lúc. Có hai Register file A và B, 16 thanh ghi đa dụng mỗi Register file, mỗi thanh ghi 32-bit. Tập lệnh của họ này theo kiến trúc RISC (Reduced Instruction Set Computer) với các câu lệnh Load/store riêng biệt để truy xuất các thành phần bộ nhớ. 8 Hình 4 Sơ đồ khối của họ DSP TMS C6x 1.2 Các nghiên cứu về bộ DSP trong nước Từ năm 2008, nhóm nghiên cứu ICDREC đã thiết kế thành công các VXL 8 bits, 32 bits.
Tuy nhiên, đây là các VXL đa dụng nên khả năng cài đặt các thuật toán DSP sẽ bị giới hạn. Ngoài ra, nhóm nghiên cứu này còn thực hiện nhiều đề tài liên quan đến DSP, nhưng phần lớn chỉ là các lõi thư viện DSP dùng để tích hợp vào một hệ thống lớn hơn chứ không phải một chip DSP hoàn chỉnh. Từ năm 2005, nhóm nghiên cứu trường ĐH. KHTN đã tiến hành thiết kế bộ DSP 16 bits với tập lệnh RISC và kiểm nghiệm thành công trên FPGA [14]-[15]-[16].
DSP này được thiết kế theo kiến trúc Harvard gồm 2 đường dữ liệu và lệnh riêng biệt. Bộ nhớ lệnh và bộ nhớ dữ liệu có thể thay đổi được với kích thước tối đa lần lượt là 4Kx16 và 65Kx16. DSP có thể hoạt động ở tần số 20 MHz, bao gồm 16 thanh ghi đa dụng được đánh số từ r0 đến r15, mỗi 9 thanh ghi có kích thước 24 bits và được dùng trong các phép tính toán số học. Bên cạnh đó, DSP hỗ trợ 41 lệnh được tạo thành từ 16 opcodes với 8 cờ và được chia thành 3 loại: I, R, và J.
Ngoài ra, một trình biên dịch đơn giản cũng được thiết kế để nạp code và kiểm tra lỗi trên DSP. Năm 2010, nhóm nghiên cứu trường ĐH. KHTN đã tiến hành thiết kế VXL MIPS 32 bits và kiểm nghiệm thành công trên FPGA [17]. VXL này được thiết kế theo kiến trúc Von- Neuman dùng chung đường dữ liệu và lệnh.
Một trình biên dịch đơn giản được thiết kế để nạp code và kiểm tra lỗi trên VXL. Mục tiêu mà VXL nhắm đến là phục vụ cho việc giảng dạy bậc Đại học môn Cấu Trúc Máy Tính, giúp sinh viên có thể nắm vững các lí thuyết đã học trên lớp thông qua việc thực hành trên VXL này. Hình 5 Ảnh chip DSP thiết kế thử nghiệm ở công nghệ 180 nm và được phóng to 10 lần và Ảnh Chip DSP được phóng to 40 lần Năm 2011, nhóm nghiên cứu trường ĐH. KHTN đã thiết kế và thử nghiệm thành công vi mạch DSP 16 bits với sự hỗ trợ từ trường ĐH.
UEC Nhật Bản. DSP này sử dụng công nghệ 180 nm, tiêu tốn 2411 cells và diện tích layout là 25x25 mm2. Kết quả thử nghiệm với điện thế 1.8 V, chip DSP hoạt động tốt ở tần số 5 MHz và tiêu tốn năng lượng thấp, dưới 1 mW. Năm 2011, nhóm nghiên cứu trường ĐH.
KHTN thực hiện đề tài trọng điểm cấp ĐHQG về “Thiết kế hệ thống nhúng trên FPGA và vi mạch Synthesizer dùng trong hệ thống TTS tiếng Việt”. Một trong những phần quan trọng của đề tài là thử nghiệm thuật toán xử lí tiếng nói trên board mạch phát triển DSP DM642 của hãng TI và trên hệ thống lập trình được (SoPC) của Altera [18]. Việc thử nghiệm này giúp nhóm nghiên cứu hiểu sâu về các kiến trúc DSP cao cấp hiện nay và cách khai thác những kiến trúc mạnh mẽ này để xây dựng các ứng 10 dụng đạt tốc độ thời gian thực [19]. Ngoài ra, nhóm nghiên cứu còn thực hiện nhiều thiết kế phần cứng ứng dụng trong xử lí ảnh và âm thanh [20]-[29].
Đặc biệt nhóm nghiên cứu đã công bố nhiều công trình liên quan đến FFT và DCT [25]-[28], hai thành phần không thể thiếu trong bất kì hệ thống xử lí ảnh và âm thanh. Kinh nghiệm từ các nghiên cứu này hỗ trợ rất lớn vào việc thiết kế DSP với tập lệnh đặc biệt dùng trong xử lí âm thanh và hình ảnh. 11 Chương 2 TỔNG QUAN KIẾN TRÚC VLIW CHO LÕI DSP 32-BIT 2.1 Thiết kế kiến trúc ở cấp cao Các kiến trúc DSP chủ yếu dựa trên mô hình Harvard, hoặc phiên bản nâng cấp của mô hình này, ví dụ như kiến trúc Super-Harvard được thể hiện trong Hình 6 [30]. Kiến trúc Harvard bao gồm các bộ nhớ riêng biệt cho dữ liệu và lệnh, cùng các đường bus riêng biệt để kết nối chúng với lõi DSP.
Kiến trúc Harvard có thể được phát triển lên bằng cách thêm vào một vùng bộ nhớ nhỏ có tốc độ nhanh, gọi là bộ nhớ đệm lưu trữ lệnh (instruction cache). Bên cạnh đó, bộ nhớ lệnh (hay bộ nhớ chương trình) có thể lưu trữ đồng thời dữ liệu và lệnh. Hình 6 Kiến trúc Super-Harvard Các vi xử lý tín hiệu số nhìn chung bao gồm lõi DSP, thành phần điều khiển ngoại vi (peripheral controller), thành phần điều khiển bộ nhớ ngoài (external memory controller), bộ quản lý nguồn điện (power management), và một số phần cứng hỗ trợ tăng tốc như lõi FFT (Fast Fourier Transform), lõi DCT (Discrete Cosine Transform), đơn vị truy cập bộ nhớ trực tiếp DMA (Direct Memory Access) như mô tả trong Hình 7. Trong phạm vị báo cáo này, nhóm sẽ tập trung mô tả lõi DSP.
Nhìn chung, kiến trúc lõi DSP bao gồm hai phần chính: đường điều khiển (Control Path - CP) và đường dữ liệu (Data Path - DP) như trong Hình 8. Bộ nhớ on-chip nằm bên ngoài lõi DSP chứa bộ nhớ chương trình và hai bộ nhớ dữ liệu (DMX và DMY). Đường DP sẽ chứa bộ nhớ chương trình, bộ nhớ đệm, đơn vị nạp lệnh, giải mã lệnh và thực thi. Đơn vị thực thi gồm bốn khối chức 12 năng chính: FALU (Arithmetic Logic Unit for Floating-point computation), MAC (Multiplication and Accumulation unit), BALU (Arithmetic Logic Unit for Branching computation) và LSU (Loading/Storing Unit).
Ngoài ra, đường DP cũng bao gồm một tập các thanh ghi (Register File) với 32 thanh ghi đa dụng 32-bit, bus cho thanh ghi, và hỗ trợ một số lệnh tăng tốc.