Nạp trọng số vào ma trận hoạt động

Một phần của tài liệu Nghiên cứu hệ vi xử lý vectơ mc431 (Trang 68)

Lập trình Xử lý tín hiệu số theo phơng pháp Fht trên hệ vi xử lý vectơ MC

3.3.1.1Nạp trọng số vào ma trận hoạt động

Phơng pháp xử lý dữ liệu trong nút thao tác ma trận của bộ xử lý NM6403 đợc mô tả trong hình vẽ 3.5 dới đây. Giả thiết rằng các trọng số đ- ợc tải vào ma trận hoạt động từ bộ nhớ ngoài. Luồng dữ liệu đi vào qua đầu vào X. Các bộ đệm đầu vào và đầu ra thuộc kiểu FIFO, có dung lợng là 32 từ 64 bit. Mỗi bộ đệm FIFO (ram, data, afifo) đều có thể sử dụng nh nguồn đối với đầu vào X. Các kết quả tính toán luôn đợc lu tại afifo.

Các trọng số đợc lu trữ trong bộ nhớ ở dạng mảng các từ 64 bit. Số l- ợng từ nạp vào ma trận hoạt động đợc xác định nhờ thanh ghi sb2 qua việc xác lập số hàng trong ma trận hoạt động. Mỗi hàng trong ma trận đợc gán cho một từ 64 bit trong bộ nhớ theo thứ tự: từ đầu tiên của mảng đợc nạp vào hàng thứ 0 của ma trận, từ thứ hai của mảng đợc nạp vào hàng thứ nhất của ma trận … Các trọng số đợc tải từ bộ nhớ ngoài vào khối bộ nhớ trong

wfifo. Nó chỉ đợc sử dụng cho việc tải các trọng số vào nút thao tác ma trận.

wfifo có một đặc tính mà các khối bộ nhớ trong khác không có là nó có thể lu trữ cho vài thao tác. Việc nạp dữ liệu từ bộ nhớ vào ma trận hoạt động đ- ợc thực hiện bằng đoạn mã lệnh assembly sau đây.

.branch; // Cho phép thực thi các lệnh vectơ song song

nb1 = 80008000h; // Đặt cấu hình cột của ma trận. ở đây là 4 cột

sb = 03030303h; // Đặt cấu hình hàng của ma trận, ở đây là 8 hàng

ar0 = M_1_3; // Địa chỉ của mảng trọng số (đã khai báo ở đoạn dữ liệu)

rep 16 wfifo = [ar0++], ftw, wtw; // Nạp các trọng số

Đầu tiên các thanh ghi nb1sb đợc đặt các hàng số để định cấu hình về số cột và số hàng của ma trận phụ. Trên thực tế, cấu hình ma trận hoạt động sẽ đợc xác lập chỉ sau khi lệnh wtw đợc thực thi. Các thanh ghi này đều là 64 bit. Nếu chúng đợc khởi tạo với giá trị 32 bit, bộ xử lý sẽ tự động copy giá trị này vào cả hai nửa cao và thấp của từ long (64 bit).

Địa chỉ của mảng các trọng số đợc đặt vào thanh ghi địa chỉ ar0. Sau đó 16 từ dữ liệu kiểu long đợc nạp từ bộ nhớ tới wfifo. Lệnh ftw thực hiện chuyển dữ liệu từ wfifo vào ma trận phụ. Số lợng từ sẽ đợc đọc từ wfifo

Đầu vào X (data) Ma trận hoạt động(nạp lần đầu)

Các kết quả trong afifo

Đầu vào X (data) Ma trận hoạt động(nạp lần thứ hai)

số hàng của ma trận phụ là 8 nên có 8 từ đợc chuyển từ wfifo vào ma trận phụ theo lệnh ftw. Lệnh ftw thực hiện trong 32 chu kỳ bất kể số từ phải nạp vào nút thao tác ma trận là bao nhiêu. Ví dụ trong trờng hợp ma trận Hadamard bậc 8 chỉ cần nạp 8 từ 64 bit, nhng việc chuyển đổi của chúng về dạng biểu diễn bên trong tại ma trận phụ cần 32 chu kỳ. Tuy nhiên, sự chuyển đổi này thực hiện song song với việc nạp các trọng số và bắt đầu 1 chu kỳ sau khi từ đầu tiên đợc nạp vào wfifo. Sau khi các trọng số đợc chuyển vào ma trận phụ, lệnh wtw đợc thực thi để copy nội dung của ma trận phụ vào ma trận hoạt động trong 1 chu kỳ, đồng thời các giá trị của các thanh ghi nb1sb1 đợc copy sang nb2sb2.

Các kết quả trong afifo

Hình 3.5. Quá trình xử lý dữ liệu trong ma trận hoạt động b. Tầng tính toán thứ hai (các từ lẻ của kết quả)

Một phần của tài liệu Nghiên cứu hệ vi xử lý vectơ mc431 (Trang 68)