Bạn có thể đặt một máy tính xung quanh một vi điều khiển 32 bit không?


9

Tất cả chúng ta đều có (hầu hết) máy 32 bit tại nhà. Nhưng các máy 32 bit có một bộ vi xử lý trong đó. Tôi đã đọc một bài viết về ARM Cortex. Đây là một vi điều khiển 32 bit. Bây giờ điều đó hấp dẫn một câu hỏi trong tôi. Bộ vi điều khiển đã được chế tạo để giảm mạch bên ngoài xung quanh bộ vi xử lý, sau đó bộ vi xử lý trở nên mạnh hơn trong khi bộ vi điều khiển vẫn ở đó ở dạng 8 bit trong một thời gian quá dài. Nhưng bây giờ chúng ta có bộ vi điều khiển 32 bit, chúng ta có thể có một máy tính dựa trên những thứ đó không?


Câu trả lời:


11

Nó phụ thuộc vào cách bạn định nghĩa 'máy tính' ..

Ở đầu nhỏ hơn của thang đo, cái mà bạn có thể gọi là bộ điều khiển vi mô truyền thống, bạn không được quản lý bộ nhớ và hiếm khi thấy RAM nhiều hơn số lượng nhỏ được nhúng trong chip. Tôi sẽ thừa nhận rất ít kiến ​​thức về kiến ​​trúc của các bộ điều khiển vi mô có khả năng cao hơn hiện có, nhưng sự tồn tại (hoặc thiếu) của các tính năng này có lẽ là chìa khóa để phân biệt giữa một thiết bị phù hợp nhất cho các ứng dụng nhúng hoặc cho tính toán cho mục đích chung .

Bằng 'quản lý bộ nhớ', tôi đang đề cập đến khả năng chạy các chương trình trong không gian địa chỉ ảo và ánh xạ chúng tới RAM vật lý có sẵn trong hệ thống, một chức năng được thực hiện bởi cái thường được gọi là đơn vị quản lý bộ nhớ (MMU).

Nếu không có MMU, nếu bạn cố chạy nhiều tiến trình, tất cả chúng đều bị buộc phải chia sẻ một không gian địa chỉ duy nhất và điều này có nghĩa là trừ khi tất cả các quy trình liên quan đến sơ đồ phân bổ bộ nhớ của bạn, một quy trình có thể rất dễ bị sập. Vì vậy, nếu bạn có toàn quyền kiểm soát thiết kế tất cả các quy trình, như với một hệ thống nhúng, thì điều này không đáng lo ngại lắm. Tuy nhiên, nếu bạn đang cố gắng hỗ trợ tính toán cho mục đích chung, bạn không thể đảm bảo rằng tất cả các mã sẽ được thực thi sẽ tôn trọng sơ đồ cấp phát bộ nhớ và hệ thống sẽ khá mong manh.

Thiếu RAM cũng không phải là vấn đề đối với các hệ thống nhúng, (1) vì thường có rất nhiều đèn flash và (2) không phải là máy tính có mục đích chung có nghĩa là bạn không phải lo lắng về việc chạy các chương trình không lường trước tại hành vi của một người dùng. Bạn biết trước tổng số tất cả các phần mềm sẽ chạy trên hệ thống và chỉ cần RAM cho các biến cho phần mềm đó. Tuy nhiên, khi bạn cố gắng biến hệ thống của mình thành một máy tính có mục đích chung, người dùng sẽ mong đợi có thể chạy bất cứ thứ gì phù hợp với họ và điều này đòi hỏi phải có RAM.

Bây giờ, thật tuyệt khi thực hiện tính toán mục đích chung trên các thiết bị không có MMU và không có nhiều bộ nhớ. Bộ nhớ IBM 128K RAM gốc, 8088 (16 bit) đã thoát khỏi điều này, miễn là bạn chỉ cần chạy một chương trình một lúc.

