3. Chìa Khóa Vận Hành: Pipelining và Giao Thức Handshaking
Để sử dụng hiệu quả các hàm HTM, bạn cần nắm vững hai khái niệm cốt lõi này, đặc biệt là khi làm việc trong SCTL.
A. Kiến trúc Pipelining (Đường ống)
Hãy tưởng tượng một phép toán phức tạp (ví dụ: tính sin) được chia thành nhiều giai đoạn nhỏ (ví dụ: 5 giai đoạn). Thay vì thực hiện hết 5 giai đoạn cho một mẫu rồi mới nhận mẫu tiếp theo, kiến trúc pipeline cho phép cả 5 giai đoạn hoạt động đồng thời trên 5 mẫu dữ liệu khác nhau.
- Kết quả: Mặc dù một mẫu dữ liệu phải mất 5 chu kỳ clock để đi hết “đường ống” (đây là latency), nhưng ở mỗi chu kỳ clock, một kết quả mới sẽ ra khỏi đường ống và một mẫu mới sẽ được đưa vào. Điều này có nghĩa là thông lượng đạt mức tối đa: 1 mẫu/chu kỳ clock.
- Trong LabVIEW: Các hàm HTM tự động triển khai kiến trúc này. Bạn có thể tinh chỉnh số lượng “giai đoạn” pipeline trong hộp thoại cấu hình để đáp ứng yêu cầu về timing của SCTL.
B. Giao thức Handshaking (Bắt tay 4 dây)
Vì dữ liệu không phải lúc nào cũng hợp lệ ở mọi chu kỳ clock (do latency), các hàm HTM cần một cơ chế để thông báo cho nhau khi nào dữ liệu sẵn sàng và khi nào chúng có thể nhận dữ liệu mới. Giao thức này sử dụng 4 tín hiệu boolean chính:
input valid (Đầu vào hợp lệ)
Tín hiệu từ hàm phía trước (upstream) gửi đến, báo rằng: “Dữ liệu tôi đang gửi cho bạn là hợp lệ.”
output valid (Đầu ra hợp lệ)
Tín hiệu hàm hiện tại gửi cho hàm phía sau (downstream), báo rằng: “Kết quả tôi vừa tính xong là hợp lệ, bạn có thể sử dụng.”
ready for input (Sẵn sàng nhận đầu vào)
Tín hiệu hàm hiện tại gửi ngược lại cho hàm phía trước, báo rằng: “Tôi đã sẵn sàng để nhận một mẫu dữ liệu hợp lệ mới ở chu kỳ clock tiếp theo.”
ready for output (Sẵn sàng cho đầu ra)
Tín hiệu từ hàm phía sau gửi ngược lại, báo rằng: “Tôi đã sẵn sàng để nhận kết quả từ bạn.”
Việc kết nối chính xác các tín hiệu này giữa các hàm HTM trong một SCTL là bắt buộc để đảm bảo chuỗi xử lý hoạt động đúng đắn, không bị mất mát hay xử lý sai dữ liệu.