Làm thế nào tôi có thể biết liệu máy tính của tôi là kiến ​​trúc Harvard hay von Neumann?


12

Tôi hiểu sự khác biệt giữa hai kiến ​​trúc là sự tách biệt các hướng dẫn khỏi dữ liệu trong kiến ​​trúc Harvard. Nhưng làm thế nào để tôi biết tôi đang sử dụng loại hệ thống nào? Có thể viết một chương trình sao cho chương trình xác định xem hệ thống đó là von Neumann hay Harvard? Có thể có một kiến ​​trúc khác hoặc những kiến ​​trúc này là những kiến ​​trúc duy nhất được biết đến?


3
Sử dụng hiện đại của kiến ​​trúc Harvard . Mọi thứ khác trong sử dụng điển hình là Von Neumann.
Robert Harvey

1
Trong khi các hệ thống hiện đại cũng không nghiêm chỉnh von-Neumann. suy nghĩ về GPU và tất cả những thứ khác :)
johannes

1
Có các loại kiến ​​trúc khác. Kiến trúc Dataflow là yêu thích của tôi. Nhưng bạn không thể nhìn thấy nó trong tự nhiên.
Martin York

1
Trừ khi bạn đang làm một cái gì đó thực sự ở mức độ thấp, tôi không chắc tại sao bạn cần biết sự khác biệt (bạn có đang viết mã tự sửa đổi không?). Mặc dù hầu hết các máy hiện đại là von-Neumann, HĐH thường đánh dấu các trang mã khác với các trang dữ liệu để ngăn chặn các sửa đổi ngẫu nhiên (độc hại) đối với mã.
Martin York

Câu trả lời:


13

Máy tính của bạn là một máy von Neumann. Tất cả các máy tính có mục đích chung là. Ngoại lệ duy nhất là các bộ đồng xử lý chuyên dụng như GPU. Không phải là bạn không thể có một cỗ máy Harvard (hoặc bất kỳ kiến ​​trúc nào khác). Chỉ là không ai xây dựng chúng, đặc biệt là không bán (bộ đồng xử lý modulo, tất nhiên).


3
Điều này chắc chắn phụ thuộc vào định nghĩa. Nếu bạn thay thế sự phân đôi khá lỗi thời bằng một phép chia ba , thì hầu hết các máy tính có mục đích chung hiện nay là Kiến trúc Harvard đã sửa đổi.
maaartinus

3
Nhiều vi điều khiển nhúng sử dụng kiến ​​trúc Harvard. Họ thường chạy mã từ một số loại hoặc ROM hoặc bộ nhớ flash, và sẽ thu được rất ít bằng cách sử dụng một bus chung cho mã và dữ liệu.
supercat

6

Hầu hết các CPU mục đích chung hiện nay đều sử dụng Kiến trúc Harvard đã sửa đổi . Các lõi CPU có thể truy cập chương trình và dữ liệu một cách độc lập trong bộ đệm L1 riêng biệt của chúng. Ở bên ngoài, không có bộ nhớ dữ liệu và chương trình riêng biệt (cũng không tách rời các mức bộ nhớ cache khác).

Có thể có một kiến ​​trúc khác hoặc những kiến ​​trúc này là những kiến ​​trúc duy nhất được biết đến?

Tất cả các kiến ​​trúc khác khá hạn chế trong việc sử dụng chúng. Do sự phức tạp và chi phí cực kỳ cao liên quan đến phát triển bộ xử lý, tôi không nghĩ có ai sẽ thử lại một cách nghiêm túc.

Tuy nhiên, trong khi các CPU hiện đại về cơ bản là von Neumann, chúng kết hợp rất nhiều ý tưởng như Dataflow Architecture trong nội bộ.


4

Cả kiến ​​trúc Von Neumann và Harvard đều thuộc mô hình dòng điều khiển.

Có một mô hình khác, đó là luồng dữ liệu .

Một ví dụ phổ biến về điện toán dataflow, mặc dù được triển khai trên các máy tính điều khiển, là bảng tính (từ Visicalc và Multiplan đến Excel).

Mạng lưới thần kinh cũng thuộc thể loại này.

FPGA là một ví dụ khác về kiến ​​trúc dataflow. Chúng được lập trình với các ngôn ngữ mô tả phần cứng như VHDL .


3

Kiến trúc Harvard thường chỉ được sử dụng trong các bộ vi xử lý nhúng trong đó chương trình được lưu trữ trong bộ nhớ eeprom trên tàu. Người duy nhất bạn có thể thấy là một Atmel AVR như được sử dụng trong Arduino


1

Khi bạn lập trình nó: Sửa đổi một vùng bộ nhớ và sau đó nhảy đến đó và thực hiện nó.

Nếu đó là Havard bạn không thể làm điều đó.


Hoặc nó có thể là máy Von Neumann với trình quản lý bộ nhớ W ^ X.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.