Altifigence Academy

7 / 24 · Khái niệm

Quy ước thời gian cho yêu cầu và phản hồi bộ nhớ

Phân biệt đọc đồng bộ, thẻ được trì hoãn và xung đột cùng địa chỉ.

Bộ nhớ không chỉ là mảng thanh ghi lớn

Giao diện bộ nhớ cần quy ước thời gian bên cạnh dung lượng. Đọc bất đồng bộ thay đổi đầu ra tổ hợp khi địa chỉ thay đổi. Đọc đồng bộ lấy mẫu địa chỉ tại cạnh rồi thay đổi đầu ra sau đó. Những mô hình này cần lịch khác nhau. Suy diễn thành tài nguyên bộ nhớ của thiết bị còn phụ thuộc cách viết mã và công cụ đích. Ở đây ta xác định mười sáu phần tử tám bit với đọc đồng bộ.

Lấy mẫu địa chỉ và thẻ tại cạnh k. Dữ liệu tương ứng và thẻ được trì hoãn xuất hiện sau cạnh đó; cơ hội nhận đầu tiên là cạnh k+1. Đọc một chu kỳ không có nghĩa phản hồi tổ hợp tức thời. Valid phản hồi phải theo cùng độ trễ. Ghép giá trị bị trì hoãn với thẻ đầu vào hiện tại sẽ làm sai các yêu cầu liên tiếp.

SystemVerilog
logic [7:0] mem [0:15];
logic [7:0] rd_data;
logic [3:0] rd_tag;
logic rd_valid;
always_ff @(posedge clk) begin
  if (wr_en) mem[wr_addr] <= wr_data;
  rd_valid <= req_valid;
  if (req_valid) begin
    rd_data <= mem[req_addr];
    rd_tag <= req_tag;
  end
  if (rst) rd_valid <= 1'b0;
end

Trong mô hình hành vi này, đọc và ghi đồng thời cùng địa chỉ trả về giá trị cũ vì phép gán không chặn đọc trạng thái cũ. Các phần tử bộ nhớ thực có chế độ và hạn chế xung đột rõ ràng; xem chế độ đọc/ghi trong AMD UG901 và xác minh chế độ mong muốn theo đích và kết quả tổng hợp. Đặt lại valid không khởi tạo mảng.

CạnhYêu cầu được chấp nhậnHiệu ứng
2addr=3,tag=7Ghi nhận mem[3]=42 cũ
3addr=4,tag=8Nhận 42,7 và ghi nhận giá trị tiếp theo
4Không có yêu cầuXóa valid phản hồi

Lịch này giả định bên nhận không bao giờ dừng. Nếu dừng tại cạnh 3, phản hồi tiếp theo có thể ghi đè rd_data. Thêm lưu trữ phản hồi hoặc giới hạn yêu cầu theo dung lượng còn trống, kể cả phản hồi đang trên đường. Khởi tạo rõ bộ nhớ thử nghiệm trước khi kiểm tra giá trị. Xác minh sự tương ứng giữa địa chỉ và thẻ, không chỉ dữ liệu phản hồi; giá trị đúng gắn với yêu cầu sai vẫn là lỗi.

Tự thử

Với mem[3]=42, đọc địa chỉ 3 và ghi 99 vào đó tại cùng cạnh. Mô hình đặt gì vào rd_data, và giá trị bộ nhớ mới là gì? Cần gì khi đầu ra dừng?

Đọc giải thích

rd_data trở thành 42, còn mem[3] trở thành 99. Cả hai phép gán đọc trạng thái cũ. Dừng đòi hỏi lưu trữ phản hồi và điều khiển tiếp nhận có tính các phản hồi đang trên đường. Xác minh riêng chế độ xung đột của bộ nhớ đích thực tế.

Lựa chọn áp dụng cho trình duyệt này. Có thể đổi ở chân trang bất cứ lúc nào.