Tại sao vi điều khiển có rất ít RAM?


39

Có thể đây là vấn đề thường gặp hơn, nhưng có vẻ như các bộ vi điều khiển đã phát triển vượt bậc trong 20 năm qua, gần như tất cả, tốc độ xung nhịp cao hơn, nhiều thiết bị ngoại vi hơn, gỡ lỗi dễ dàng hơn, lõi 32 bit, v.v ...

Người ta vẫn thường thấy RAM trong 10 giây KB (16/32 KB).

Có vẻ như nó không phải là vấn đề chi phí hoặc kích thước trực tiếp. Đây có phải là một vấn đề phức tạp với bộ điều khiển RAM trên ngưỡng nào đó không?

Hay chỉ là nó thường không được yêu cầu?

Nhìn qua một ma trận các bộ phận tại một nhà cung cấp Internet phổ biến, tôi thấy một chiếc Cortex M4 có 256 KB với giá dưới 8 đô la Mỹ, và sau đó với một vài đô la, bạn có thể tìm thấy thêm một số ROMless, nhưng có vẻ khá thưa thớt ...

Tôi thực sự không cần một bộ vi điều khiển với MB dung lượng lưu trữ dễ bay hơi, nhưng có vẻ như ai đó có thể ...


8
Có lẽ có một lý do kỹ thuật hơn, nhưng với tôi có vẻ như đó có thể là một câu hỏi của thị trường. Bạn sử dụng vi điều khiển khi bạn có các ứng dụng sử dụng chúng, khi bạn cần một thứ gì đó mạnh hơn, bạn thường chuyển sang một hệ thống nhúng hoàn chỉnh hơn.
Jarrod Christman

15
10 giây của kB. Nó thật khổng lồ. Bộ vi điều khiển sử dụng của tôi để sử dụng trong công cụ tạo mẫu có 68 byte RAM: en.wikipedia.org/wiki/PIC16x84
slebetman

2
Tôi đã từng viết một trình rasterizer phần mềm 3D trong 86B trên một Arduino với RAM 2KB. Nó làm tôi bực mình vì nếu tôi thậm chí có 10KB hoặc 50KB thì tôi thực sự có thể bắt đầu điều chỉnh các mô hình thực trong bộ nhớ và thực hiện một điều thú vị. Tôi thực sự có câu hỏi tương tự vào thời điểm đó và tôi không nghĩ các câu trả lời hiện tại giải quyết nó đủ tốt. SRAM là đắt tiền - nhưng CPU có megabyte bộ nhớ cache được tạo từ SRAM, nhưng chúng vẫn còn khá rẻ. Nó cảm thấy như một cái cớ khập khiễng.
imallett

2
@slebetman lý do nào khiến bạn thích một chiếc micro 20 tuổi khi các thiết bị tốt hơn nhiều có sẵn rộng rãi hơn và rẻ hơn?
đánh dấu

3
it seems like somebody mightLà bắt ở đây, hầu hết mọi người không. Bạn không chính xác sẽ phát trực tuyến Netflix trên con chip đó và 64K thường là quá đủ cho mọi thứ bạn cần làm với bộ điều khiển vi mô . Nếu bạn muốn lên cao hơn, hãy lấy một comp đầy đủ, ví dụ, một quả mâm xôi.
TC1

Câu trả lời:


44

Cái này có một vài nguyên nhân.

Trước hết, bộ nhớ chiếm rất nhiều diện tích silicon. Điều này có nghĩa là việc tăng dung lượng RAM trực tiếp làm tăng diện tích silicon của chip và do đó chi phí. Diện tích silicon lớn hơn có ảnh hưởng 'gấp đôi' về giá: chip lớn hơn có nghĩa là ít chip hơn trên mỗi wafer, đặc biệt là xung quanh rìa và chip lớn hơn có nghĩa là mỗi chip có nhiều khả năng bị lỗi.

