Khi bạn không thể thay đổi thuật toán nội bộ của một khối xử lý (ví dụ, đó là một IP có sẵn), kỹ thuật phổ biến nhất để giảm II là nhân bản (duplicate) khối đó và cho chúng thực thi xen kẽ (interleave).
Kịch bản ví dụ:
Giả sử chúng ta có một khối xử lý B có II = 2. Nó chỉ có thể xử lý các mẫu dữ liệu ở các chu kỳ 0, 2, 4, 6,… và bỏ qua các mẫu ở chu kỳ 1, 3, 5,…
Giải pháp
Chúng ta sẽ tạo ra hai bản sao của khối B, gọi là B1 và B2.
- Khối B1: Sẽ xử lý các mẫu dữ liệu “chẵn”. Chúng ta đưa dữ liệu vào B1 khi chỉ số chu kỳ là chẵn.
- Khối B2: Sẽ xử lý các mẫu dữ liệu “lẻ”. Chúng ta đưa dữ liệu vào B2 khi chỉ số chu kỳ là lẻ.
Bằng cách này, ở mỗi chu kỳ, một trong hai khối sẽ sẵn sàng nhận dữ liệu. Ví dụ, ở chu kỳ 4, B1 đang bận xử lý mẫu thứ 2, nhưng B2 đã rảnh và sẵn sàng nhận mẫu thứ 4. Ở chu kỳ 5, B1 đã rảnh và sẵn sàng nhận mẫu thứ 5. Kết quả là, tổ hợp của hai khối B1 và B2 có thể nhận dữ liệu ở mỗi chu kỳ, tạo ra một hệ thống có II hiệu dụng (effective II) bằng 1.
Đánh đổi
Giải pháp này rất hiệu quả nhưng phải trả một cái giá rõ ràng: để giảm II đi N lần, bạn cần nhân bản logic xử lý lên N lần, do đó làm tăng mức sử dụng tài nguyên lên N lần. Đây là một sự đánh đổi trực tiếp giữa thông lượng và tài nguyên.