Các loại kiến ​​trúc máy tính khác nhau là gì?


20

Tôi đang đi qua cuốn sách "Các yếu tố của hệ thống máy tính". Cuốn sách này dạy cách xây dựng toàn bộ máy tính từ đầu. Trong khi tôi chỉ duyệt các chương về kiến ​​trúc máy tính, tôi nhận thấy rằng tất cả tập trung vào kiến ​​trúc Von Neumann. Tôi chỉ tò mò về các kiến ​​trúc khác là gì và khi nào và nơi chúng được sử dụng.

Tôi chỉ biết về hai, một là Von Neumann và thứ hai là Harvard. Ngoài ra tôi biết về RISC được sử dụng trong uC của AVR.


2
Có một phần ba, được sửa đổi Harvard. Một Harvard thuần túy sẽ không thể sử dụng cùng một bộ lưu trữ để giữ cả chương trình và dữ liệu. Do đó, hầu hết mọi triển khai của Harvard đều được sửa đổi để cho phép bộ nhớ hướng dẫn được xử lý dưới dạng dữ liệu.
khỉ đột

1
câu hỏi tuyệt vời.
Loại ẩn danh

Câu trả lời:


27

Có nhiều loại kiến ​​trúc máy tính khác nhau.

Một cách để phân loại kiến ​​trúc máy tính là theo số lượng lệnh được thực hiện trên mỗi đồng hồ. Nhiều máy tính đọc một lệnh tại một thời điểm và thực hiện nó (hoặc họ đã nỗ lực rất nhiều để hành động như thểhọ làm điều đó, ngay cả khi bên trong họ làm những thứ siêu lạ mắt và những thứ không theo thứ tự). Tôi gọi những máy như vậy là "von Neumann", bởi vì tất cả chúng đều có nút cổ chai von Neumann. Những máy như vậy bao gồm các kiến ​​trúc CISC, RISC, MISC, TTA và DSP. Những máy như vậy bao gồm máy tích lũy, máy đăng ký và máy xếp. Các máy khác đọc và thực hiện một số lệnh tại một thời điểm (VLIW, siêu vô hướng), phá vỡ giới hạn một lệnh trên mỗi đồng hồ, nhưng vẫn chạm vào nút cổ chai von Neumann ở một số lượng lớn hơn một số lệnh trên mỗi đồng hồ. Tuy nhiên, các máy khác không bị giới hạn bởi nút cổ chai von Neumann, bởi vì chúng tải trước tất cả các hoạt động của chúng một lần khi bật nguồn và sau đó xử lý dữ liệu mà không cần hướng dẫn thêm. Các máy không phải Von-Neumann như vậy bao gồm các kiến ​​trúc dataflow,

Một cách khác để phân loại kiến ​​trúc máy tính là bằng (các) kết nối giữa CPU và bộ nhớ. Một số máy có bộ nhớ hợp nhất, sao cho một địa chỉ duy nhất tương ứng với một vị trí trong bộ nhớ và khi bộ nhớ đó là RAM, người ta có thể sử dụng địa chỉ đó để đọc và ghi dữ liệu hoặc tải địa chỉ đó vào bộ đếm chương trình để thực thi mã. Tôi gọi những máy này là máy Princeton. Các máy khác có một số không gian bộ nhớ riêng biệt, như bộ đếm chương trình luôn đề cập đến "bộ nhớ chương trình" bất kể địa chỉ nào được tải vào nó, và đọc và ghi bình thường luôn đi đến "bộ nhớ dữ liệu", một vị trí riêng biệt thường chứa khác nhau thông tin ngay cả khi các bit của địa chỉ dữ liệu xảy ra giống hệt với các bit của địa chỉ bộ nhớ chương trình. Những máy đó là "Harvard thuần túy" hoặc "

Một số người sử dụng định nghĩa hẹp về "máy von Neumann" không bao gồm máy Harvard. Nếu bạn là một trong những người đó, thì bạn sẽ sử dụng thuật ngữ nào cho khái niệm chung hơn về "một cỗ máy có nút cổ chai von Neumann", bao gồm cả máy Harvard và Princeton, và loại trừ NON-VON?

Hầu hết các hệ thống nhúng sử dụng kiến ​​trúc Harvard. Một vài CPU là "Harvard thuần túy", có lẽ là sự sắp xếp đơn giản nhất để xây dựng phần cứng: bus địa chỉ cho bộ nhớ chương trình chỉ đọc được kết nối riêng với bộ đếm chương trình, chẳng hạn như nhiều PICchros Microchip đời đầu. Ngoài ra, một số máy Harvard đã sửa đổi, cũng đặt các hằng số vào bộ nhớ chương trình, có thể được đọc bằng lệnh "đọc dữ liệu không đổi từ bộ nhớ chương trình" đặc biệt (khác với hướng dẫn "đọc từ bộ nhớ dữ liệu"). Phần mềm chạy trong các loại máy Harvard ở trên không thể thay đổi bộ nhớ chương trình, đây là ROM hiệu quả cho phần mềm đó. Một số hệ thống nhúng là "tự lập trình", thường có bộ nhớ chương trình trong bộ nhớ flash và một "khối xóa bộ nhớ flash" đặc biệt hướng dẫn và một lệnh "ghi khối bộ nhớ flash" đặc biệt (khác với hướng dẫn "ghi vào bộ nhớ dữ liệu" thông thường), ngoài lệnh "đọc dữ liệu từ bộ nhớ chương trình". Một số Microchip PICmicros và Atmel AVR gần đây là các máy Harvard tự sửa đổi.