Thứ hai là vấn đề của quá trình. Các mảng RAM phải được tối ưu hóa theo nhiều cách khác nhau so với logic và không thể gửi các phần khác nhau của cùng một chip thông qua các quy trình khác nhau - toàn bộ chip phải được sản xuất với cùng một quy trình. Có những nền tảng bán dẫn ít nhiều dành riêng cho việc sản xuất DRAM. Không phải CPU hay logic khác, chỉ cần lên DRAM. DRAM yêu cầu các tụ điện hiệu quả trong khu vực và các bóng bán dẫn rò rỉ rất thấp. Làm các tụ điện đòi hỏi xử lý đặc biệt. Việc tạo ra các bóng bán dẫn rò rỉ thấp dẫn đến các bóng bán dẫn chậm hơn, đó là một sự đánh đổi tốt cho các thiết bị điện tử đọc DRAM, nhưng sẽ không tốt cho việc xây dựng logic hiệu suất cao. Sản xuất DRAM trên một vi điều khiển chết có nghĩa là bạn sẽ cần phải đánh đổi tối ưu hóa quy trình bằng cách nào đó. Mảng RAM lớn cũng có nhiều khả năng phát triển lỗi đơn giản do diện tích lớn, năng suất giảm và chi phí tăng. Việc kiểm tra các mảng RAM lớn cũng tốn thời gian và vì vậy bao gồm các mảng lớn sẽ làm tăng chi phí kiểm tra. Ngoài ra, tính kinh tế của quy mô giảm chi phí của các chip RAM riêng biệt nhiều hơn so với các bộ vi điều khiển chuyên dụng hơn.

Tiêu thụ điện năng là một lý do khác. Nhiều ứng dụng nhúng bị hạn chế về năng lượng và kết quả là nhiều bộ vi điều khiển được chế tạo để chúng có thể được đưa vào trạng thái ngủ công suất rất thấp. Để cho phép ngủ công suất rất thấp, SRAM được sử dụng do khả năng duy trì nội dung của nó với mức tiêu thụ năng lượng cực thấp. SRAM được hỗ trợ bằng pin có thể giữ trạng thái trong nhiều năm chỉ với một nút pin 3V. DRAM, mặt khác, không thể giữ trạng thái của nó trong hơn một phần của giây. Các tụ điện nhỏ đến mức một số electron chui ra và vào đế, hoặc rò rỉ qua các bóng bán dẫn tế bào. Để chống lại điều này, DRAM phải liên tục được đọc ra và viết lại. Do đó, DRAM tiêu thụ nhiều năng lượng hơn đáng kể so với SRAM khi không sử dụng.

Mặt khác, các ô bit SRAM lớn hơn nhiều so với các ô bit DRAM, vì vậy nếu cần nhiều bộ nhớ, DRAM thường là một lựa chọn tốt hơn. Đây là lý do tại sao khá phổ biến khi sử dụng một lượng nhỏ SRAM (kB đến MB) làm bộ nhớ cache trên chip kết hợp với số lượng DRAM ngoài chip lớn hơn (MB đến GB).

Đã có một số kỹ thuật thiết kế rất tuyệt được sử dụng để tăng dung lượng RAM có sẵn trong một hệ thống nhúng với chi phí thấp. Một số trong số này là các gói đa chip chứa các khuôn riêng biệt cho bộ xử lý và RAM. Các giải pháp khác liên quan đến việc sản xuất các miếng đệm trên đỉnh của gói CPU để chip RAM có thể được xếp chồng lên nhau. Giải pháp này rất thông minh vì các chip RAM khác nhau có thể được hàn trên CPU tùy thuộc vào dung lượng bộ nhớ cần thiết, không yêu cầu định tuyến cấp bảng bổ sung (các thanh bộ nhớ rất rộng và chiếm nhiều diện tích bo mạch). Lưu ý rằng các hệ thống này thường không được coi là vi điều khiển.

Nhiều hệ thống nhúng rất nhỏ dù sao cũng không cần nhiều RAM. Nếu bạn cần nhiều RAM, thì có lẽ bạn sẽ muốn sử dụng bộ xử lý cao cấp hơn có DRAM bên ngoài thay vì SRAM trên bo mạch.


