ID bài viết: 000081052 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 18/08/2014

Tôi cần làm gì/lưu ý khi nâng cấp phần mềm của mình từ Nios II Cổ điển (Thế hệ 1) lên Nios II xử lý Thế hệ thứ 2?

Môi Trường

  • Phiên bản đăng ký Intel®Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Bộ xử lý Nios® II Classic và Nios II Gen2 tương thích nhị phân, nhưng đã có một số thay đổi nhỏ đối với HAL và chức năng bộ nhớ đệm, vì vậy khuyên bạn nên xây dựng lại các công cụ/thư viện từ bản phát hành mới nhất (v14.0 ) và nếu cấu hình bộ xử lý chứa bộ nhớ đệm dữ liệu, việc sử dụng các giao dịch bộ nhớ không lưu trong tất cả phần mềm người dùng sẽ được xem xét.

    Độ phân giải

    Khu vực bộ nhớ không được lưu trữ
    Khi bộ xử lý có bộ nhớ đệm dữ liệu bị đọc và dữ liệu không có trong bộ nhớ đệm, bộ nhớ đệm thường sẽ tải một khối nhỏ hoặc 'dòng' dữ liệu từ bộ nhớ vào bộ nhớ đệm. Khi bộ xử lý phát hành một ghi, giá trị mới thường được lưu trữ trong bộ nhớ đệm dữ liệu; với bộ nhớ đệm dữ liệu ghi lại (ví dụ như trong bộ xử lý Nios II) các giá trị dữ liệu mới chỉ được viết trở lại vị trí thực khi bộ nhớ đệm bị xóa hoặc dữ liệu bị loại khỏi bộ nhớ đệm. Loại hoạt động này không thể chấp nhận được đối với các khu vực bộ nhớ nơi dữ liệu phải được viết ngay vào phần cứng để ảnh hưởng đến chức năng/hoạt động mong muốn (ví dụ: bộ nhớ dùng chung hoặc ghi vào thanh ghi điều khiển ngoại vi/phần cứng). Điều này có nghĩa là các nhà phát triển được yêu cầu phải xả bộ nhớ đệm ngay lập tức hoặc sử dụng một hoạt động bộ nhớ bỏ qua bộ nhớ đệm và đi trực tiếp/ngay lập tức đến phần cứng (ưu tiên). Đôi khi có thể có các lý do khác khiến nhà phát triển không muốn dữ liệu được lưu vào bộ nhớ đệm (ví dụ: nếu dữ liệu không bao giờ được đọc lại và/hoặc không nên loại bỏ dữ liệu khác khỏi bộ nhớ đệm vì hiệu suất hoặc các lý do khác).

    Với vòng bộ nhớ đệm của bộ xử lý Nios II Classic có thể đạt được bằng cách sử dụng các hướng dẫn đọc/ghi I/O đặc biệt (ví dụ: ldwio/stwio), bằng cách cài đặt bit-31 trong địa chỉ bộ nhớ của địa chỉ đọc/ghi, hoặc bằng cách triển khai MMU/MPU và thiết lập nó một cách phù hợp. (Lưu ý: các tùy chọn MMU và bit-31 là hai bên độc quyền)

    lõi Nios II Gen2 cung cấp các cơ chế tương tự cho vượt qua bộ nhớ đệm nhưng việc triển khai hơi khác nhau và có thể là một vấn đề tiềm ẩn với việc di chuyển phần mềm Nios II Classic sang Nios II Gen2.

    Nếu bộ xử lý Nios II Classic thực hiện ghi không được lưu vào bộ nhớ đệm và vị trí bộ nhớ (và do đó có sẵn dòng bộ nhớ đệm liên quan) trong bộ nhớ đệm dữ liệu, giá trị dữ liệu mới cũng được viết vào bộ nhớ đệm (mặc định đây là một ghi chưa được lưu vào bộ nhớ đệm). Điều này có nghĩa là dữ liệu trong bộ nhớ đệm luôn được cập nhật và nếu thiết kế phần mềm khiến các khu vực bộ nhớ không được lưu vào bộ nhớ đệm sẽ không làm mất đi tính mạch kết hợp dữ liệu. Do đó bộ xử lý Nios II Classic cũng có thể hỗ trợ các khu vực bộ nhớ không được lưu trữ ở bất kỳ kích thước nào và bất kỳ sự liên kết địa chỉ nào (vì nó cho phép trộn các khu vực bộ nhớ đệm và không được lưu vào bộ nhớ trên cùng một dòng bộ nhớ đệm). Điều này không đúng với các Nios II lõi Gen2.

    Trong lõi bộ xử lý Nios II Gen2, các giao dịch không được lưu trữ thực sự bỏ qua bộ nhớ đệm dữ liệu và nội dung bộ nhớ đệm không được cập nhật (thông lệ tiêu chuẩn cho hầu hết các bộ xử lý). Nếu vùng bộ nhớ không được lưu trữ chia sẻ đường bộ nhớ đệm với khu vực được lưu trong bộ nhớ đệm, khu vực không được lưu vào bộ nhớ đệm sẽ được ánh xạ vào bộ nhớ đệm và có thể được cập nhật với dữ liệu cũ/lỗi khi bộ nhớ đệm bị xóa. Các nhà phát triển phải đảm bảo rằng các khu vực bộ nhớ không được lưu vào bộ nhớ đệm và được lưu trong bộ nhớ đệm được tách biệt rõ ràng và không chia sẻ cùng một dòng bộ nhớ đệm khi được ánh xạ vào trong bộ nhớ đệm. Điều này đạt được bằng cách đảm bảo rằng các khu vực bộ nhớ không được lưu trữ được căn chỉnh với kích thước của dòng bộ nhớ đệm dữ liệu (32 byte) và có kích thước của một hoặc nhiều đường bộ nhớ đệm dữ liệu (bội số 32 byte). Điều này ngăn sự kết hợp dữ liệu có thể đệm ẩn và không thể đệm ẩn trên cùng một dòng bộ nhớ đệm và do đó ghi lại dữ liệu cũ/không hợp lệ. Thực hành thiết kế tốt khuyến nghị rằng địa chỉ cơ bản của các bộ đăng ký ngoại vi được căn chỉnh với ranh giới dòng bộ nhớ đệm dữ liệu và trình điều khiển sử dụng các hướng dẫn ghi đọc I/O bỏ qua bộ nhớ đệm - vì vậy khó có khả năng cần phải sửa đổi trình điều khiển. Phần mềm khác sử dụng vùng bỏ qua bộ nhớ đệm/khu vực bộ nhớ không được lưu vào bộ nhớ phải được kiểm tra cẩn thận để đảm bảo rằng các đường bộ nhớ đệm không ánh xạ tới các khu vực chứa cả dữ liệu được lưu trong bộ nhớ đệm và chưa lưu.

    Lưu ý: Phần mềm sử dụng tính năng vòng bộ nhớ đệm bit-31 sẽ không còn hoạt động nếu tùy chọn dải địa chỉ Nios II Gen2 32 bit được chọn, hướng dẫn I/O vòng bộ nhớ đệm hoặc vùng bộ nhớ ngoại vi nên được sử dụng thay thế.

    Tính năng mới
    Các nhà phát triển nên xem xét những ảnh hưởng tiềm tàng của việc sử dụng phạm vi địa chỉ 32 bit mới và các tùy chọn vùng bộ nhớ ngoại vi trong trường hợp cấu hình phần cứng được thay đổi để sử dụng chúng. Phần mềm nên được sửa đổi để hỗ trợ các tính năng này hoặc phát hiện chúng và phát hành thông báo lỗi.
    Phần mềm sử dụng tính năng vòng bộ nhớ đệm bit-31 sẽ không còn hoạt động nếu tùy chọn phạm vi địa chỉ Gen2 32 bit được chọn, hướng dẫn I/O bỏ qua bộ nhớ đệm hoặc thay vào đó nên sử dụng vùng bộ nhớ ngoại vi.

    Nếu tùy chọn Nios II Classic ECC được hỗ trợ trong phần mềm gốc, nó sẽ cần được mở rộng để bao gồm các bộ nhớ bổ sung được bộ xử lý Nios II Gen2 hỗ trợ.

    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.