Một cách khác để phân loại CPU là theo đồng hồ của họ. Hầu hết các máy tính đều đồng bộ - chúng có một đồng hồ toàn cầu duy nhất. Một vài CPU không đồng bộ - chúng không có đồng hồ - bao gồm cả IllIAC I và IllIAC II, một thời là siêu máy tính nhanh nhất trên trái đất.

Vui lòng giúp cải thiện mô tả của tất cả các loại kiến ​​trúc máy tính tại http://en.wikibooks.org/wiki/Micro Processor_Design / Comput_Arch architecture .


2
Wow, xấu hổ về bạn vì đã giữ kiến ​​thức đó quá lâu SAU Tôi đã đặt câu hỏi.
Rick_2047

3
@Rick - Có vẻ như câu trả lời đó đã mất một thời gian dài để sáng tác. Hãy biết ơn rằng davidcary đã dành thời gian để trả lời câu hỏi của bạn! Một số người không hoạt động theo cùng một lịch trình của bạn.
Kevin Vermeer

2
@reemrevnivek có nghĩa là một anh chàng đùa.
Rick_2047

Sẽ thật tuyệt nếu câu trả lời này được đánh dấu là câu trả lời wiki cộng đồng.
Cố gắng Laugstøl

8

CISC là "đối diện" của RISC. Trong khi RISC thích có các hướng dẫn đơn giản để trình biên dịch dễ dàng tối ưu hóa và thường có cùng kích thước, CISC thích các hướng dẫn phức tạp có kích thước khác nhau.

Chẳng hạn, một lệnh pop trong CISC sẽ sửa đổi con trỏ ngăn xếp đặt dữ liệu từ ngăn xếp vào một thanh ghi khác. Tuy nhiên, bộ xử lý RISC sẽ đọc dữ liệu bằng một lệnh và sau đó sửa đổi con trỏ ngăn xếp bằng lệnh thứ hai. (nói chung, có một số ngoại lệ, như PowerPC có thể cập nhật con trỏ ngăn xếp và đẩy dữ liệu lên ngăn xếp, nhưng đó là một ngoại lệ)

Vì các hướng dẫn của RISC đều có cùng kích thước, nên trình phân tách dễ viết hơn. Thiết kế bộ xử lý cũng dễ dàng hơn, vì đường ống không phải tính đến các kích cỡ lệnh khác nhau. Tuy nhiên, mật độ mã CISC có xu hướng tốt hơn, bởi vì các lệnh phức tạp đòi hỏi ít byte hơn để biểu diễn cùng một số lượng hoạt động và bởi vì độ dài lệnh biến đổi cho phép một số "nén".

Ngoài ra còn có các kiến ​​trúc kỳ lạ khác, như VLIW / EPIC. Kiểu kiến ​​trúc này được thiết kế với ý định xử lý song song. Tuy nhiên, họ đã không làm rất tốt, vì họ đặt một gánh nặng rất lớn lên trình biên dịch để tối ưu hóa, trong khi các kiến ​​trúc khác có các cửa sổ hướng dẫn lạ mắt giúp giảm một số gánh nặng tối ưu hóa từ trình biên dịch.


1
nếu bạn thích nó, chấp nhận nó
Kortuk

5

Chà, có một cái gì đó giống như ENIAC, nơi bạn có các ALU riêng lẻ và bạn đã "lập trình" chúng bằng cách nối đầu ra của một alu với đầu vào của một alu khác sẽ thực hiện thao tác tiếp theo trên biến trung gian đó. "Thanh ghi" và bộ lưu trữ của bạn là các dây kết nối với alus.

Gần đây tôi đã mua cuốn sách "Máy tính đầu tiên - Lịch sử và kiến ​​trúc (Lịch sử điện toán)", phần này tập trung vào chủ đề chính xác này. Tôi không khuyên bạn nên mua cuốn sách này mặc dù nó chỉ là một tập hợp các bài báo học thuật, khó đọc và tôi nghi ngờ có thể được xuất bản (miễn phí) ở nơi khác. (Tôi đã từ bỏ nó trước khi kết thúc phần giới thiệu)

Một khi trí nhớ được phát minh và trở nên thiết thực, chúng tôi đã định cư thành hai người nổi tiếng Von Neumann và Harvard. Thực hiện từ việc nối lại dây, thẻ đục lỗ, băng giấy hoặc những thứ tương tự trở nên ít thực tế hơn. Và có stack dựa trên (ví dụ zpu), mà tôi nghi ngờ có lẽ thuộc thể loại Harvard chứ không phải của riêng nó.