Tôi đã thấy các IC RAM thực tế có chân và mọi thứ được dán / đặt trên đầu bộ xử lý (là các gói BGA) và được chuyển vào chúng! Những điều chúng tôi làm cho không gian bảng !! Như người Nga chỉ ra với phương pháp thiết kế TRIZ của họ, nếu bạn hết dung lượng trong X và Y, hãy truy cập Z :)
KyranF

2
+1 Để phân biệt quan trọng giữa SRAM và DRAM. SRAM vừa nhanh hơn và tiết kiệm năng lượng hơn, đặc biệt là khi không sử dụng, nhưng như bạn lưu ý, đắt hơn đáng kể và cần nhiều không gian hơn.
xì hơi

Tôi không nghĩ SRAM là loại RAM đắt nhất. Một sự kết hợp giữa dép xỏ ngón và bộ ghép kênh có thể được sử dụng như một bộ nhớ truy cập ngẫu nhiên sẽ mang lại hiệu suất tốt hơn SRAM, nhưng với chi phí silicon lớn hơn nhiều. Những ký ức như vậy thường không lớn hơn khoảng 32 từ, nhưng một bộ nhớ như vậy có thể chứa và đọc đồng thời theo cách mà SRAM không thể.
supercat

1
Đúng, các tệp đăng ký và flip-flop đầy đủ đắt hơn SRAM, nhưng chúng không được sử dụng cho bộ nhớ hệ thống cho mục đích chung.
alex.forencich

1
Tôi đã thấy một máy chủ HTTP hoạt động trên MCU với 160kB SRAM và không có DRAM bên ngoài. Nó không thể xử lý nhiều kết nối song song nhưng nó hoạt động.
Jan Dorniak

15

Bộ nhớ có thể chiếm nhiều không gian silicon nhất và RAM rất nhanh để sử dụng rất dễ bay hơi - và sử dụng năng lượng liên tục để giữ trạng thái của nó. Trừ khi bạn cần nhiều RAM, nó không hữu ích cho nhiều ứng dụng khác. Nếu một nhà thiết kế hệ thống nhúng cần nhiều RAM hơn, họ chỉ cần lấy chip RAM ngoài và sử dụng giao diện bộ nhớ ngoại vi mà các bộ vi điều khiển thường có những ngày này để mở rộng bộ nhớ cắm và phát rất dễ dàng. Đó là lý do tôi thấy là tại sao các bộ vi điều khiển nói chung vẫn có RAM trên bo mạch thấp hợp lý, bởi vì mã ứng dụng hợp lý và các tình huống sử dụng thông thường không cần nhiều.

Khi bạn bắt đầu nhận được các kiến ​​trúc lớn hơn cần chạy đầy đủ trên các hệ điều hành, thì RAM trở nên cực kỳ quan trọng, tuy nhiên, điều này thoát khỏi vương quốc của các bộ vi điều khiển và vào các máy tính nhúng giống như các máy tính bạn thấy trong các bảng Beaglebone và Raspberri ngày Và ngay cả ở giai đoạn này, các bộ xử lý rất phức tạp và có đầy đủ các tính năng đến mức chúng không có chỗ cho dung lượng RAM cần thiết cho nhiệm vụ của chúng nên bộ nhớ ngoài rất cần thiết để chúng hoạt động.

CHỈNH SỬA:

Là một giai thoại cá nhân, gần đây tôi đã tạo ra một bảng điều khiển robot tự trị nhỏ với mục đích sử dụng nó cho tầm nhìn máy tính có độ phân giải thấp như phát hiện chuyển động và theo dõi đối tượng và theo dõi. Tôi đã chọn ARM Cortex M3 có số pin thấp cho nhiệm vụ này và trong khi xem xét lựa chọn bộ xử lý dòng SAM3 của Atmel, tôi thực sự đã tìm RAM cao nhất tôi có thể tìm thấy - vì trong trường hợp này tôi không muốn mua IC RAM ngoài do không gian bo mạch và không muốn sự phức tạp của bus bộ nhớ RAM tốc độ cao trên PCB. Trong trường hợp này đối với ứng dụng cụ thể của tôi, tôi rất muốn có tùy chọn RAM nhiều hơn 100 KB nếu có thể.


