Một lý do có thể khiến thiết kế không đáp ứng thời gian là nó chứa một hoặc nhiều bộ dịch chuyển thùng trong chuỗi với logic tổ hợp khác. Bất cứ khi nào một toán tử dịch chuyển được sử dụng với một toán tử biến đổi, tức là "a = b << c;" Nios® II C2H tạo ra logic barrelshift. Logic barrelshift do C2H tạo ra thực hiện một số lượng lớn các bộ ghép kênh tổ hợp có thể ảnh hưởng đáng kể đến thời gian của thiết kế. Hai ví dụ sau cho thấy mã nguồn có thể gây suy giảm thời gian do bộ dịch chuyển thùng.
Đầu vào Sự chuyển đổi tổ hợp:
Dưới đây là một ví dụ về đầu vào của sự chuyển đổi tổ hợp vào bộ dịch chuyển thùng có thể gây suy giảm thời gian.
int a, b, c, d, result, shift_distance;
result = (a b c d) >> shift_distance;
Kết quả bổ sung được sử dụng làm toán tử chuyển đổi cho toán tử shift, do đó, đường dẫn thời gian dài được tạo giữa một trong các đầu vào bổ sung và 'kết quả'. Để tăng lượng pipelining, gán kết quả bổ sung cho một biến tạm thời như được hiển thị dưới đây:
int a, b, c, d, addition_result, shift_distance;
addition_result = a b c d;
result = addition_result >> shift_distance;
Đầu ra sự thay đổi tổ hợp:
Dưới đây là một ví dụ về đầu ra sự thay đổi tổ hợp từ bộ dịch chuyển thùng có thể gây suy giảm thời gian.
int a, b, c, d, result, shift_distance;
result = (a >> shift_distance) b c d;
Kết quả chuyển đổi được sử dụng làm toán tử chuyển đổi cho toán tử bổ sung, do đó đường dẫn thời gian dài được tạo giữa 'a' và 'kết quả'. Để tăng lượng pipelining, gán kết quả dịch chuyển cho một biến như minh họa dưới đây:
int a, b, c, d, result, shift_result, shift_distance;
shift_result = a >> shift_distance;
result = shift_result b c d;