NHIỆM VỤ VÀ NỘI DUNG: Xây dựng được giải thuật hiệu quả trong việc tính toán Sine và Cosine dựa trên kiến trúc của những lõi xử lý dấu chấm tĩnh 32 bit.. Kết quả của đề tài có thể được
Trang 1-
Nguyễn Xuân Mỹ
XÂY DỰNG BỘ TÍNH TOÁN SINE VÀ COSINE DỰA
TRÊN LÕI XỬ LÝ DẤU CHẤM TĨNH 32 BIT
Chuyên ngành : Khoa Học Máy Tính
LUẬN VĂN THẠC SĨ
Trang 2Cán bộ hướng dẫn khoa học : PGS TS Đinh Đức Anh Vũ và TS Bùi Trọng Tú
Cán bộ chấm nhận xét 1 : TS Trần Ngọc Thịnh
Cán bộ chấm nhận xét 2 : TS Nguyễn Minh Sơn
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 14 tháng 7 năm 2014
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA KH&KTMT
Trang 3
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Nguyễn Xuân Mỹ MSHV: 12070524 Ngày, tháng, năm sinh: 09/02/1988 Nơi sinh: Bạc Liêu Chuyên ngành: Khoa Học Máy Tính Mã số : 60.48.01
I TÊN ĐỀ TÀI:
Xây dựng bộ tính toán Sine và Cosine dựa trên lõi xử lý dấu chấm tĩnh 32 bit
II NHIỆM VỤ VÀ NỘI DUNG:
Xây dựng được giải thuật hiệu quả trong việc tính toán Sine và Cosine dựa trên kiến trúc của những lõi xử lý dấu chấm tĩnh 32 bit Hiện thực và kiểm chứng giải thuật được
đề ra Đề tài tập trung nghiên cứu xây dựng giải thuật tính toán những hàm lượng giác : Sine và Cosine, dựa trên những tài nguyên sẵn có của những lõi xử lý dấu chấm tĩnh 32 bit Giải thuật sử dụng kết hợp hai phương pháp: tra bảng và xấp xỉ đa thức Ưu điểm của giải thuật là không sử dụng thêm bất kì bộ tính toán dấu chấm động nào, nó có thể tính toán những giá trị thập phân dưới định dạng dấu chấm tĩnh
III NGÀY GIAO NHIỆM VỤ : 24/06/2014
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 23/05/2014
V CÁN BỘ HƯỚNG DẪN: PGS TS Đinh Đức Anh Vũ và TS Bùi Trọng Tú
Tp HCM, ngày tháng năm 20
TRƯỞNG KHOA KH&KTMT
(Họ tên và chữ ký) CÁN BỘ HƯỚNG DẪN (Họ tên và chữ ký)
Trang 10LỜI CÁM ƠN
Để hoàn thành đề tài luận văn này tôi chân thành cảm ơn tới:
PGS TS Đinh Đức Anh Vũ, cán bộ hướng dẫn khoa học, đã không ngừng hướng dẫn, chỉ bảo và hỗ trợ trong định hướng nghiên cứu của đề tài
TS Bùi Trọng Tú, cán bộ hướng dẫn khoa học, đã luôn theo sát và hỗ trợ trong quá trình hiện thực đề tài
Tôi cũng xin chân thành cảm ơn các thầy cô Khoa Khoa Học và Kỹ Thuật Máy Tính và thầy cô trường Đại Học Bách Khoa TP HCM đã tận tình giảng dạy tôi trong thời gian học tập và nghiên cứu tại trường
Xin cảm ơn tới gia đình, bạn bè, những người đã luôn ủng hộ, chia sẽ những khó khăn cùng tôi trong suốt quá trình làm đề tài luận văn này
Tôi xin chần thành cảm ơn
TpHCM, ngày 16 tháng 06 năm 2014
Học viên
Nguyễn Xuân Mỹ
Trang 11Kết quả của đề tài có thể được dùng trong những ứng dụng độc lập chẳng hạn như những máy tính cho các hàm toán học Sine, Cosine Bên cạnh đó chúng ta cũng có thể
sử dụng cho những bộ xử lý trong lĩnh vực xử lý tín hiệu số như DCT (Discrete Cosine Transform) hay FFT (Fast Fourier Transform) trong những ứng dụng cao cấp hơn Giải thuật mới dùng trong việc tính toán Sine và Cosine đã được triển khai bằng ngôn ngữ Verilog trên phần mềm Quartus II 13.0 Và sau đó tính đúng đắn đã được kiểm chứng thành công bằng phần mềm mô phỏng ModelSim-Altera 10.1d
Nội dung và kết quả của đề tài đã được tóm tắt và mô tả trong bài báo khoa học
“Hardware-Based Algorithm for Sine and Cosine Computations using Fixed Point Processor”, bài báo này đã được trình bày tại hội nghị ECTI-CON 2014 vào tháng 5 năm 2014 Tham khảo phần phụ lục để biết thêm chi tiết nội dung của bài báo
Trang 12up significantly although it does not require many resources One of the advantages points is that the algorithm computes Sine and Cosine functions without extra floating point units; it can compute fraction numbers under fixed point format
Results from this research can be reused for independent application, such as computer for Sine and Cosine functions Beside that, they are used for modules of DSP (Digital Signal Processor): DCT (Discrete Cosine Transform) hay FFT (Fast Fourier Transform)
The algorithm is implemented by using Verilog language with Quartus II 13.0 tool After that, it is verified by ModelSim-Altera 10.1d tool successfully
The content and result of topic are described in the paper “Hardware-Based Algorithm for Sine and Cosine Computations using Fixed Point Processor”, this paper are presented at ECTI-CON 2014 conference at May 2014 For more information refer appendix
Trang 13LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quả nêu trong luận văn là trung thực và chưa được công bố trong các công trình khác Kết quả mà tôi đạt được là do công sức của chính bản thân tôi cùng với sự đồng hướng dẫn của PGS TS Đinh Đức Anh Vũ và TS Bùi Trọng Tú
Tôi sẽ chịu hoàn toàn trách nhiệm về nghiên cứu của mình
TpHCM, ngày 16 tháng 06 năm 2014
Học viên
Nguyễn Xuân Mỹ
Trang 14Mục lục
LỜI CÁM ƠN i
TÓM TẮT ii
SUMMARY iii
LỜI CAM ĐOAN iv
Mục lục v
Danh mục các từ viết tắt viii
Mục lục hình x
Mục lục bảng xiii
Chương 1 Đặt vấn đề 1
1.1 Giới thiệu và lý do chọn đề tài 1
1.2 Mục tiêu nghiên cứu của đề tài 2
1.3 Phạm vi và phương pháp nghiên cứu 2
1.4 Kết quả của luận văn 2
1.5 Tổ chức của luận văn 2
Chương 2 Tổng quan về lõi xử lý tín hiệu số dấu chấm tĩnh 32-bit 4
2.1 Các kiến trúc DSP cao cấp hiện nay 4
2.1.1 Các dòng DSP truyền thống (Conventional DSP processor) 4
2.1.2 Các dòng DSP tầm trung (Midrange DSP processors) 6
2.1.3 Các dòng DSP truyền thống được mở rộng (Enhanced-Conventional DSP Processors) 7
Trang 152.2 Lõi DSP 32-bit của đề tài 9
2.2.1 Tổng quan về kiến trúc VLIW cho lõi DSP 32-bit 9
2.2.1.1 Thiết kế kiến trúc ở cấp cao 9
2.2.1.2 Khối chức năng FALU và BALU 12
2.2.1.2.1 Bộ dịch (Shifter) 12
2.2.1.2.2 Bộ luận lý (Logic unit) 13
2.2.1.2.3 Bộ bão hoà (Saturation unit) 13
2.2.1.2.4 Bộ cộng và tác vụ MAX MIN 14
2.2.1.3 Khối chức năng MAC 14
2.2.1.4 Khối chức năng LSU 14
2.2.2 Tổng quan về kiến trúc tập lệnh RISC cho lõi DSP 32-bit 15
2.2.2.1 Tập thanh ghi (Register Files) và việc thực thi có điều kiện (Conditional Execution) 15
2.2.2.2 nh xạ tập lệnh vào các đơn vị chức năng 15
2.2.2.3 Kiến trúc tập lệnh cho khối chức năng FALU 16
2.2.2.4 Kiến trúc tập lệnh cho khối chức năng MAC 20
2.2.2.5 Kiến trúc tập lệnh cho khối chức năng BALU 21
2.2.2.6 Kiến trúc tập lệnh cho khối chức năng LSU 23
2.2.2.7 Chế độ đánh địa chỉ 25
2.2.2.8 Thực thi song song 26
Chương 3 Sự tiếp cận những phương pháp tính toán dựa trên phần cứng 28
3.1 Phương pháp sử dụng bảng tra 28
3.2 Phương pháp xấp xỉ đa thức 28
3.3 Kết hợp các phương pháp 29
Chương 4 Giải thuật 31
4.1 Định dạng M 31
4.2 Ý tưởng của giải thuật 34
Trang 164.2.1 Cơ sở lý thuyết 34
4.2.2 Chọn lọc thông số 34
4.2.2.1 Giải thích cách lựa chọn thông số a và b 35
4.3 Chi tiết của giải thuật 37
4.3.1 Cách tính Sin_a, Cos_a 37
4.3.2 Cách tính Sin_b, Cos_b 39
4.3.3 Những bước hiện thực giải thuật 39
Chương 5 Hiện thực hệ thống và kết quả 42
5.1 Giới thiệu Quartus II 13.0 42
5.1.1 Tổng quan về Quartus II 13.0 42
5.2 Giới thiệu ModelSim-Altera 10.1d 44
5.3 Sơ đồ khối của việc hiện thực giải thuật 52
5.4 Testbenchs 53
5.5 Kết quả 54
Chương 6 Kết luận và đề nghị 57
6.1 Kết luận về kết quả đạt được 57
6.2 Đề nghị hướng phát triển tương lai 58
Tài liệu tham khảo 59
Phụ lục 61
LÝ LỊCH TRÍCH NGANG 69
QUÁ TRÌNH ĐÀO TẠO 70
Trang 17Danh mục các từ viết tắt
APEX,
FLEX, MAX
Devices of FPGA family
Trang 18AHDL Altera Hardware Description Language
Trang 19Mục lục hình
Hình 2.1 Sơ đồ khối DSP TMS320C25 5
Hình 2.2 Sơ đồ khối DSP TMS320C54x 6
Hình 2.3 Các đơn vị tính toán và đường bus của DSP truyền thống và mở rộng 8 Hình 2.4 Sơ đồ khối của họ DSP TMS C6x 9
Hình 2.5 Kiến trúc Super-Harvard 10
Hình 2.6 Kiến trúc của vi xử lý DSP 11
Hình 2.7 Kiến trúc cấp cao của lõi DSP 11
Hình 2.8 Kiến trúc cấp cao của ALU trong lõi DSP 13
Hình 2.9 Kiến trúc tổng quan cho khối MAC trong lõi DSP 17
Hình 2.10 Mã ph p toán (opcode) cho khối FALU 17
Hình 2.11 Thiết kế đường dữ liệu cho khối FALU (chu kì đơn) 19
Hình 2.12 Mã ph p toán (opcode) cho khối MAC 20
Hình 2.13 Thiết kế đường dữ liệu cho khối MAC (chu kì đơn) 21
Hình 2.14 Mã ph p toán (opcode) cho khối BALU 22
Hình 2.15 Thiết kế đường dữ liệu cho khối BALU trong chu kì đơn 22
Hình 2.16 Mã ph p toán (opcode) cho khối LSU 23
Hình 2.17 Mã ph p toán dành cho lệnh nạp lưu với 15-bit độ dời không dấu trên LSU 23 Hình 2.18 Mã ph p toán dành cho lệnh nạp lưu với baseR offsetR trên LSU 24
Hình 2.19 Mã ph p toán dành cho lệnh nạp lưu đ c biệt trên LSU 24
Hình 2.20 Thiết kế đường dữ liệu cho khối LSU trong chu kì đơn 24
Trang 20Hình 2.21 Thanh ghi đánh địa chỉ 25
Hình 4.1 Những bit biểu diễn phần nguyên, phần thập phân của dịnh dạng M 32 Hình 4.2 Sơ đồ giải thuật 41
Hình 5.1 Hình vẽ Giao diện Quartus II 43
Hình 5.2 Cửa sổ làm việc của ModelSim 44
Hình 5.3 Tạo mới project 45
Hình 5.4 Thông tin của project mới 45
Hình 5.5 Thêm các file vào project 45
Hình 5.6 Hộp thoại tạo mới project 46
Hình 5.7 Cửa sổ soạn thảo 46
Hình 5.8 Tạo mới file 47
Hình 5.9 Thêm file vào project 47
Hình 5.10 Code verilog file testbench 48
Hình 5.11 Thư viện work 49
Hình 5.12 Thực hiện Simulate 49
Hình 5.13 Chọn tín hiệu để vẽ dạng sóng (giản đồ) 50
Hình 5.14 Cửa sổ lệnh 50
Hình 5.15 Giản đồ thời gian của các tín hiệu 51
Hình 5.16 Kết thúc quá trình simulate 51
Hình 5.17 Sơ đồ khối của bộ tính toán 52
Hình 5.18 Testbench cho một số test-case 53
Hình 5.19 Kết quả trên ModelSim 54
Hình phụ lục 1 - Hình vẽ Giao diện Block Editor 61
Trang 21Hình phụ lục 2 - Hình vẽ Các cổng logic, các hàm 62
Hình phụ lục 3 - Hình vẽ Giao diện Dự án mới 63
Hình phụ lục 4 - Thêm file Thiết kế vào Project 63
Hình phụ lục 5 - Hình vẽ Giao diện file thiết kế mới 64
Hình phụ lục 6 - Hình vẽ Sơ đồ mạch bộ đếm nhị phân 4bit 65
Hình phụ lục 7 - Hình vẽ File thiết kế dem4bit.v thể hiện bằng ngôn ngữ Verilog 66
Hình phụ lục 8 - Hình vẽ Giao diện khi biên dịch và thông báo Biên dịch thành công 68
Trang 22Mục lục bảng
Bảng 2.2 Ch thích các ký hiệu trong m ph p toán 18 Bảng 2.3 C pháp lệnh SLD SST trong LSU 25
Bảng 4.2 Một số giá trị trong bảng tra tính sin a 37 Bảng 4.3 Một số giá trị trong bảng tra tính cos a 38
Bảng 6.1 Số lần sử dụng những bộ nhân và cộng 57 Bảng 6.2 Tổng lượng bộ nhớ yêu cầu 57
Trang 23Chương 1 Đặt vấn đề 1.1 Giới thiệu và lý do chọn đề tài
Những hàm lượng giác là một trong những hàm cơ bản quan trọng nhất trong kỹ thuật công nghệ Việc phát triển những giải thuật để tính toán chúng đã được quan tâm
và nghiên cứu từ rất sớm Một trong những giải thuật hiệu quả không thể không nhắc đến CORDIC (COordinate Rotation DIgital Computer), giải thuật này được tìm ra bởi Volder [4] và sau đó được hợp nhất lại bởi Walther [6] Đây là giải thuật được sử dụng cho những hệ thống phần cứng không có bộ nhân Tuy nhiên trong những hệ thống tính toán lớn CORDIC thực sự không thõa mãn nhu cầu đ t ra, nó không sẵn sàng cho việc
sử dụng kỹ thuật đường ống để tăng tốc độ tính toán Với những hệ thống lớn, ho c yêu cầu tính toán chuyên biệt như vậy thì những mô hình mới dần được áp dụng, đó là những phương pháp dựa vào xấp xỉ đa thức [3], ph p nội suy hay những hàm hữu tỉ [7] Với những phương pháp mới này, một kỹ thuật hiệu quả thường được sử dụng để đạt được tốc độ tính toán cao đó là việc tính toán trước những giá trị đã biết và lưu vào những bảng tra trong bộ nhớ Với công nghệ tiên tiến ngày càng phát triển như hiện nay, thì tốc độ lẫn dung lượng của bộ nhớ tăng một cách nhanh chóng, vì thế phương pháp tra bảng được phát triển một cách dễ dàng Tất cả những phương pháp dùng để tính toán những hàm cơ bản với tốc độ cao đều dùng những bảng tra [1], [5], và [8]
Từ những kết quả gần đây trong lĩnh vực ASIC (Application-Specific Integrated Circuit) [13], chúng tôi mong muốn xây dựng một thành phần độc lập mà có thể nhúng vào lõi của những DSP Những thành phần này sẽ giúp những hệ thống DSP được phát triển dễ dàng và mạnh mẽ hơn
Đề tài này sẽ trình bày một giải thuật mới dùng cho việc tính toán hàm Sine và Cosine cho những số trong hệ thống dấu chấm tĩnh dưới một định dạng chuyên biệt Giải thuật chỉ yêu cầu lõi xử lý dấu chấm tĩnh và sẽ đạt hiệu quả cao khi bộ nhân có sẵn trong bộ xử lý Hàm Sine, Cosine là những hàm quan trọng trong khoa học và kỹ
Trang 24thuật, chúng tôi hi vọng rằng giải thuật này có thể tăng tốc trong việc tính toán của những ứng dụng khoa học kỹ thuật
1.2 Mục tiêu nghiên cứu của đề tài
Xây dựng được giải thuật hiệu quả trong việc tính toán Sine và Cosine dựa trên kiến trúc DSP dấu chấm tĩnh 32 bit Hiện thực và kiểm chứng giải thuật được đề ra
1.3 Phạm vi và phương pháp nghiên cứu
Xây dựng giải thuật để tính toán hàm lượng giác: Sine, Cosine bằng phần cứng dựa trên nền tảng lõi DSP dấu chấm tĩnh 32 bit
Tham khảo những nghiên cứu thành công trước đây dùng cho việc tính toán những hàm siêu việt, kết hợp với kiến trúc DSP dấu chấm tĩnh 32 bit đang có để tìm ra phương pháp tối ưu cho việc tính toán Chẳng hạn như việc có thể sử dụng lại những tài nguyên sẵn có từ lõi DSP
1.4 Kết quả của luận văn
Xây dựng thành công giải thuật dùng để tính toán những hàm lượng giác Sine và Cosine dựa trên lõi DSP dấu chấm tĩnh 32 bit Trong quá trình triển khai giải thuật trên một hệ thống có thể sử dụng lại những tài nguyên có sẵn trong hệ thống đó, ví dụ như những bộ nhân và bộ cộng dấu chấm tĩnh 32 bit
Giải thuật đã được hiện thực bằng ngôn ngữ Verilog HDL với phần mềm Quartus
II Tính đúng đắn của giải thuật cũng được kiểm chứng trên phần mềm mô phỏng ModelSim của Altera
1.5 Tổ chức của luận văn
Tổ chức luận văn bao gồm:
- Chương 1: Đ t vấn đề: đề cập đến những vấn đề liên quan bức thiết đối với việc tính toán những hàm lượng giác Sine và Cosine, lý do chọn đề tài nghiên cứu, mục tiêu, kết quả, định hướng của nghiên cứu
Trang 25- Chương 2: Tổng quan về những kiến trúc DSP hiện nay, và trình bày một số chi tiết kiến trúc DSP dấu chấm tĩnh 32 bit mà giải thuật dựa vào đó để phát triển
- Chương 3: Tìm hiểu một số phương pháp dùng để tính toán những hàm siêu việt bẳng phần cứng
- Chương 4: Trình bày giải thuật dùng để tính toán hàm Sine, Cosine dựa vào phần cứng Nêu ra chi tiết từng bước để hiện thực giải thuật
- Chương 5: Hiện thực hệ thống và kết quả: trình bày những cái đã đạt được, những vấn đề còn tồn đọng trong nghiên cứu
- Chương 6: Kết luận và đề nghị: kết luận tổng kết báo cáo, đưa ra những đề nghị cho hướng nghiên cứu và phát triển trong tương lai trên hướng nghiên cứu này
Trang 26Chương 2 Tổng quan về lõi xử lý tín hiệu số dấu chấm
tĩnh 32-bit 2.1 Các iến tr c DSP cao cấp hiện nay
2.1.1 Các d ng DSP tru ề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 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 và một bộ ALU 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 2.1thể 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
Trang 27Hình 2.1 Sơ đồ khối DSP TMS320C25
Trang 282.1.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
Trang 29Dò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.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
2.1.3 Các d ng DSP tru ề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
Trang 30Hình 2.3 Các đơn vị tính toán và đường bus của DSP truyền thống và m rộng
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 2.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)
2.1.4 Các d ng DSP theo iế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 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 ở xong 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 2.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
Trang 31Tậ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ớ
2.2 Lõi DSP 32-bit của đề tài
2.2.1 Tổng quan về iến tr c VLIW cho l i DSP 32-bit
2.2.1.1 Thiết ế iế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 2.5 [17] 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
Trang 32đườ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
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 troller), 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
con-vị truy cập bộ nhớ trực tiếp DMA (Direct Memory Access) như mô tả trong H NH 2.6
Trang 33Hình 2.6 Kiến tr c của vi xử lý 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 2.7 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) Ngoài ra, sẽ có một bộ nhớ đệm (cache) lưu trữ lệnh được tích hợp vào trong nhân DSP Đườ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 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
Đường dữ liệu có thể thực hiện các ph p tính số học (cộng, trừ , nhân, chia), luận
lý (and, or, not, ), so sánh (<, >, =, ) và bao gồm 32 thanh ghi đa dụng 32-bit
Trang 34(A0-A15, B0-B15) Trong mỗi chu k xung clock, đợn vị nạp và giải mã lệnh có thể cung cấp tối đa bốn lệnh cho các đợn vị chức năng xử lý
2.2.1.2 Khối chức năng FALU v ALU
Nhằm mục đích tăng khả năng xử lý song song cho lõi DSP, nhóm đã thiết kế hai
bộ ALUs cho các mục đích khác nhau Bộ FALU xử lý các tính toán cho số dấu chấm động (cos, sin, hàm log, hàm mũ, v.v ), trong khi bộ BALU dành riêng cho các tính toán trên bit và tính toán rẽ nhánh M c dù hai bộ ALUs này có thể có cùng thiết kế mức top-level, nhưng thiết kế chi tiết sẽ khác nhau với các khối logic mở rộng hỗ trợ cho mục đích riêng của từng bộ tính toán Theo đó chúng ta có thể tận dụng đồng thời
cả hai bộ FALU và BALU cho các mục đích khác nhau Trong kiến trúc tổng quan của lõi DSP, ALU sẽ thực hiện các tính toán số học, luận lý, dịch, và xoay như được thể hiện trong H NH 2.8 Một điểm đ c biệt của thiết kế này là sự liên hợp giữa bộ dịch thùng (Barrel Shifter) và bộ cộng, thay vì sử dụng các bộ phận riêng biệt, để thực hiện thao tác dịch trước khi tính toán chỉ trong một chu k xung clock
Các toán hạng sau khi tiền xử lý sẽ được gởi đến kernel là khối tính toán chính của ALU, bộ phận này chứa bộ cộng, dịch, và luận lý Sau khi được thực thi, kết quả sẽ được gởi đến đơn vị hậu xử lý để chọn lựa giá trị xuất ra Ngoài ra, ALU tiến hành ghi lên những cờ cần thiết xác định trạng thái của vi xử lý, đ c biệt trong các lệnh tính toán
có điều kiện Bên cạnh đó, ALU cũng có thể tiến hành làm tròn (saturation) kết quả cuối cùng khi cần thiết Như được minh họa trong hình 4, ALU bao gồm các bộ phận sau:
Trang 35Hình 2.8 Kiến tr c cấp cao của ALU trong lõi DSP
2.2.1.2.2 Bộ luận lý (Logic unit)
Vi xử lý DSP thực hiện các lệnh AND OR NOT XOR là các lệnh tính toán luận lý với hai toán hạng ngõ vào là A và B Theo đó, cần có một tín hiệu điều khiển để chỉ ra lệnh luận lý nào đang được thực thi
2.2.1.2.3 Bộ bão hoà (Saturation unit)
Bộ phận này có nhiệm vụ làm tròn kết quả bất cứ khi nào bit guard bị thay đổi và được báo hiệu bằng cờ tràn, tức là kết quả hiện tại không thể được biểu diễn theo chiều dài word ban đầu Nếu kết quả của một ph p tính là lớn hơn giá trị lớn nhất cho ph p (tràn trên), kết quả này sẽ được gán giá trị lớn nhất cho ph p, và nếu nhỏ hơn giá trị nhỏ nhất cho ph p (tràn dưới), nó sẽ được gán giá trị nhỏ nhất cho ph p
Trang 362.2.1.2.4 Bộ cộng và tác vụ MAX MIN
Một trong những tính toán ALU phổ biến là ph p tính MAX MIN cho hai toán hạng Thao tác này được thực thi một cách đơn giản bằng việc tận dụng bộ cộng để thực hiện ph p tính trừ Theo đó, bit MSB trong kết quả sẽ được dùng làm ngõ vào cho
bộ chọn kênh để quyết đinh toán hạng nào là lớn nhỏ hơn
2.2.1.3 Khối chức năng MAC
MAC gồm thành phần chính là bộ nhân tích lũy MAC là bộ phận quan trọng nhất của lõi DSP vì nó hỗ trợ thực thi các tính toán l p (như ph p tính chập), hỗ trợ tính toán độ chính xác k p, cũng như giúp hiện thực phần cứng cho các hàm tự tương quan, lọc, và hàm chuyển đổi Bên cạnh đó, bit guard là cần thiết cho các tính toán l p để giữ giá trị của bit dấu Để di chuyển dữ liệu từ MAC đến các thanh ghi đa dụng, giá trị của
bộ tích lũy cần được làm tròn, co giãn ho c saturated Điểm thú vị trong thiết kế này là
dụng các bộ nhân cồng kềnh như mô tả trong H NH 2.9
2.2.1.4 Khối chức năng LSU
Bộ LSU cung cấp địa chỉ cần sử dụng cho hai bộ nhớ dữ liệu DMX và DMY Không giống với các vi xử lý đa dụng, các bộ DSP thường bao gồm những khối phát sinh địa chỉ nhằm điều khiển việc sinh địa chỉ cho những chế độ đánh địa chỉ chuyên dụng như bộ đệm vòng, tuyến tính và địa chỉ đảo Chế độ đánh địa chỉ bộ đệm vòng giúp cho việc hiện thực các ph p tính chập, ph p tính được thực thi nhiều nhất trong bộ MAC, được dễ dàng hơn Biểu thức của ph p tính chập như sau:
𝑦(𝑛) = ∑
Trong biểu thức này, việc tính toán cần các dữ liệu sẽ được nhân với các hệ số Để hiện thực nó, cần một bộ đệm vòng Các bộ đệm vòng là những vùng nhớ giới hạn mà
dữ liệu được lưu trữ theo cơ chế First-In First-Out (FIFO) Thuận lợi lớn nhất của bộ LSU là khả năng nạp lưu dữ liệu từ đến hai bộ nhớ dữ liệu một cách đồng thời Tính chất này giúp tăng tốc hiệu năng của vi xử lý một cách đáng kể
Trang 372.2.2 Tổng quan về iến tr c tập lệnh RISC cho l i DSP 32-bit
Trong phần này, kiến trúc tập lệnh theo dạng RISC cho lõi vi xử lý DSP 32-bit sẽ được trình bày Vì lõi DSP được thiết kế hướng đến các ứng dụng xử lý âm thanh và hình ảnh nên kiến trúc tập lệnh sẽ được thiết kế để hỗ trợ tối đa mục đích này
2.2.2.1 Tập thanh ghi (Register Files) và việc thực thi c điều kiện
(Conditional Execution)
Do đ c thù của kiến trúc RISC, tất cả tác vụ đều được thực hiện trên tập thanh ghi
và hiển nhiên số lượng thanh ghi càng nhiều thì số tác vụ nạp lưu (load store) sẽ càng
ít Trong kiến trúc tập lệnh này, có tổng cộng 32 thanh ghi đa dụng (general registers) được đánh số từ A0-A15 và B0-B15 Hầu hết các thanh ghi đều có thể được sử dụng như những toán hạng trong các bộ tính toán ho c được dùng như địa chỉ độ dời nền (base address offset) trong những lệnh nạp lưu Ngoài ra, các thanh ghi A4-A7 và B4-B7 được tận dụng trong chế độ đánh địa chỉ tuyến tính và đánh địa chỉ vòng (linear and circular addressing mode) Đ c biệt hơn, những lệnh đ c biệt hỗ trợ việc nạp lưu dữ liệu nhanh sử dụng hoàn toàn hai thanh ghi A7 và B7 cho việc tính toán địa chỉ
Với việc thừa hưởng tính năng thực thi có điều kiện từ các bộ vi xử lý ARM cũng như một số dòng DSP thương mại nổi bật ngày nay, kiến trúc tập lệnh này cũng được thiết kế để hỗ trợ tính năng trên Thật vậy, trường “cr” trong mã tác vụ (operation code) biểu thị thanh ghi nào trong số các thanh ghi A0-A2, B0-B2 sẽ được kiểm tra với một điều kiện (bằng 0 ho c khác 0) Và trong trường hợp trường “cr” bằng 0, lệnh đó sẽ được thực hiện Trong hợp ngữ, người thiết kế có thể đ c tả thanh ghi điều kiện như sau:
[A0] Instr dst, src1, src2
Trong ngôn ngữ C:
If (A0!=0) dst=src1 op src2;
2.2.2.2 nh ạ tập lệnh v o các đơn vị chức năng
Trang 38Bảng 2.1 Ánh x giữa tập lệnh và các đơn vị chức n ng
SWAP4
XOR
2.2.2.3 iến tr c tập lệnh cho khối chức năng FALU
Kiến trúc tổng quan cho khối MAC trong lõi DSP
Trang 39Hình 2.9 Kiến tr c tổng quan cho khối MAC trong lõi DSP
Trang 40Khối chức năng FALU cung cấp các tác vụ luận lý số học và các ph p toán liên quan đến dấu chấm động H NH 2.10 minh hoạ một mã ph p toán tổng quát cho tất cả tác vụ trong khối FALU B NG 2.2 mô tả các chú thích trong H NH 2.10
Trong khối chức năng này, có vài nhóm lệnh đ c biệt sau: nhóm lệnh các ph p toán luận lý (AND, OR, vv ), nhóm lệnh cộng trừ (ADD, ADD4, SUB4, vv ), nhóm lệnh min max (MAX, MIN, vv ), nhóm lệnh dấu chấm động (SIN, COS, vv ) cùng những nhóm lệnh khác Nếu như hai nhóm lệnh đầu tận dụng bộ tính toán số học ALU thì nhóm lệnh còn lại sử dụng bởi đơn vị xử lý dấu chấm động (Floating Point Unit) như mô tả trong H NH 2.11