điểm tốt tôi thậm chí không nghĩ về mức tiêu thụ năng lượng ...
Người chơi Grady

4
"và RAM không ổn định nhưng sử dụng rất nhanh, sử dụng năng lượng liên tục để giữ trạng thái" hầu như không có. Logic logic, bao gồm SRAM, sử dụng rất ít năng lượng khi không thay đổi trạng thái. Lưu ý rằng hầu hết các bộ vi điều khiển đều giữ lại nội dung RAM của chúng ngay cả khi ở chế độ giảm mức tiêu thụ cực thấp.
Chris Stratton

@ChrisStratton: Tôi đã thấy một số bộ vi điều khiển, từ một vài nhà sản xuất khác nhau, với các chế độ tắt một số RAM của họ để tiết kiệm năng lượng, mặc dù hơi khó chịu những cái mà tôi thấy không cho phép RAM được cấp nguồn không cần thiết lập lại hệ thống. Không chắc mục đích của hạn chế sau này là gì; Nếu tôi cần một lượng lớn RAM để lưu trữ tạm thời trong một số hoạt động nhất định, nhưng không thì, tôi không hiểu tại sao tôi không thể bật nguồn khi cần và tắt khi không, nhưng tôi không thấy như vậy đặc tính.
supercat

14

Bên cạnh những điểm tuyệt vời được đưa ra trong các câu trả lời khác, một lý do khác cho RAM bị giới hạn là kiến ​​trúc của vi điều khiển. Ví dụ: lấy Microchip PIC10LF320, chỉ có 448 byte bộ nhớ chương trình (flash) và 64 byte RAM. Nhưng nó có thể chỉ có giá 25ȼ (hoặc ít hơn) với số lượng lớn. Kích thước giới hạn của từ lệnh PIC10 (12 bit) cho phép nó chỉ giải quyết trực tiếp 128 byte RAM.

Tôi chắc chắn có những bộ vi điều khiển khác ngoài kia chỉ có một bus địa chỉ 8 bit, giới hạn chúng ở mức 256 byte RAM.

Nhưng hầu hết các bộ vi điều khiển tầm trung (ngay cả những bộ có đường dẫn dữ liệu 8 bit), đều có bus địa chỉ 16 bit. Một xem xét kiến ​​trúc chính cho các chip này là liệu chip sử dụng kiến trúc Harvard hay Von Neumann .

Hầu hết các bộ vi điều khiển sử dụng kiến ​​trúc Harvard, có các không gian địa chỉ 16 bit riêng biệt cho bộ nhớ chương trình, RAM và địa chỉ I / O được ánh xạ bộ nhớ. Vì vậy, đối với những điều này, bus địa chỉ 16 bit có thể truy cập tới 64K (65.536) byte RAM. Vẫn còn một giới hạn 64K được đặt bởi kiến ​​trúc, và nếu một người muốn vượt lên trên thì phải sử dụng một số loại phân trang. Việc phân trang cho không gian chương trình thay vì không gian RAM là điều phổ biến hơn nhiều.

Các bộ vi điều khiển sử dụng kiến ​​trúc Von Neumann, chẳng hạn như dòng Freescale HCS08, chỉ có một không gian địa chỉ được phân chia giữa bộ nhớ chương trình, RAM và I / O được ánh xạ bộ nhớ. Để có dung lượng chương trình hợp lý, điều này giới hạn dung lượng RAM ở mức 4K hoặc 8K thông thường. Một lần nữa, người ta có thể sử dụng phân trang để tăng dung lượng RAM hoặc chương trình có sẵn.


1
Mặc dù vậy, bạn phải nhớ rằng lõi PIC hoàn toàn không có mã, nó sẽ tiêu tốn rất nhiều đèn flash bổ sung mà không có gì. Và một lý do khiến nó không cần nhiều RAM, bởi vì nó có những hạn chế nghiêm trọng, ví dụ như độ sâu ngăn xếp cuộc gọi.
Lundin