Điều gì về các nền tảng von neumann khởi động flash chỉ đọc (trong sử dụng bình thường) trên một giao diện bộ nhớ và có ram đọc / ghi dữ liệu trong một giao diện khác (đôi khi có thể hoạt động song song) nhưng từ phối cảnh chương trình nằm trong một Không gian địa chỉ? Hoặc những cái có một số bộ nhớ / giao diện bên trong và bên ngoài đều hoạt động song song nhưng là von neumann vì ở cùng một không gian địa chỉ.

Và nền tảng bừa bộn nào mà bộ xử lý không thể truy cập vào bộ nhớ lệnh dưới dạng dữ liệu để thay đổi / nâng cấp bộ tải khởi động hoặc để bộ tải khởi động tải chương trình tiếp theo chạy? Tại sao không phải là một kiến ​​trúc von neumann? Bộ xử lý thực thi từ và hoạt động trên cùng một bộ nhớ trên cùng một giao diện có khả năng theo thứ tự (tìm nạp lệnh và ghi bộ nhớ không xảy ra cùng một lúc)?

Hai kiến ​​trúc dựa trên bộ nhớ phổ biến gần hơn so với chúng trong các triển khai hiện tại IMO.

Gpu rơi ở đâu? Hoặc doanh nghiệp mà tôi làm việc, bộ xử lý mạng (NPU). Trường hợp bạn có các microengines (bộ xử lý) có mục đích đặc biệt tương đối nhỏ này thực thi từ một máy gặt đập như ram chương trình (có thể đánh địa chỉ nhưng bạn không muốn làm điều đó vì lý do hiệu năng), hãy vận hành trên nhiều ram dữ liệu khác nhau có không gian địa chỉ riêng (bộ xử lý riêng hướng dẫn cho từng không gian), (các không gian bộ nhớ hoạt động song song) và thông qua các ram đó xử lý dữ liệu trung gian để có tính toán tiếp theo được thực hiện bởi microengine tiếp theo theo kiểu alu (eniac) như thời trang? Bạn sẽ gọi cái đó là gì? Có phải npus và gpus chỉ là những kiến ​​trúc máy gặt sửa đổi lạ mắt?


"nền tảng máy gặt nào tốt mà bộ xử lý không thể ... tải chương trình tiếp theo để chạy?" Nhiều CPU có chương trình cố định không thể thay đổi bởi phần mềm chạy trên CPU đó. Một lợi thế của sự sắp xếp này là nó không thể "gạch" hệ thống với lỗi ghi vào bộ nhớ ngẫu nhiên, hoặc cập nhật phần mềm xấu, hoặc thậm chí với một bản cập nhật phần mềm tốt và mất điện không đúng lúc. Việc cập nhật phần mềm trở nên khó khăn hơn - nhưng thực sự, bạn đã thay đổi phần mềm trong lò vi sóng bao nhiêu lần?
davidcary

2
Trên lò vi sóng không có gì, nhưng tôi dành một lượng thời gian hợp lý để mã hóa cho vi điều khiển và tải lại phần mềm nhiều lần trong ngày. Bị giới hạn trong các hệ thống dựa trên rom nhỏ, không có lỗi, vấn đề bricking được giải quyết dễ dàng bằng cách sử dụng von neumann. Các hệ thống mà bạn mô tả ít sử dụng để đạt được hiệu suất của các bus riêng biệt, tính năng khác của kiến ​​trúc máy gặt. Vì vậy, quan điểm của tôi là, kiến ​​trúc máy gặt không có quy mô tốt mà không có cách tải chương trình, làm cho nó hơi lỗi thời.
old_timer

1
Hmm, họ gọi máy gặt đập vỏ não khi nó thực sự không giống với avr (họ cũng gọi nó là máy gặt sửa đổi). Tôi chắc chắn có một số bộ xử lý kiến ​​trúc máy gặt thuần (PIC), và được sử dụng là von neumann thuần túy hơn, nhưng hầu hết là máy gặt sửa đổi hoặc von neumann được sửa đổi (truy cập dữ liệu và hướng dẫn song song) làm cho chúng giống nhau hơn so với khác nhau. Đó là nơi tôi đang đứng đầu trong câu trả lời của mình, máy gặt thuần túy và von neumann thuần túy đều nhanh chóng trở nên lỗi thời. Các poster muốn biết những gì khác ngoài đó, gần như tất cả mọi thứ ngoài kia.
old_timer

4

Cả kiến ​​trúc von Neumann và Harvard đều có thể được sử dụng với các bộ xử lý RISC như AVR và ARM. AVR sử dụng Harvard, trong khi một số chip ARM sử dụng von Neumann và một số sử dụng Harvard.


-1 để sắp xếp bạn dưới các câu trả lời thú vị hơn.
Oskar Skog
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.