Vì vậy, nếu bạn muốn định nghĩa 'máy tính' là một cái gì đó giống như công nghệ năm 1982, câu trả lời chắc chắn là có. Hoặc nếu bạn có một hệ thống khép kín, nơi bạn có thể giảm thiểu các vấn đề không có MMU và / hoặc nhiều ram (ví dụ: điện thoại di động) bằng cách kiểm soát cẩn thận thiết kế của phần mềm, cũng có. Hoặc, nếu bộ điều khiển vi mô của bạn có MMU tích hợp và bộ nhớ RAM (hoặc có thể chứa những thứ bên ngoài này), bạn sẽ có thể xây dựng một hệ thống giống với các máy tính hiện tại.


Các phát triển trong các trình biên dịch đúng lúc cho những thứ như Java tạo ra một MMU có lẽ ít cần thiết hơn so với trước đây. Trong trường hợp không có các lỗi liên quan đến JIT, người ta có thể có nhiều xử lý độc lập chạy các nền tảng độc lập trên Máy ảo Java mà không có MMU và cách ly chúng với nhau, vì JIT sẽ không tạo hướng dẫn cho một chương trình có thể truy cập bộ nhớ không phù hợp được sử dụng bởi người khác.
supercat

16

Chắc chắn rồi! Hãy xem như hầu hết mọi điện thoại di động ngoài kia. Ví dụ, Motorola Droid sử dụng bộ vi điều khiển dựa trên TI OMAP ARM chạy Android trên Linux. Về cơ bản, một hệ điều hành máy tính đầy đủ có trên nó và nhiều tiện ích khác. Trên một số sản phẩm mà khách hàng của tôi xây dựng, họ sử dụng bộ xử lý / bộ điều khiển 32-bit FreeScale PowerQuicc I & II có thể chạy Linux trên chúng. Về cơ bản, PowerQuicc có lõi PowerPC cùng với bộ xử lý RISC riêng để xử lý tất cả các thiết bị ngoại vi theo cách có cấu hình cao. Đó là một vi điều khiển được tôn vinh.

Bạn cũng phải nhớ rằng những năm trước máy tính không chạy trên bộ xử lý 32 bit, nhưng giống như bộ xử lý 8 bit (cách đó 4 bit trở lại) như Commodore 64. Sau đó, chúng chuyển sang 16 bit, 32 bit , v.v ... Thực sự không có nhiều khác biệt giữa vi điều khiển so với vi xử lý có kiến ​​trúc và tốc độ bit tương đương. Vi điều khiển thường thiếu đơn vị dấu phẩy động, nhưng điều đó có thể được bù bằng toán học điểm cố định. Ví dụ, bộ xử lý Motorola 68000 ban đầu (16 bit) đã được sử dụng để cấp nguồn cho các máy tính Macintosh thời xưa đó và sau đó quay thành phiên bản vi điều khiển cho nhiều ứng dụng điện tử nhúng trong nhiều năm.

Bạn cần xem xét vai trò của vi điều khiển để hiểu nó được sử dụng như thế nào. Thông thường, khi bạn thiết kế với một bộ vi điều khiển, bạn có một ứng dụng chuyên dụng cao và bạn đang cố gắng đặt nó trong một không gian nhỏ hơn so với PC Tower. Trong khi đó, máy tính có mục đích rất chung: số giòn và xử lý đầu vào của người dùng. Khi bạn tìm kiếm một vi điều khiển, bạn đang tìm một vi điều khiển sẽ hỗ trợ loại giao diện bạn đang xây dựng cho ứng dụng của mình. Bạn có cần 3 cổng USB, 2 ethernet, 2 UART, cổng SPI, ATM và giao diện CAN không? Một số giao diện này không xuất hiện trên một máy tính thông thường như SPI, ATM và CAN và một bộ vi điều khiển được tích hợp để giảm không gian bảng. Bạn có thể xem vi điều khiển như bộ xử lý được thiết kế cho một giải pháp cụ thể.


Tôi không nghĩ rằng bất kỳ "máy tính đa năng" nào từng sử dụng bất cứ thứ gì nhỏ hơn bộ xử lý 8 bit. Các máy tính đa năng cần có khả năng truy cập đủ RAM để chứa một chương trình có thể sử dụng được và tôi không biết bất kỳ máy tính bốn bit nào có kho lưu trữ mã RAM có thể sử dụng được.
supercat