@Lundin Đồng ý, bạn khá nhiều phải lập trình PIC10 và PIC12 gốc bằng ngôn ngữ lắp ráp, rất cẩn thận . Các thiết bị PIC12F và PIC16F mới hơn hiện có ngăn xếp phần cứng 16 cấp và 14 hướng dẫn mới. một số được thêm vào chỉ dành cho C, vì vậy chúng có thể sử dụng được nhiều hơn.
tcrosley

@Lundin: Các chip PIC có độ dài lệnh 12 và 14 bit khá tốt cho mật độ mã tôi nghĩ. PIC18F là mật độ mã thực sự có xu hướng giảm khi sử dụng trình biên dịch HiTech do số lượng chuyển đổi ngân hàng quá mức thường được yêu cầu.
supercat

7

Đã làm việc với các bộ vi điều khiển và các hệ thống nhỏ trong một thời gian tốt, tôi muốn chỉ ra rằng thường rất ít RAM là cần thiết. Hãy nhớ rằng mặc dù MCU có thể có khả năng hoàn thành rất nhiều, xu hướng ngày nay là sử dụng nhiều MCU hơn trước đây và sử dụng nhiều trong số chúng để phân phối nhiều nhiệm vụ trong các hệ thống lớn hơn. Điều này kết hợp với thực tế là không giống như các hệ thống phát triển cồng kềnh cần thiết để lập trình trong Windows, phát triển MCU thường sử dụng các trình biên dịch được tối ưu hóa rất tốt, thường là với mã nguồn C và C ++ rất hiệu quả, đôi khi không có chút chi phí nào cho hệ điều hành. Mặc dù bạn hiếm khi có thể viết chương trình Windows để hiển thị tên của mình trên bất kỳ thiết bị nào mà không tiêu tốn ít nhất hàng trăm kilobyte bao gồm cả tài nguyên hệ điều hành,

Chắc chắn, có những vấn đề chi phí và không gian như những người khác đã chỉ ra. Nhưng lịch sử ở đây là những người được coi là một lượng nhỏ RAM của những người mới đến ngày nay thực sự là khá nhiều hơn bao giờ hết, và tất cả các thành phần và thiết bị mà MCU sẽ cần để giao tiếp trở nên thông minh hơn. Thành thật mà nói, việc sử dụng RAM lớn nhất của tôi trong nhiều ứng dụng MCU gần đây là dành cho bộ đệm truyền thông bị gián đoạn, để giải phóng MCU cho các tác vụ khác mà không sợ mất dữ liệu. Nhưng tin hay không, đối với logic thông thường và chức năng tính toán, MCU khá phù hợp với tài nguyên RAM và flash được giới hạn của chúng và bạn thực sự có thể làm được rất nhiều với rất ít.

Hãy nhớ rằng ngày xưa, các trò chơi Video nổi tiếng với đồ họa thô sơ nhưng logic trò chơi phức tạp như "PAC Man" và "Kẻ xâm lược không gian" thường được thực hiện trong 8K ROMS, trên các máy chỉ có RAM 8 hoặc 16 KB!


Còn thẻ SD thì sao? Thẻ SDHC không yêu cầu bộ đệm 256 hoặc 512 byte (thẻ SD tiêu chuẩn / cũ không còn được sản xuất)?
Peter Mortensen

Phiên bản Pac Man cho Hệ thống máy tính video Atari 2600 là ROM 4K và bản thân VCS có 128 byte RAM. Tuy nhiên, nhiều máy arcade có một khối ROM và RAM khá tốt, so với các máy tính gia đình thời đại. Tôi nghĩ rằng Defender, chẳng hạn, có 32K hoặc ROM và 64K RAM, mặc dù 32K RAM là "chỉ ghi" theo quan điểm của CPU (bộ xử lý sẽ đưa dữ liệu vào đó phần cứng màn hình sẽ hiển thị trên màn hình) .
supercat

@PeterMortensen Nhiều thẻ SD có CPU tích hợp một số loại để quản lý đèn flash. Một số thẻ có lõi ARM 32 bit đầy đủ có khả năng có 16 hoặc 32K RAM được gắn vào nó.
alex.forencich

