Câu trả lời:
Thực tế có một số lý do.
Đầu tiên và có lẽ là quan trọng nhất, dữ liệu được lưu trữ trong bộ đệm hướng dẫn thường khác một chút so với dữ liệu được lưu trong bộ đệm dữ liệu - cùng với các hướng dẫn, có các chú thích cho những thứ như hướng dẫn tiếp theo bắt đầu, để giúp giải mã. Một số bộ xử lý (Ví dụ: Netburst, một số SPARC) sử dụng "bộ đệm theo dõi", lưu trữ kết quả giải mã một lệnh thay vì lưu trữ lệnh gốc ở dạng được mã hóa.
Thứ hai, nó đơn giản hóa mạch một chút - bộ đệm dữ liệu phải xử lý việc đọc và ghi, nhưng bộ đệm hướng dẫn chỉ xử lý việc đọc. (Đây là một phần lý do tại sao mã tự sửa đổi rất tốn kém - thay vì ghi đè trực tiếp dữ liệu vào bộ đệm của lệnh, ghi sẽ chuyển qua bộ đệm dữ liệu vào bộ đệm L2 và sau đó dòng trong bộ đệm của lệnh bị vô hiệu và tái -được tải từ L2).
Thứ ba, nó làm tăng băng thông: hầu hết các bộ xử lý hiện đại có thể đọc dữ liệu từ bộ đệm hướng dẫn và bộ đệm dữ liệu cùng một lúc. Hầu hết cũng có hàng đợi ở "lối vào" vào bộ đệm, vì vậy chúng thực sự có thể thực hiện hai lần đọc và một lần ghi trong bất kỳ chu kỳ nhất định.
Thứ tư, nó có thể tiết kiệm điện. Mặc dù bạn cần tự duy trì nguồn cho các ô nhớ để duy trì nội dung của chúng, một số bộ xử lý có thể / tắt nguồn một số mạch liên quan (bộ giải mã và như vậy) khi chúng không được sử dụng. Với các bộ nhớ cache riêng biệt, chúng có thể cấp nguồn cho các mạch này một cách riêng biệt để lấy hướng dẫn và dữ liệu, tăng khả năng mạch không được cấp nguồn trong bất kỳ chu kỳ nhất định nào Điều).
Cũng giống như bất động sản, việc sử dụng bộ đệm được điều khiển bởi ba điều: vị trí, vị trí, vị trí. Điểm chung của việc có bộ đệm là hầu hết các chương trình thể hiện các mẫu vị trí: nếu chúng truy cập byte 1111111, thì byte tiếp theo chúng sẽ truy cập có lẽ là 1111110 hoặc 1111112, và không quá nhiều byte 9999999. Tuy nhiên, hầu hết các chương trình sẽ thể hiện rất khác nhau mô hình vị trí cho hướng dẫn của họ và dữ liệu của họ. Điều này có nghĩa là các hướng dẫn và dữ liệu không thể chia sẻ bộ đệm một cách hiệu quả. Bởi vì các hướng dẫn và dữ liệu không nhất thiết phải ở gần nhau trong bộ nhớ. Một truy cập dữ liệu sẽ chuyển hướng dẫn từ bộ đệm và các hướng dẫn tải sẽ làm hỏng dữ liệu từ bộ đệm.