Kiến trúc Harvard có dữ liệu riêng biệt và xe bus hướng dẫn, cho phép chuyển nhượng được thực hiện đồng thời trên cả hai xe bus. Một kiến trúc von Neumann chỉ có một xe buýt được sử dụng cho cả việc truyền dữ liệu và hướng dẫn lấy về, và do đó chuyển dữ liệu và hướng dẫn lấy về phải được lên kế hoạch - họ không thể thực hiện cùng một lúc.
Có thể có hai hệ thống bộ nhớ riêng biệt cho một kiến trúc Harvard. Miễn là dữ liệu và hướng dẫn có thể được nuôi trong cùng một lúc, sau đó nó không quan trọng cho dù nó đến từ một bộ nhớ cache hay bộ nhớ. Nhưng có một vấn đề với điều này. Trình biên dịch thường nhúng dữ liệu (hồ đen) trong mã, và nó thường cũng cần thiết để có thể viết thư cho bộ nhớ không gian hướng dẫn, ví dụ như trong trường hợp của mã tự sửa chữa, hoặc, nếu một trình gỡ lỗi ARM được sử dụng để thiết lập phần mềm breakpoint trong bộ nhớ. Nếu có hai, hệ thống bộ nhớ bị cô lập hoàn toàn riêng biệt, điều này là không thể. Có phải là một số loại cầu nối giữa các hệ thống bộ nhớ cho phép điều này.
Sử dụng một hệ thống bộ nhớ đơn giản, thống nhất cùng với một kiến trúc Harvard là rất không hiệu quả. Trừ khi nó có thể cung cấp dữ liệu vào cả hai bus cùng một lúc, nó có thể là tốt hơn để sử dụng một bộ xử lý kiến trúc von Neumann.
Sử dụng cache
Ở tốc độ xung nhịp cao hơn, cache là hữu ích như tốc độ bộ nhớ là tương ứng chậm hơn. Kiến trúc Harvard có xu hướng nhắm vào các hệ thống hiệu suất cao hơn, và do đó lưu trữ gần như luôn luôn được sử dụng trong hệ thống như vậy.
Von Neumann kiến trúc thường có một bộ nhớ cache thống nhất, trong đó lưu trữ tất cả các hướng dẫn và dữ liệu. Tỷ lệ của mỗi trong bộ nhớ cache là biến, đó có thể là một điều tốt. Nó sẽ về nguyên tắc có thể có hướng dẫn và dữ liệu lưu trữ riêng biệt, lưu trữ dữ liệu và hướng dẫn riêng. Điều này có lẽ sẽ không phải là rất hữu ích vì nó sẽ chỉ có thể đến bao giờ truy cập vào một bộ nhớ cache tại một thời điểm.
Caches cho các kiến trúc Harvard là rất hữu ích. Một hệ thống như vậy sẽ có cache riêng biệt cho mỗi xe buýt. Cố gắng sử dụng một bộ nhớ cache được chia sẻ trên một kiến trúc Harvard sẽ rất kém hiệu quả kể từ đó chỉ có một xe buýt có thể được cho ăn một lần. Có hai cache có nghĩa là nó có thể cấp cho cả xe buýt cùng một lúc .... chính xác những gì là cần thiết cho một kiến trúc Harvard.
Điều này cũng cho phép để có một hệ thống bộ nhớ thống nhất rất đơn giản, sử dụng không gian địa chỉ chung cho cả hai lệnh và dữ liệu. Điều này được xung quanh vấn đề của hồ đen và mã tự sửa đổi. Những gì nó có nghĩa là, tuy nhiên, đó là khi bắt đầu với bộ đệm rỗng, nó là cần thiết để lấy lệnh và dữ liệu từ bộ nhớ hệ thống duy nhất, cùng một lúc. Rõ ràng, hai truy cập bộ nhớ là cần thiết do đó trước khi các lõi có tất cả các dữ liệu cần thiết. Hiệu suất này sẽ không tốt hơn so với một kiến trúc von Neumann. Tuy nhiên, như các cache điền vào, nó là nhiều khả năng hơn là chỉ lệnh hoặc giá trị dữ liệu đã được lưu trữ, và như vậy chỉ có một trong hai phải được lấy từ bộ nhớ. Người kia có thể được cung cấp trực tiếp từ bộ nhớ cache không có sự chậm trễ thêm. Hiệu quả tốt nhất đạt được khi cả hướng dẫn và dữ liệu được cung cấp bởi các cache, mà không cần phải truy cập vào bộ nhớ bên ngoài cả.
Đây là sự thỏa hiệp hợp lý nhất và kiến trúc được sử dụng bởi ARM Harvard nhân xử lý. Hai hệ thống bộ nhớ riêng biệt có thể thực hiện tốt hơn, nhưng sẽ rất khó để thực hiện.
đang được dịch, vui lòng đợi..