@ alex.forencich: Có, nhưng không phải giao diện SPI để vận hành thẻ SD SDHC yêu cầu bộ đệm ở phía máy chủ (hệ thống nhúng / vi điều khiển) - trái ngược với các thẻ cũ hơn? Đó là, địa chỉ bit không còn có thể cho các thẻ (SDHC) mới hơn? Hoặc nó chỉ phụ thuộc vào hệ thống tập tin (địa chỉ bit vẫn có thể)? Không phải các thẻ mới hơn yêu cầu chuyển khối (và do đó yêu cầu bộ đệm 256 hoặc 512 byte)?
Peter Mortensen

Có, 512B, nếu tôi nhớ lại. Bạn chỉ có thể viết trình điều khiển thẻ SD không hiệu quả, để loại bỏ X byte dữ liệu đầu tiên -> không cần bộ đệm "lớn".
Domen

3

Bên cạnh những điểm tuyệt vời về chi phí và sản xuất, có rất ít nhu cầu về rất nhiều RAM trên chip.

Tôi thường làm việc với các bộ vi điều khiển có đèn flash trong hàng chục kB (16kB, 32kB) và RAM trong phạm vi kB (1kB, 2kB). Tôi rất thường xuyên hết flash và gần như không bao giờ hết RAM. Trong hầu hết các dự án của tôi, tôi khá gần với giới hạn flash, nhưng thường cần ít hơn 20% RAM.

Hầu hết các vi điều khiển rất nhỏ có hai loại vai trò khác nhau:

  • quy định và kiểm soát: họ phải điều khiển một bộ phận của máy móc. Ngay cả trong trường hợp thuật toán điều khiển phức tạp, có thể chiếm hàng chục kB không gian mã, rất ít RAM được yêu cầu. Bạn đang kiểm soát một quá trình vật lý và có các biến chứa một vài đơn vị vật lý và có thể một vài biến là bộ đếm vòng lặp. Không cần thêm.

  • xử lý dữ liệu: trong trường hợp hiếm hoi bạn cần lưu trữ một lượng lớn dữ liệu cùng một lúc, bạn có thể sử dụng RAM ngoài. Khá nhiều tất cả các vi điều khiển hiện đại có hỗ trợ riêng cho nó. Nếu bạn cần một chương trình đơn giản sử dụng nhiều bộ nhớ, sẽ rẻ hơn và nhỏ hơn khi sử dụng một vi điều khiển nhỏ và RAM ngoài, thay vì một vi điều khiển cấp cao. Không ai sản xuất bộ điều khiển với ít cổng, đèn flash nhỏ và RAM lớn, vì có quá ít nhu cầu cho chúng.


2

Tất cả các lý do đã được đề cập là, tất nhiên, có giá trị kỹ thuật và chính xác. Tuy nhiên, đừng quên thiết bị điện tử là một doanh nghiệp và MCU là một trong những thị trường thích hợp cạnh tranh nhất trong ngành công nghiệp điện tử.

Tôi dám nói lý do thực tế để liên kết thẻ giá của MCU với số lượng SRAM nhúng chủ yếu là lý do tiếp thị, không phải lý do chi phí:

  • Trong hầu hết các thiết kế, tần số đồng hồ đạt được tối đa không phải là yếu tố giới hạn. Thay vào đó, số lượng SRAM có sẵn là. Đừng hiểu sai ý tôi, tần số CPU cực kỳ quan trọng, tuy nhiên, trong một phân khúc gia đình MCU nhất định , bạn thường không được cung cấp các mẫu thiết bị khác nhau với các mức giá khác nhau dựa trên tần số CPU tối đa. Ngoài ra, lưu trữ chương trình Flash là yếu tố hạn chế chính khác, tuy nhiên, tôi sẽ không tập trung quá nhiều vào Flash (câu hỏi được chuyển trực tiếp đến SRAM).

  • Lượng SRAM khả dụng có liên quan trực tiếp đến mức độ phức tạp mà bạn sẽ có thể nhúng vào MCU của mình, có thể là với các thư viện bên thứ ba hoặc với mã được triển khai của riêng bạn. Vì vậy, đây là một số liệu "tự nhiên" để phân khúc dựa trên giá MCU của bạn. Một khách hàng kỹ thuật có thể chấp nhận rằng MCU có khả năng thực hiện các nhiệm vụ phức tạp hơn (nhiều SRAM hơn, lưu trữ Flash nhiều hơn) sẽ có giá cao hơn. Giá, ở đây, là một phản xạ của giá trị cơ bản (khả năng cung cấp) của MCU. Bộ nhớ flash thường được cung cấp theo tỷ lệ thuận với SRAM.

  • Ngược lại, nếu bạn tham gia thị trường CPU máy tính để bàn và thiết bị di động, bạn thường không có thể cung cấp một MCU / CPU cụ thể với nhiều kích cỡ SRAM khác nhau. Thay vào đó, lược đồ giá thường được xây dựng dựa trên khả năng thực thi / hiệu năng của MCU / CPU: tần số, số lõi, hiệu suất năng lượng ...


