Dự án này triển khai một bộ vi xử lý kiến trúc MIPS32 (Soft Core) với kỹ thuật đường ống 5 tầng (5-stage pipeline), tích hợp bộ nhớ Cache và cơ chế dự đoán rẽ nhánh động (Dynamic Branch Prediction). Hệ thống được thiết kế bằng Verilog HDL và hướng tới triển khai thực tế trên bo mạch FPGA Arty Z7.
Bộ xử lý được chia thành 5 tầng tiêu chuẩn để tăng thông lượng (throughput):
- IF (Instruction Fetch): Lấy lệnh từ bộ nhớ lệnh (Instruction Memory/Cache).
- ID (Instruction Decode): Giải mã lệnh và đọc thanh ghi (Register File).
- EX (Execute): Thực thi phép toán ALU hoặc tính địa chỉ.
- MEM (Memory Access): Truy cập bộ nhớ dữ liệu (Data Memory/Cache).
- WB (Write Back): Ghi kết quả ngược lại vào thanh ghi.
Hệ thống giải quyết triệt để các loại xung đột pipeline:
- Data Hazards: Sử dụng kỹ thuật Forwarding (Bypassing) để chuyển dữ liệu trực tiếp giữa các tầng (
forwarding_unit.v) và Stalling khi cần thiết (hazard_detection_unit.v). - Control Hazards: Giảm thiểu số chu kỳ trễ khi gặp lệnh rẽ nhánh.
Tối ưu hóa hiệu năng xử lý lệnh rẽ nhánh bằng các module chuyên biệt:
- Branch History Table (BHT): Lưu trữ lịch sử rẽ nhánh để dự đoán hướng đi (Taken/Not Taken).
- Branch Target Buffer (BTB): Lưu trữ địa chỉ đích của lệnh rẽ nhánh để nạp lệnh ngay lập tức mà không cần chờ tính toán địa chỉ.
- Module:
branch_prediction_unit.v,branch_history_table.v,branch_target_buffer.v.
- Harvard Architecture: Tách biệt bộ nhớ lệnh và bộ nhớ dữ liệu.
- Cache: Tích hợp Instruction Cache (
instruction_cache.v) và Data Cache (data_cache.v) để giảm độ trễ truy cập bộ nhớ chính.
- Mã nguồn đã bao gồm file ràng buộc
arty-z7-master.xdccho bo mạch Arty Z7 (Xilinx Zynq-7000). - Module
Top_module.vđóng vai trò giao tiếp giữa nhân MIPS và các thành phần ngoại vi/IO trên board.
Dự án được tổ chức trong test_MIPS.srcs như sau:
test_MIPS.srcs/
├── sources_1/new/ # Mã nguồn Verilog (Design Sources)
│ ├── Top_module.v # Module cấp cao nhất (Top-level wrapper)
│ ├── MIPS.v # Nhân xử lý MIPS chính
│ ├── [Pipeline Stages] # Các tầng: instruction_fetch.v, execute.v, v.v.
│ ├── [Pipeline Registers] # Các thanh ghi đệm: if_id_register.v, id_ex_register.v, v.v.
│ ├── [Control & Hazard] # main_control_unit.v, hazard_detection_unit.v, forwarding_unit.v
│ ├── [Branch Prediction] # branch_prediction_unit.v, bht.v, btb.v
│ └── [Memory & Cache] # instruction_cache.v, data_cache.v, data_memory.v
├── sim_1/new/ # Mã nguồn mô phỏng (Simulation Sources)
│ └── tb.v # Testbench chính kiểm tra hoạt động của CPU
└── constrs_1/new/ # File ràng buộc vật lý (Constraints)
└── arty-z7-master.xdc # Pin mapping cho Arty Z7 Board