có thể không thương mại, nhưng rất nhiều tin tặc đã làm trong đó có ông tôi. Anh ta có một máy tính 4 bit đang chạy trong xưởng của mình trước khi hàng hóa của 64 và TRS-80 phổ biến. Nó cũng có RAM (ngăn xếp của DIP).
Jay Atkinson

Bạn có tài liệu nào về các máy kiến ​​trúc Von-Neumann 4 bit được xây dựng vật lý không?
supercat

5

Chúng tôi chắc chắn có thể. IPad, ví dụ, sử dụng bộ xử lý ARM Cortex A8 cho bộ não của nó.


2
Đây là bộ vi xử lý, không phải vi điều khiển, như JPC ghi chú bên dưới
Kortuk

3

Điều đáng chú ý là các ARM được đề cập (OMAP và A8) là các bộ vi xử lý không có bộ nhớ Flash và RAM (không hoàn toàn đúng với A8). Bộ vi điều khiển Cortex-M3 nhỏ hơn, có bộ nhớ tích hợp nhỏ và dễ dàng truy cập vào các thiết bị ngoại vi.

Có một khoảng cách khá lớn (hiệu năng và tính năng khôn ngoan) giữa chúng.


+1 để chỉ ra sự khác biệt giữa sê-ri Cortex-A và Cortex-M ...
Johan

1
vi điều khiển đã nhúng flash và ram. Bộ vi xử lý có bộ nhớ ngoài của chúng.
Kortuk


2

Không cố gắng phục hồi một luồng cũ nhưng Zaurus SL5500 của tôi đã chạy linux nhúng trên bộ xử lý ARM với bộ nhớ RAM và thêm các bộ lưu trữ thông qua các khe CF và SD. Theo như tôi biết thì MMU được triển khai chủ yếu bằng phần mềm (dù sao cũng có ý nghĩa đối với một hệ thống linux). Điện toán cho mục đích chung không chỉ có thể, mà còn được cung cấp hoàn toàn thông qua phần mềm, trình biên dịch và trình vỏ lệnh linh hoạt, cung cấp hầu hết các tiện ích và tính năng * nix tiêu chuẩn.

Không phải là máy tính GP nhanh nhất trên thế giới, nhưng chắc chắn làm cho ARM (và / hoặc Samsung tương đương - tôi không chắc chắn 100% nó chứa) có khả năng khủng khiếp. Tính năng và hiệu năng-khôn ngoan, nó được so sánh khá độc đáo với Ipaq WinMobile của cổ điển gần đây hơn nhiều (bản sao Samsung StrongArm xác định). Cả hai máy đều có rất nhiều RAM và rất nhiều bộ nhớ nên rất nhiều bộ nhớ quản lý đang diễn ra - tôi cho rằng chúng ta phải làm mờ đi một chút giữa bộ vi xử lý và bộ vi điều khiển khi chúng ta đạt đến mức hiệu năng này.


2

Bạn đề cập đến "vi xử lý" và "vi điều khiển" nhưng ngày càng có một loại thiết bị thứ ba xuất hiện được gọi là "SOC" (viết tắt của "system-on-chip", một thuật ngữ tôi thấy khá sai lệch)

Vi điều khiển có lượng ram rất nhỏ và thường không có ánh xạ bộ nhớ và bảo vệ bộ nhớ rất hạn chế. Điều này làm cho chúng không phù hợp để sử dụng như máy tính cho mục đích chung.

SOC có thể được coi là một trung gian giữa các bộ vi điều khiển thông thường có tất cả mọi thứ được tích hợp trên một chip và bộ vi xử lý thông thường đòi hỏi lượng lớn mạch hỗ trợ. SOC có lõi xử lý và perhipherals được tích hợp trên một chip nhưng không giống như vi điều khiển, chúng sử dụng bộ nhớ ngoài. Thông thường, các SOC này có MMU đầy đủ có thể tạo không gian địa chỉ ảo cho các ứng dụng khác nhau. Nhiều SoC cũng có các khối chức năng đặc biệt cho đồ họa 3D, DSP, mã hóa / giải mã video, v.v.

SOC không mạnh bằng máy tính để bàn hiện đại nhưng khi kết hợp với môi trường phần mềm chưa được mã hóa, chúng đủ mạnh và đủ chức năng để được coi là "máy tính đa năng".

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.