Tôi nghĩ rằng điều này có thể chính xác, nhưng có bằng chứng? Giống như vạch ra dấu vết để bán chip a như chip b?
Người chơi Grady

Uhm ... suy nghĩ thú vị. Tôi không có bằng chứng về thực hành như vậy. Tuy nhiên, nó mang lại một câu hỏi thú vị về chi phí sản xuất cơ bản. Nó sẽ đắt hơn bất động sản lãng phí của chip silicon (wafer) trong trường hợp có chip kích thước SRAM cao hơn bị trầy xước với kích thước SRAM ít hơn? Hoặc chi phí sản xuất và hàng tồn kho tăng lên liên quan đến sản xuất không phải một thiết bị mà là hai? Tôi e rằng toàn bộ ngành công nghiệp điện tử rất kén chọn về việc công khai thảo luận về chi phí của họ. Chúng tôi có thể không bao giờ biết điều đó.
jose.angel.jimenez

1
Bằng chứng: MT6250 là chip đa chết, được sử dụng cho điện thoại chip đơn, có giá dưới 2 đô la về khối lượng và phức tạp hơn nhiều so với mcu, và bao gồm một sram die 8 MB. Nó sẽ không đáng để chế tạo, sử dụng tương tự công nghệ mAM giàu SRAM.
hulkingtickets

Đây sẽ là một câu trả lời tốt cho "tại sao thẻ giá của MCU được liên kết với lượng SRAM được nhúng?". Nhưng nó dường như không trả lời câu hỏi ban đầu. Tại sao có quá ít bộ vi điều khiển có sẵn với hơn 512 KB SRAM trên chip, với bất kỳ giá nào? Tại sao có quá nhiều bộ vi điều khiển với kích thước SRAM "kỳ lạ" không có công suất 2, khi các nhà sản xuất chip SRAM chuyên dụng dường như nghĩ rằng chi phí lưu kho giảm khiến nó chỉ đáng sản xuất chip SRAM chuyên dụng ở kích cỡ 2 cấp?
davidcary

1

Vì vậy, trước tiên bạn phải xem xét rằng 16 KB hoặc 32 KB là một bộ nhớ khổng lồ và hầu hết các bộ vi điều khiển được bán ngày nay không có lượng RAM lớn như vậy.

Nhiều chương trình vi điều khiển cần bộ nhớ 10 hoặc 50 byte. Thậm chí những thứ phức tạp hơn cần chủ yếu trong hàng trăm Byte.

Về cơ bản, có ba trường hợp sử dụng mà bạn cần RAM theo thứ tự KByte: a) Khi vi điều khiển của bạn làm đồ họa b) khi bạn sử dụng vi điều khiển để tính toán tùy ý lớn c) khi bạn giao tiếp với giao diện PC

Thứ hai xin lưu ý rằng nếu bạn nói về RAM vi điều khiển, bạn sẽ nói về bộ đệm cấp 0 / cấp 1. Nếu bạn cho rằng Intel Haswell có "chỉ" 64 KByte của bộ đệm cấp 1, bạn sẽ xem xét lại kích thước RAM của vi điều khiển.

Thứ ba, bạn có thể gắn bất kỳ lượng RAM ngoài nào vào vi điều khiển, đặc biệt là nhiều hơn mức bạn có thể gắn vào CPU.

