ID bài viết: 000074260 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 11/09/2012

Tại sao Trình Nios II biên dịch C-sang-Phần cứng (C2H) của tôi đã tạo ra lỗi thời gian khi mã nguồn chứa các toán tử thay đổi thay đổi?

Môi Trường

  • Bộ xử lý Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    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;

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 1 sản phẩm

    Thiết bị có thể lập trình Intel®

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.