Kiến Trúc Von Neumann, một khái niệm then chốt trong lĩnh vực khoa học máy tính, định hình cách máy tính hoạt động và xử lý thông tin. Mặc dù đã có những tiến bộ vượt bậc trong công nghệ, kiến trúc này vẫn là nền tảng cho hầu hết các máy tính cá nhân (PC) và các hệ thống nhúng như ARM.
Von Neumann, một nhà toán học và vật lý học lỗi lạc, đã đề xuất kiến trúc này vào năm 1945 trong bài báo mang tính đột phá “Bản thảo đầu tiên về máy tính EDVAC”. Bài báo này phác thảo cấu trúc cơ bản mà một máy tính cần có, đặt nền móng cho sự phát triển của máy tính hiện đại.
Kiến trúc Von Neumann bao gồm các thành phần chính sau:
- Đơn vị Số học và Logic (ALU): Thực hiện các phép tính số học và logic.
- Bộ nhớ (RAM): Lưu trữ dữ liệu và các lệnh.
- Khối Điều khiển Von Neumann: Điều phối hoạt động của các thành phần khác.
- Thiết bị Nhập/Xuất: Cho phép tương tác với thế giới bên ngoài.
Một trong những điểm nổi bật nhất của kiến trúc Von Neumann là khái niệm “chương trình được lưu trữ” (stored-program). Điều này có nghĩa là dữ liệu và các lệnh được lưu trữ trong cùng một bộ nhớ, cho phép máy tính xử lý và thực thi các lệnh một cách linh hoạt.
Ý tưởng “chương trình được lưu trữ” đánh dấu một sự thay đổi lớn so với các máy tính trước đó, trong đó các chương trình thường được “cứng hóa” bằng các kết nối vật lý. Với kiến trúc Von Neumann, việc thay đổi chương trình trở nên đơn giản hơn nhiều, chỉ cần thay đổi nội dung của bộ nhớ.
Do dữ liệu và lệnh được lưu trữ chung, máy tính cần một cơ chế để phân biệt giữa chúng. Khối Điều khiển Von Neumann đảm nhận vai trò này, xác định xem một vùng nhớ cụ thể chứa dữ liệu hay lệnh.
Khi một lệnh cần được thực thi, khối điều khiển sẽ sử dụng bộ đếm chương trình (program counter) để xác định địa chỉ của lệnh trong bộ nhớ. Lệnh này sau đó được nạp và thực thi bởi bộ xử lý. Địa chỉ của dữ liệu liên quan đến lệnh cũng được chứa trong chính lệnh đó.
Trong quá trình tìm nạp và thực thi lệnh, bộ đếm chương trình sẽ tự động tăng lên để trỏ đến lệnh tiếp theo trong bộ nhớ. Quá trình này diễn ra tuần tự, nghĩa là các lệnh được thực thi từng bước một, tại một thời điểm chỉ có một lệnh được xử lý. Đây là một đặc điểm quan trọng của kiến trúc Von Neumann.
Sơ đồ minh họa cách CPU tìm nạp lệnh từ bộ nhớ, thực thi và cập nhật bộ đếm chương trình một cách tuần tự.
Một điểm quan trọng cần lưu ý là việc tìm nạp lệnh và xử lý dữ liệu trên bộ nhớ được coi là các hoạt động riêng biệt. Điều này có nghĩa là CPU không thể đồng thời tìm nạp lệnh và xử lý dữ liệu. Khi CPU đang tìm nạp lệnh, nó không thể đọc hoặc ghi dữ liệu vào bộ nhớ, và ngược lại.
Tóm lại, các đặc điểm chính của kiến trúc Von Neumann bao gồm:
- Máy tính bao gồm các thành phần: ALU, khối điều khiển Von Neumann, thiết bị nhập/xuất và bộ nhớ chung cho dữ liệu và lệnh.
- Các lệnh được thực thi tuần tự, mỗi lần chỉ một lệnh.
Tuy nhiên, kiến trúc Von Neumann cũng có những hạn chế. Một trong những hạn chế lớn nhất là “Thắt cổ chai Von Neumann” (von Neumann bottleneck), được John Backus mô tả. Thắt cổ chai này xảy ra do tốc độ CPU nhanh hơn nhiều so với tốc độ truy cập bộ nhớ. CPU phải chờ dữ liệu và lệnh từ bộ nhớ, làm chậm hiệu suất tổng thể của hệ thống.
Ngày nay, có nhiều kỹ thuật được sử dụng để giảm thiểu tác động của Thắt cổ chai Von Neumann, chẳng hạn như:
- Tăng độ rộng bus dữ liệu: Cho phép truyền nhiều dữ liệu hơn trong một đơn vị thời gian.
- Sử dụng bộ nhớ cache: Lưu trữ các dữ liệu và lệnh thường xuyên được sử dụng gần CPU hơn, giảm thời gian truy cập.
Sơ đồ cho thấy bộ nhớ cache (cache) là một lớp bộ nhớ tốc độ cao nằm giữa CPU và RAM, giúp tăng tốc độ truy cập dữ liệu.
Mặc dù có những cải tiến, kiến trúc dựa trên Von Neumann vẫn là kiến trúc máy tính phổ biến nhất hiện nay. Điều này cho thấy tính hiệu quả và khả năng thích ứng của kiến trúc này trong nhiều ứng dụng khác nhau.