Cá nhân tôi đang phát triển nhiều ứng dụng vi điều khiển và tôi không bao giờ cần 1 KB bộ nhớ hay thậm chí nhiều hơn. Tôi cũng không bao giờ sử dụng RAM ngoài.

Mọi thứ sẽ khác nếu chúng ta đến với ROM (Flash ngày nay), vì chương trình và dữ liệu của bạn nằm trong ROM. Có rất nhiều ứng dụng mà bạn gắn ROM ngoài vào vi điều khiển của mình, vì bạn có nhiều dữ liệu.

Hãy xem xét một ví dụ: Hãy phân tích một ứng dụng vi điều khiển và chúng tôi lấy một máy nghe nhạc MP3 cầm tay có màn hình và 4 Gigabyte Flash.

Đối với ứng dụng này, bạn cần khoảng 1 KB RAM. Thế là đủ để thực hiện công việc. Tuy nhiên, bạn có thể sử dụng thêm một số RAM cho bộ đệm lớn hơn để tăng tốc độ ghi USB sang Flash.

Bây giờ bạn sẽ thấy sự khác biệt: Một PC thông thường chứa tất cả các chương trình và dữ liệu trong RAM. Do đó, nó cần rất nhiều RAM. Đối với vi điều khiển, đây là tất cả trong Flash / ROM.


2
Bạn đánh giá thấp việc sử dụng RAM trong nhiều ứng dụng. Không phải bởi một số tiền lớn, nhưng có thể theo hệ số 10 - 100 tùy vào trường hợp. Máy nghe nhạc MP3 phải xử lý tín hiệu số.
Jason S

Tôi muốn biết tại sao một trong hai bạn nói những điều này. Những loại lệnh C yêu cầu RAM. Thay vì nói "các ứng dụng này cần nhiều RAM hơn", tôi thích "các hoạt động này cần nhiều RAM hơn, bởi vì ..."
Frederick

-1

Trong khi thiết kế MCU, bạn phải đối mặt với các điều kiện không quan trọng trên PC.

  1. Độ bền

    Để chọn các thành phần, bạn không nhất thiết phải sử dụng các bộ phận hiệu suất cao nhất hoặc / và hiệu suất cao nhất, nhưng những bộ phận đã được chứng minh là chạy đúng sau vài năm sử dụng, sẽ có sẵn trong vài năm và có khả năng chạy 24/7 trong năm Do tình huống này, nếu một bộ điều khiển có mặt trên thị trường trong vài năm, hoạt động tốt, nó dường như có RAM kém, so với tiêu chuẩn PC hiện nay. Nhưng dù sao, nó vẫn hoạt động tốt, và không cần phải thay thế, nếu kỹ thuật tốt.

  2. Không gian

    Các đơn vị vi xử lý theo nghĩa đen là micros. Bạn phải cắt giảm không gian cần thiết đến mức tối thiểu. Tất nhiên, bạn có thể nhận được 256 MB ở cùng dung lượng với chip 64 KB 10 năm tuổi. Đây là nơi số 1 đến điểm.

  3. Giá bán

    Không chỉ giá mua, mà còn tiêu thụ điện năng. Bạn không muốn thiết kế một MCU có quyền kiểm soát hệ thống nhập cảnh, cần 1000 W, nếu đối thủ của bạn trong kinh doanh có một cái chỉ cần 25 W. Và tất nhiên, giá mua rẻ hơn (với cùng chất lượng) là luôn luôn tốt hơn.


1
đó là một bộ vi xử lý năng lượng thực sự cao!
KyranF

2
Tôi đoán MCU 1kW sẽ không ở trạng thái rắn lâu.
Dan Bryant

1
Tất cả ba điểm là cực kỳ quan trọng trong thiết kế PC ngày nay.

@KyranF: Có, chia cả hai số cho 100. Nhưng nếu có bất cứ điều gì, anh ấy đã nhấn mạnh sự khác biệt về năng lượng tương đối giữa bộ xử lý hiệu suất cao và bộ vi điều khiển công suất thấp cho các ứng dụng pin.
Ben Voigt
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.