เหตุใดไมโครคอนโทรลเลอร์จึงมี RAM น้อยมาก


39

บางทีนี่อาจเป็นปัญหาของการรับรู้มากกว่า แต่ดูเหมือนว่าไมโครคอนโทรลเลอร์จะก้าวไปข้างหน้าอย่างก้าวกระโดดในช่วง 20 ปีที่ผ่านมาในเกือบทุกเรื่องความเร็วสัญญาณนาฬิกาที่สูงขึ้นอุปกรณ์ต่อพ่วงที่มากขึ้นการแก้จุดบกพร่องง่ายขึ้น

ยังคงเป็นเรื่องปกติที่จะเห็น RAM ในช่วง 10 KB (16/32 KB)

ดูเหมือนจะไม่เป็นปัญหาเรื่องราคาหรือขนาดโดยตรง มันเป็นปัญหาของความซับซ้อนกับตัวควบคุม RAM สูงกว่าเกณฑ์หรือไม่?

หรือเป็นเพียงแค่ว่ามันไม่จำเป็นโดยทั่วไป?

เมื่อมองดูส่วนของเมทริกซ์ที่ซัพพลายเออร์ทางอินเทอร์เน็ตที่ได้รับความนิยมฉันเห็นCortex M4หนึ่งตัวที่มีขนาด 256 KB น้อยกว่า US $ 8 และอีกไม่กี่ดอลลาร์คุณจะได้พบกับ ROMless อีกสองสามตัว แต่ดูเหมือนว่า ...

ฉันไม่จำเป็นต้องมีไมโครคอนโทรลเลอร์ที่มีพื้นที่จัดเก็บข้อมูลระเหยได้ แต่ดูเหมือนว่าบางคนอาจจะ ...


8
อาจมีเหตุผลทางเทคนิคมากกว่า แต่สำหรับฉันดูเหมือนว่ามันอาจเป็นคำถามของตลาด คุณใช้ไมโครคอนโทรลเลอร์เมื่อคุณมีแอปพลิเคชันที่ใช้เมื่อคุณต้องการพลังงานมากกว่าปกติคุณจะย้ายไปที่ระบบฝังตัวที่สมบูรณ์ยิ่งขึ้น
Jarrod Christman

15
10 วินาทีของ kB มันใหญ่มาก ไมโครคอนโทรลเลอร์ของฉันสู่การใช้ในการสร้างต้นแบบมีRAM 68 ไบต์ : en.wikipedia.org/wiki/PIC16x84
slebetman

2
ฉันเคยเขียน rasterizer ซอฟต์แวร์ 3 มิติใน 86B บน Arduino ด้วย 2KB RAM มันทำให้ฉันอารมณ์เสียเพราะถ้าฉันมีแม้กระทั่ง 10KB หรือ 50KB ฉันก็สามารถเริ่มสร้างแบบจำลองจริงในหน่วยความจำและทำสิ่งที่น่าสนใจได้จริง ๆ "ฉันมีคำถามเดียวกันนี้ในเวลาเดียวกันและฉันไม่คิดว่าคำตอบปัจจุบัน พูดได้ดีพอ ใช่ SRAM มีราคาแพง - แต่ CPU มีแคชเมกะไบต์ที่ทำจาก SRAM แต่ก็ยังค่อนข้างถูก รู้สึกเหมือนเป็นข้ออ้างง่อย
imallett

2
@slebetman ด้วยเหตุผลใดก็ตามที่คุณชอบ micro อายุ 20 ปีเมื่ออุปกรณ์ที่ดีกว่านี้มีให้ใช้อย่างแพร่หลายและราคาถูกกว่า?
เครื่องหมาย

3
it seems like somebody mightเป็นที่จับที่นี่คนส่วนใหญ่ทำไม่ได้ คุณไม่ได้ส่งกระแสข้อมูล Netflix บนชิปนั้นอย่างแน่นอนและ 64K นั้นมากเกินพอสำหรับทุกสิ่งที่คุณต้องทำด้วยไมโครคอนโทรลเลอร์ ถ้าคุณต้องการที่จะสูงขึ้นรับคอมพ์เป่าเต็มเช่นราสเบอร์รี่
TC1

คำตอบ:


44

มีหลายสาเหตุนี้.

ก่อนอื่นหน่วยความจำกินพื้นที่ของซิลิคอนเป็นจำนวนมาก ซึ่งหมายความว่าการเพิ่มจำนวนแรมโดยตรงจะเพิ่มพื้นที่ซิลิคอนของชิปโดยตรงและด้วยค่าใช้จ่าย พื้นที่ซิลิกอนที่ใหญ่กว่านั้นมีผลกระทบต่อราคาเป็นสองเท่าชิปขนาดใหญ่หมายถึงชิปที่น้อยกว่าต่อเวเฟอร์โดยเฉพาะบริเวณขอบและชิปที่ใหญ่กว่าหมายความว่าแต่ละชิปมีแนวโน้มที่จะเกิดข้อบกพร่อง

ประการที่สองคือปัญหาของกระบวนการ หน่วยความจำ RAM ควรได้รับการปรับให้เหมาะสมในรูปแบบที่แตกต่างจากตรรกะและเป็นไปไม่ได้ที่จะส่งส่วนต่าง ๆ ของชิปเดียวกันผ่านกระบวนการที่แตกต่างกัน - ชิปทั้งหมดจะต้องผลิตด้วยกระบวนการเดียวกัน มีฐานรากเซมิคอนดักเตอร์ที่ทุ่มเทมากหรือน้อยในการผลิต DRAM ไม่ใช่ซีพียูหรือตรรกะอื่น ๆ เพียงแค่ตั้ง DRAM ให้ตรง DRAM ต้องการตัวเก็บประจุที่มีประสิทธิภาพในพื้นที่และทรานซิสเตอร์รั่วไหลต่ำมาก การทำให้ตัวเก็บประจุต้องใช้กระบวนการพิเศษ การทำให้ทรานซิสเตอร์รั่วไหลต่ำส่งผลให้ทรานซิสเตอร์ช้าลงซึ่งเป็นการแลกเปลี่ยนที่ดีสำหรับอุปกรณ์อิเล็กทรอนิกส์ที่อ่านได้ของ DRAM แต่จะไม่ดีสำหรับการสร้างตรรกะประสิทธิภาพสูง การผลิต DRAM บนไมโครคอนโทรลเลอร์ Die หมายถึงคุณจะต้องทำการแลกเปลี่ยนกระบวนการปรับให้เหมาะสมอย่างใด อาเรย์แรมขนาดใหญ่มีแนวโน้มที่จะพัฒนาข้อผิดพลาดได้ง่ายเนื่องจากพื้นที่ขนาดใหญ่ลดผลตอบแทนและต้นทุนที่เพิ่มขึ้น การทดสอบ RAM ขนาดใหญ่นั้นใช้เวลานานและการรวมอาร์เรย์ขนาดใหญ่จะช่วยเพิ่มค่าใช้จ่ายในการทดสอบ นอกจากนี้การประหยัดจากขนาดยังช่วยลดค่าใช้จ่ายของชิปแรมแยกต่างหากมากกว่าไมโครคอนโทรลเลอร์พิเศษ

การใช้พลังงานเป็นอีกเหตุผลหนึ่ง แอ็พพลิเคชันแบบฝังจำนวนมากมีข้อ จำกัด ด้านพลังงานและเป็นผลให้ไมโครคอนโทรลเลอร์จำนวนมากถูกสร้างขึ้นเพื่อให้สามารถเข้าสู่สถานะสลีปพลังงานต่ำมาก เพื่อเปิดใช้งานการนอนหลับที่ใช้พลังงานต่ำมาก SRAM ถูกใช้เนื่องจากความสามารถในการรักษาเนื้อหาด้วยการใช้พลังงานที่ต่ำมาก แบตเตอรี่ที่ได้รับการสนับสนุน SRAM สามารถคงสถานะไว้ได้นานหลายปีด้วยแบตเตอรี่ปุ่มขนาด 3V เพียงก้อนเดียว ในทางกลับกัน DRAM ไม่สามารถควบคุมสถานะได้นานกว่าเสี้ยววินาที ตัวเก็บประจุมีขนาดเล็กมากจนอุโมงค์อิเล็กตรอนหยิบออกมาและเข้าสู่พื้นผิวหรือรั่วไหลผ่านทรานซิสเตอร์เซลล์ เพื่อต่อสู้กับเรื่องนี้ DRAM จะต้องอ่านและเขียนอย่างต่อเนื่อง ด้วยเหตุนี้ DRAM จึงใช้พลังงานมากกว่า SRAM ที่ไม่ได้ใช้งานอย่างมีนัยสำคัญ

ด้านพลิกเซลล์บิต SRAM มีขนาดใหญ่กว่าเซลล์ DRAM บิตมากดังนั้นหากจำเป็นต้องใช้หน่วยความจำจำนวนมาก DRAM โดยทั่วไปจะเป็นตัวเลือกที่ดีกว่า นี่คือเหตุผลที่เป็นเรื่องธรรมดาที่จะใช้ SRAM จำนวนเล็กน้อย (kB ถึง MB) เป็นหน่วยความจำแคชบนชิปควบคู่ไปกับ DRAM นอกชิปจำนวนมาก (MB ถึง GB)

มีเทคนิคการออกแบบที่ยอดเยี่ยมมากที่ใช้เพื่อเพิ่มจำนวน RAM ที่มีอยู่ในระบบฝังตัวสำหรับค่าใช้จ่ายต่ำ บางแพคเกจเหล่านี้เป็นแพคเกจหลายชิปที่มีแม่พิมพ์แยกต่างหากสำหรับโปรเซสเซอร์และ RAM โซลูชันอื่น ๆ เกี่ยวข้องกับการผลิตแผ่นอิเล็กโทรดที่ด้านบนของแพคเกจซีพียูเพื่อให้ชิปแรมสามารถวางซ้อนกันอยู่ด้านบน วิธีแก้ปัญหานี้ฉลาดมากเพราะชิป RAM ที่แตกต่างกันสามารถบัดกรีที่ด้านบนของ CPU ขึ้นอยู่กับจำนวนหน่วยความจำที่ต้องการโดยไม่จำเป็นต้องมีการกำหนดเส้นทางระดับบอร์ดเพิ่มเติม (บัสหน่วยความจำกว้างมากและกินพื้นที่บอร์ดมาก) โปรดทราบว่าระบบเหล่านี้มักจะไม่ถือว่าเป็นไมโครคอนโทรลเลอร์

ระบบฝังตัวที่มีขนาดเล็กมากจำนวนมากไม่ต้องการ RAM มาก หากคุณต้องการ RAM จำนวนมากคุณอาจต้องการใช้ตัวประมวลผลระดับสูงที่มี DRAM ภายนอกแทน SRAM แบบออนบอร์ด


ฉันได้เห็น RAM ICs ที่เกิดขึ้นจริงพร้อมขาและทุกอย่างที่ติดตั้ง / วางไว้ด้านบนของโปรเซสเซอร์ (ซึ่งเป็นแพ็คเกจ BGA) และส่งไปยังพวกเขา! สิ่งที่เราทำเพื่อพื้นที่บอร์ด !! เมื่อรัสเซียชี้ให้เห็นถึงวิธีการออกแบบ TRIZ หากคุณมีพื้นที่ว่างใน X และ Y ให้ไปที่ Z :)
KyranF

2
+1 สำหรับความแตกต่างที่สำคัญระหว่าง SRAM และ DRAM SRAM นั้นทั้งเร็วขึ้นและประหยัดพลังงานมากขึ้นโดยเฉพาะเมื่อไม่ได้ใช้งาน แต่อย่างที่คุณทราบราคาแพงกว่ามากและต้องใช้พื้นที่มากขึ้น
fizzle

ฉันไม่คิดว่า SRAM เป็น RAM ที่แพงที่สุด การรวมกันของ flip flops และ multiplexers สามารถใช้เป็นหน่วยความจำเข้าถึงโดยสุ่มซึ่งจะให้ประสิทธิภาพที่ดีกว่า SRAM แต่มีต้นทุนซิลิคอนที่สูงกว่ามาก ความทรงจำดังกล่าวมักจะไม่ใหญ่กว่าคำประมาณ 32 คำ แต่หน่วยความจำดังกล่าวสามารถรองรับการอ่านและเขียนพร้อมกันในลักษณะที่ SRAM ไม่สามารถทำได้
supercat

1
จริงลงทะเบียนไฟล์และ flip-flop ราคาแพงกว่า SRAM แต่มันไม่ได้ใช้สำหรับหน่วยความจำระบบทั่วไป
alex.forencich

1
ฉันเห็นเซิร์ฟเวอร์ HTTP ที่ใช้งานได้บน MCU ที่มี SRAM ขนาด 160kB และไม่มี DRAM ภายนอก มันไม่สามารถจัดการการเชื่อมต่อแบบขนานจำนวนมาก แต่ใช้งานได้
Jan Dorniak

15

หน่วยความจำอาจใช้พื้นที่ซิลิคอนมากที่สุดและ RAM ที่ใช้งานอย่างรวดเร็วนั้นผันผวนและใช้พลังงานอย่างต่อเนื่องเพื่อรักษาสถานะไว้ ถ้าคุณต้องการ RAM จำนวนมากก็ไม่ได้มีประโยชน์สำหรับหลายโปรแกรมอื่น ๆ หากผู้ออกแบบระบบฝังตัวต้องการ RAM เพิ่มขึ้นพวกเขาจะได้รับชิป RAM ภายนอกและใช้อินเตอร์เฟสหน่วยความจำส่วนต่อพ่วงที่ไมโครคอนโทรลเลอร์มักจะมีอยู่ทุกวันนี้เพื่อการขยายหน่วยความจำแบบพลักแอนด์เพลย์ที่ง่ายมาก นั่นคือเหตุผลที่ฉันเห็นว่าทำไมไมโครคอนโทรลเลอร์โดยทั่วไปยังมี RAM onboard ต่ำพอสมควรเพราะรหัสแอปพลิเคชันที่เหมาะสมและสถานการณ์การใช้งานตามปกติไม่จำเป็นต้องใช้มาก

เมื่อคุณเริ่มต้นใช้งานสถาปัตยกรรมขนาดใหญ่ที่จำเป็นต้องใช้ระบบปฏิบัติการเต็มรูปแบบ RAM ก็มีความสำคัญอย่างยิ่งอย่างไรก็ตามสิ่งนี้ได้ออกมาจากขอบเขตของไมโครคอนโทรลเลอร์และเข้าสู่คอมพิวเตอร์ฝังตัวเช่นเดียวกับที่คุณเห็นในกระดาน Beaglebone และ Raspberri Pi เหล่านี้ วัน และแม้ในขั้นตอนนี้โปรเซสเซอร์มีความซับซ้อนและเต็มไปด้วยคุณสมบัติที่ไม่มีพื้นที่สำหรับ RAM ที่จำเป็นสำหรับงานของพวกเขาดังนั้นหน่วยความจำภายนอกจึงค่อนข้างจำเป็นสำหรับพวกเขาในการทำงานเลย

แก้ไข:

ในฐานะที่เป็นเรื่องส่วนตัวฉันเพิ่งทำบอร์ดควบคุมหุ่นยนต์อัตโนมัติขนาดเล็กโดยมีจุดประสงค์เพื่อใช้ในการมองเห็นคอมพิวเตอร์ความละเอียดต่ำเช่นการตรวจจับการเคลื่อนไหวและการติดตามวัตถุและการติดตาม ฉันเลือก ARM Cortex M3 ที่มีจำนวนพินต่ำสำหรับงานนี้และในขณะที่ดู Atmel's series SAM3 series processor ของฉันฉันไปหา RAM สูงสุดที่ฉันสามารถหาได้ - เพราะในกรณีนี้ฉันไม่ต้องการซื้อ RAM IC ภายนอก เนื่องจากพื้นที่บอร์ดและไม่ต้องการความซับซ้อนของบัสหน่วยความจำแรมความเร็วสูงบน PCB ในกรณีนี้สำหรับแอปพลิเคชันเฉพาะของฉันฉันจะชอบมากที่มีตัวเลือก RAM มากกว่า 100 KB ขึ้นไปถ้าเป็นไปได้


จุดที่ดีฉันไม่ได้คิดเกี่ยวกับการใช้พลังงาน ...
ผู้เล่นเกรดี้

4
"และแรมมีความผันผวน แต่ใช้งานได้รวดเร็วใช้พลังงานอย่างต่อเนื่องเพื่อรักษาสถานะ" ตรรกะ CMOS, SRAM ที่รวมอยู่นั้นใช้พลังงานน้อยมากเมื่อไม่เปลี่ยนสถานะ โปรดสังเกตว่าไมโครคอนโทรลเลอร์ส่วนใหญ่เก็บเนื้อหา RAM ไว้แม้ว่าจะอยู่ในโหมดปิดการใช้พลังงานต่ำมาก
Chris Stratton

@ChrisStratton: ฉันเห็นไมโครคอนโทรลเลอร์จำนวนหนึ่งจากผู้ผลิตหลายรายด้วยโหมดที่ปิดRAM บางส่วนเพื่อประหยัดพลังงานแม้ว่าจะน่ารำคาญกว่าที่ฉันเห็นไม่อนุญาตให้ใช้ RAM โดยไม่ต้องรีเซ็ตระบบ ไม่แน่ใจว่าจุดประสงค์ของข้อ จำกัด หลังนั้นคืออะไร ถ้าฉันต้องการ RAM ขนาดใหญ่สำหรับการจัดเก็บชั่วคราวในระหว่างการดำเนินการบางอย่าง แต่ไม่ใช่อย่างอื่นฉันไม่เห็นว่าทำไมฉันไม่สามารถเปิดเครื่องเมื่อจำเป็นและปิดเมื่อไม่ได้ แต่ฉันไม่เห็น ลักษณะ
supercat

14

นอกจากคำตอบที่ยอดเยี่ยมแล้วคำตอบอื่น ๆ อีกเหตุผลหนึ่งสำหรับ RAM ที่ จำกัด ก็คือสถาปัตยกรรมของไมโครคอนโทรลเลอร์ ตัวอย่างเช่นใช้ Microchip PIC10LF320 ซึ่งมีหน่วยความจำโปรแกรม (แฟลช) เพียง 448 ไบต์และRAM 64 ไบต์ แต่มันอาจมีราคาเพียง25ȼ (หรือน้อยกว่า) ในปริมาณมาก ขนาดที่ จำกัด ของคำแนะนำการใช้งาน PIC10 (12 บิต) อนุญาตให้เฉพาะที่อยู่ของ RAM ขนาด 128 ไบต์เท่านั้น

ฉันแน่ใจว่ามีไมโครคอนโทรลเลอร์อื่น ๆ ที่นั่นมีบัสแอดเดรส 8 บิตเท่านั้นซึ่ง จำกัด ไว้ที่ 256 ไบต์ของ RAM

แต่ไมโครคอนโทรลเลอร์ระดับกลางส่วนใหญ่ (แม้แต่ผู้ที่มีพา ธ ข้อมูล 8 บิต) มีบัสแอดเดรส 16 บิต ข้อพิจารณาทางสถาปัตยกรรมที่สำคัญสำหรับชิปเหล่านี้คือว่าชิปใช้สถาปัตยกรรมฮาร์วาร์ดหรือฟอนนอยมันน์หรือไม่

ไมโครคอนโทรลเลอร์ส่วนใหญ่ใช้สถาปัตยกรรมของฮาร์วาร์ดซึ่งมีช่องว่างที่อยู่ 16 บิตแยกต่างหากสำหรับหน่วยความจำของโปรแกรม, RAM และที่อยู่ I / O ที่แมปหน่วยความจำ ดังนั้นสำหรับบัสแอดเดรส 16 บิตสามารถเข้าถึง RAM 64K (65,536) ไบต์ ยังคงมีขีด จำกัด 64K ที่วางโดยสถาปัตยกรรมและหากใครต้องการที่จะไปให้สูงกว่านั้นจะต้องใช้การแบ่งหน้าบางประเภท เป็นเรื่องธรรมดามากที่จะมีการสลับหน้าสำหรับพื้นที่ของโปรแกรมแทนที่จะเป็นพื้นที่ RAM

ตัวควบคุมขนาดเล็กที่ใช้สถาปัตยกรรม Von Neumann เช่นสาย Freescale HCS08 มีพื้นที่ที่อยู่เพียงหนึ่งที่แบ่งระหว่างหน่วยความจำของโปรแกรม, RAM และ I / O ที่แมปหน่วยความจำ เพื่อให้มีพื้นที่โปรแกรมในปริมาณที่เหมาะสมสิ่งนี้จะ จำกัด ปริมาณ RAM ไว้ที่ 4K หรือ 8K โดยทั่วไป อีกครั้งหนึ่งสามารถใช้การเพจเพื่อเพิ่มโปรแกรมหรือพื้นที่ว่าง RAM


1
คุณต้องจำไว้ว่าคอร์ของ PIC นั้นไม่มีประสิทธิภาพในการใช้รหัสอย่างเต็มที่ดังนั้นมันจะใช้แฟลชเสริมจำนวนมากเพื่ออะไร และเหตุผลหนึ่งที่ไม่ต้องการ RAM จำนวนมากก็เพราะว่ามันมีข้อ จำกัด ที่รุนแรงเช่นการเรียกสแต็คความลึก
Lundin

@Lundin ตกลงคุณสวยมากมีการเขียนโปรแกรมเดิม pic10 และ PIC12 ในภาษาของการชุมนุมอย่างระมัดระวัง อุปกรณ์ PIC12F และ PIC16F ที่ใหม่กว่าตอนนี้มีสแต็กฮาร์ดแวร์ 16 ระดับและ 14 คำแนะนำใหม่ บางอย่างเพิ่มสำหรับ C ดังนั้นจึงมีประโยชน์มากขึ้น
tcrosley

@Lundin: ชิป PIC ที่มีความยาวการสอน 12 และ 14 บิตนั้นค่อนข้างดีสำหรับความหนาแน่นของรหัสที่ฉันคิด PIC18F นั้นเป็นความหนาแน่นของรหัสซึ่งมีแนวโน้มที่จะลดลงอย่างมากเมื่อใช้คอมไพเลอร์ HiTech เนื่องจากจำนวนเงินมากเกินไปของการเปลี่ยนธนาคารซึ่งจำเป็นต้องใช้โดยทั่วไป
supercat

7

เมื่อทำงานกับไมโครคอนโทรลเลอร์และระบบขนาดเล็กในขณะนี้ฉันต้องการที่จะชี้ให้เห็นว่าบ่อยครั้งที่จำเป็นต้องใช้ RAM น้อยมาก โปรดจำไว้ว่าแม้ว่า MCU อาจจะสามารถบรรลุข้อตกลงได้มาก แต่แนวโน้มในปัจจุบันก็คือการใช้ MCU จำนวนมากขึ้นเรื่อย ๆ ก่อนหน้านี้และเพื่อใช้งานเหล่านั้นมากขึ้นในการกระจายงานจำนวนมากในระบบขนาดใหญ่ สิ่งนี้รวมกับความจริงที่ว่าไม่เหมือนระบบการพัฒนาที่ต้องใช้โปรแกรมใน Windows การพัฒนา MCU มักจะใช้คอมไพเลอร์ที่ได้รับการปรับปรุงให้ดีที่สุดซึ่งส่วนใหญ่มักจะมีซอร์สโค้ด C และ C ++ ที่มีประสิทธิภาพมาก ในขณะที่คุณแทบจะไม่สามารถเขียนโปรแกรม Windows เพื่อแสดงชื่อของคุณบนอุปกรณ์ใด ๆ โดยไม่ต้องกินอย่างน้อยหลายร้อยกิโลไบต์รวมถึงทรัพยากรระบบปฏิบัติการ

แน่นอนว่ามีปัญหาเรื่องต้นทุนและพื้นที่อย่างที่คนอื่น ๆ ชี้ แต่ประวัติศาสตร์ในมือนี่คือสิ่งที่ถือว่าเป็นจำนวนน้อยแรมโดยผู้มาใหม่วันนี้เป็นจริงค่อนข้างน้อยกว่าที่เคยเป็นมาก่อนและในขณะที่ส่วนประกอบและอุปกรณ์ที่ MCU จะต้องเชื่อมต่อกับตัวเองอย่างชาญฉลาด จริงๆแล้วการใช้ RAM ที่ใหญ่ที่สุดของฉันในแอปพลิเคชั่น MCU จำนวนมากเมื่อเร็ว ๆ นี้มีไว้สำหรับบัฟเฟอร์การสื่อสารที่ขับเคลื่อนด้วยการขัดจังหวะเพื่อเพิ่ม MCU ให้กับงานอื่น ๆ แต่เชื่อหรือไม่ว่าสำหรับตรรกะธรรมดาและฟังก์ชันการคำนวณ MCU นั้นค่อนข้างเข้ากันได้ดีกับทรัพยากร RAM และแฟลชในตัวที่มีอยู่อย่าง จำกัด และคุณสามารถทำอะไรได้มากมายด้วยน้อยมาก

โปรดทราบว่ากาลครั้งหนึ่งวิดีโอเกมที่มีชื่อเสียงที่มีกราฟิกหยาบ แต่ตรรกะของเกมที่ซับซ้อนเช่น "PAC Man" และ "Space Invaders" มักทำภายใน 8K ROMS บนเครื่องที่แทบไม่มี RAM 8 หรือ 16 KB!


แล้วการ์ด SD ล่ะ? การ์ด SDHC ไม่ต้องการบัฟเฟอร์ขนาด 256 หรือ 512 ไบต์หรือไม่ผลิตการ์ด SD มาตรฐาน / เก่าอีกต่อไป?
Peter Mortensen

Pac Man รุ่นสำหรับระบบคอมพิวเตอร์วิดีโออาตาริ 2600 เป็น 4K ROM และ VCS เองมี RAM ขนาด 128 ไบต์ เครื่องอาเขตหลายเครื่องมี ROM และ RAM ค่อนข้างดีอย่างไรก็ตามเมื่อเทียบกับคอมพิวเตอร์ที่ใช้ในบ้านในยุคนั้น ฉันคิดว่า Defender เช่นมี 32K หรือ ROM และ 64K of RAM แม้ว่า 32K ของ RAM คือ "เขียนอย่างเดียว" จากมุมมองของ CPU (ตัวประมวลผลจะใส่ข้อมูลที่ฮาร์ดแวร์จอแสดงผลจะออกจากจอภาพ) .
supercat

@PeterMortensen การ์ด SD หลายตัวมีซีพียูในตัวเพื่อจัดการกับแฟลช การ์ดบางรุ่นมีแกน ARM แบบ 32 บิตที่น่าจะมี RAM 16 หรือ 32K ติดอยู่
alex.forencich

@ alex.forencich: ใช่ แต่ไม่ใช่อินเตอร์เฟส SPI สำหรับการใช้งานการ์ด SDHC SD ต้องใช้บัฟเฟอร์ที่ฝั่งโฮสต์ (ระบบฝังตัว / ไมโครคอนโทรลเลอร์) - ตรงกันข้ามกับการ์ดรุ่นเก่าหรือไม่ นั่นคือการระบุที่อยู่บิตเป็นไปไม่ได้อีกต่อไปสำหรับการ์ดรุ่นใหม่ (SDHC)? หรือมันขึ้นอยู่กับระบบไฟล์เท่านั้น (บิตยังคงเป็นไปได้ที่อยู่)? ไม่ใช่การ์ดที่ใหม่กว่านั้นต้องการการถ่ายโอนแบบบล็อก (และต้องมีบัฟเฟอร์ 256 หรือ 512 ไบต์) ใช่ไหม
Peter Mortensen

ใช่ 512B ถ้าฉันจำได้ คุณสามารถเขียนไดรเวอร์การ์ด SD ที่ไม่มีประสิทธิภาพเพื่อทิ้งข้อมูล X ไบต์แรก -> ไม่ต้องการบัฟเฟอร์ "ใหญ่"
domen

3

นอกเหนือจากจุดที่ยอดเยี่ยมเกี่ยวกับค่าใช้จ่ายและการผลิตแล้วยังมีความต้องการเล็กน้อยสำหรับ RAM บนชิปจำนวนมาก

ฉันมักจะทำงานกับไมโครคอนโทรลเลอร์พร้อมแฟลชในหน่วยสิบ kB (16kB, 32kB) และ RAM ในช่วง kB (1kB, 2kB) ฉันมักจะแฟลชหมดและแทบจะไม่หมด RAM ในโครงการส่วนใหญ่ของฉันฉันเข้าใกล้ขีด จำกัด แฟลชมาก แต่โดยปกติแล้วจะต้องการ RAM น้อยกว่า 20%

ไมโครคอนโทรลเลอร์ขนาดเล็กมากส่วนใหญ่มีบทบาทที่แตกต่างกันสองประเภท:

  • ระเบียบและการควบคุม: พวกเขาต้องควบคุมชิ้นส่วนของเครื่องจักร แม้ในกรณีของอัลกอริธึมควบคุมที่ซับซ้อนซึ่งอาจใช้พื้นที่โค้ดมากถึงสิบ kB จำเป็นต้องใช้ RAM น้อยมาก คุณอยู่ในการควบคุมของกระบวนการทางกายภาพและมีตัวแปรที่มีหน่วยทางกายภาพไม่กี่แห่งและอาจเป็นตัวแปรบางตัวที่เป็นตัวนับลูป ไม่จำเป็นต้องเพิ่มเติม

  • การประมวลผลข้อมูล: ในกรณีที่ไม่ค่อยเกิดขึ้นคุณจำเป็นต้องจัดเก็บข้อมูลจำนวนมากในเวลาเดียวกันคุณสามารถใช้ RAM ภายนอก ไมโครคอนโทรลเลอร์ที่ทันสมัยแทบทั้งหมดได้รับการสนับสนุนจากเจ้าของภาษา หากคุณต้องการโปรแกรมอย่างง่ายที่ใช้หน่วยความจำจำนวนมากจะมีราคาถูกลงและเล็กลงในการใช้ไมโครคอนโทรลเลอร์ขนาดเล็กและ RAM ภายนอกแทนที่จะเป็นไมโครคอนโทรลเลอร์ระดับสูง ไม่มีใครผลิตคอนโทรลเลอร์ที่มีพอร์ตน้อยแฟลชขนาดเล็กและ RAM ขนาดใหญ่เพราะมีความต้องการเพียงเล็กน้อยเท่านั้น


2

เหตุผลที่กล่าวถึงทั้งหมดนี้เป็นของหลักสูตรที่ถูกต้องทางเทคนิคและถูกต้อง อย่างไรก็ตามอย่าลืมอุปกรณ์อิเล็กทรอนิกส์เป็นธุรกิจและ MCU เป็นหนึ่งในตลาดที่มีการแข่งขันสูงที่สุดในอุตสาหกรรมอิเล็กทรอนิกส์

ฉันกล้าพูดถึงเหตุผลที่แท้จริงสำหรับการเชื่อมโยงป้ายราคาของ MCU กับจำนวน SRAM ที่ฝังอยู่ส่วนใหญ่เป็นเหตุผลทางการตลาดไม่ใช่เหตุผลด้านค่าใช้จ่าย:

  • ในการออกแบบส่วนใหญ่ความถี่สัญญาณนาฬิกาที่บรรลุได้สูงสุดไม่ใช่ปัจจัย จำกัด จำนวน SRAM ที่มีให้ใช้แทน อย่าเข้าใจฉันผิดความถี่ของ CPU มีความสำคัญอย่างมากอย่างไรก็ตามภายในส่วนตระกูล MCU บางกลุ่มคุณมักจะไม่ได้รับอุปกรณ์รุ่นต่าง ๆ ในราคาที่แตกต่างกันตามความถี่ CPU สูงสุด นอกจากนี้การจัดเก็บโปรแกรมแฟลชเป็นปัจจัย จำกัด ที่สำคัญอื่น ๆ อย่างไรก็ตามฉันจะไม่มุ่งเน้นที่ Flash มากเกินไป (คำถามนี้นำไปสู่ ​​SRAM โดยเฉพาะ)

  • จำนวน SRAM ที่มีอยู่นั้นเกี่ยวข้องโดยตรงกับระดับความซับซ้อนที่คุณจะสามารถฝังลงใน MCU ของคุณไม่ว่าจะเป็นไลบรารีของบุคคลที่สามหรือด้วยรหัสที่คุณใช้เอง ดังนั้นจึงเป็นตัวชี้วัดที่ "เป็นธรรมชาติ" เพื่อแบ่งกลุ่มตามราคา MCU ของคุณ เป็นที่เข้าใจได้สำหรับลูกค้าทางเทคนิคที่จะยอมรับว่า MCU ที่สามารถทำงานที่ซับซ้อนมากขึ้น (SRAM ที่มากขึ้น, ที่เก็บข้อมูลแฟลชมากขึ้น) ควรมีราคาสูงกว่า ราคาที่นี่เป็นภาพสะท้อนของมูลค่าพื้นฐาน (การส่งมอบความสามารถ) ของ MCU โดยปกติแล้วการจัดเก็บข้อมูลแฟลชมักมีสัดส่วนกับ SRAM

  • ในทางตรงกันข้ามถ้าคุณนำตลาดเดสก์ท็อปและซีพียูมือถือคุณมักจะไม่สามารถจัดหาซีพียู / ซีพียูที่เฉพาะเจาะจงด้วยขนาด SRAM ที่แตกต่างกัน แต่เค้าร่างการกำหนดราคามักจะถูกสร้างขึ้นบนความสามารถในการดำเนินการ / ประสิทธิภาพของ MCU / CPU: ความถี่จำนวนแกนประสิทธิภาพการใช้พลังงาน ...


ฉันคิดว่านี่น่าจะถูกต้อง แต่มีหลักฐานไหม ชอบลบล้างร่องรอยเพื่อขายชิป a เป็นชิป b หรือไม่
ผู้เล่น Grady

อืม ... ความคิดที่น่าสนใจ ฉันไม่ได้มีหลักฐานการปฏิบัติดังกล่าว อย่างไรก็ตามมันทำให้เกิดคำถามที่น่าสนใจเกี่ยวกับต้นทุนการผลิต มันจะมีราคาแพงกว่าการสูญเสียอสังหาริมทรัพย์ของชิปซิลิคอน (เวเฟอร์) ในกรณีที่มีชิปขนาด SRAM ที่สูงกว่าถูกขูดออกเป็นขนาด SRAM ที่น้อยลงหรือไม่ หรือต้นทุนการผลิตและสินค้าคงคลังที่เพิ่มขึ้นที่เกี่ยวข้องกับการผลิตไม่ใช่อุปกรณ์เดียว แต่มีสองอย่าง ฉันเกรงว่าอุตสาหกรรมอิเล็กทรอนิกส์ทั้งหมดจะพิถีพิถันมากเกี่ยวกับการพูดคุยเรื่องค่าใช้จ่าย เราอาจไม่เคยรู้เลย
jose.angel.jimenez

1
สำหรับหลักฐาน: MT6250 เป็นชิปแบบ multi-die ที่ใช้สำหรับโทรศัพท์ฟีเจอร์ชิปเดียวมีค่าใช้จ่ายน้อยกว่า $ 2 ในปริมาณและมีความซับซ้อนมากกว่า mcu และรวมถึง sram die 8MB มันน่าสนใจที่จะสร้างโดยใช้วิธีที่คล้ายกัน เทคโนโลยี SRAM รวย mcu
hulkingtickets

นี่จะเป็นคำตอบที่ดีสำหรับ "ทำไมป้ายราคาของ MCU จึงเชื่อมโยงกับจำนวน SRAM ในตัว" แต่ดูเหมือนจะไม่ตอบคำถามเดิม ทำไมถึงมีไมโครคอนโทรลเลอร์เพียงไม่กี่ตัวที่สามารถใช้งานร่วมกับชิปเซ็ต SRAM มากกว่า 512 KB ได้ทุกราคา เหตุใดจึงมีไมโครคอนโทรลเลอร์จำนวนมากที่มีขนาด "แปลก" ที่ไม่ใช่พลังของ SRAM เมื่อผู้ผลิตชิป SRAM โดยเฉพาะดูเหมือนจะคิดว่าต้นทุนสินค้าคงคลังลดลงทำให้มันคุ้มค่าที่จะผลิตชิป SRAM เฉพาะในขนาด Power-of-2?
davidcary

1

ดังนั้นก่อนอื่นคุณต้องพิจารณาว่า 16 KB หรือ 32 KB เป็นหน่วยความจำจำนวนมหาศาลและตัวควบคุมไมโครคอนโทรลเลอร์ส่วนใหญ่ที่ขายในวันนี้ไม่มี RAM จำนวนมาก

โปรแกรมไมโครคอนโทรลเลอร์หลายตัวต้องการหน่วยความจำ 10 หรือ 50 ไบต์ สิ่งที่ซับซ้อนยิ่งกว่านั้นต้องการส่วนใหญ่เป็นร้อยไบต์

โดยทั่วไปมีสามกรณีการใช้งานที่คุณต้องการ RAM ตามลำดับของ KBytes: a) เมื่อไมโครคอนโทรลเลอร์ของคุณทำกราฟิก b) เมื่อคุณใช้ไมโครคอนโทรลเลอร์สำหรับการคำนวณโดยพลการขนาดใหญ่ c) เมื่อคุณเชื่อมต่อกับอินเตอร์เฟส PC

ประการที่สองโปรดทราบว่าถ้าคุณพูดถึง microcontroller RAM คุณจะพูดถึงแคชระดับ 0 / ระดับ 1 หากคุณพิจารณาว่า Intel Haswell มี "แคช" ระดับ 64 KByte ของแคชระดับ 1 เท่านั้นคุณจะพิจารณาขนาด RAM ของไมโครคอนโทรลเลอร์อีกครั้ง

ประการที่สามคุณสามารถแนบ RAM ภายนอกจำนวนเท่าใดก็ได้กับไมโครคอนโทรลเลอร์โดยเฉพาะยิ่งกว่าที่คุณสามารถแนบกับ CPU ได้

โดยส่วนตัวแล้วฉันกำลังพัฒนาแอพพลิเคชั่นไมโครคอนโทรลเลอร์จำนวนมากและฉันไม่ต้องการหน่วยความจำ 1 KB หรือมากกว่านั้น ฉันไม่เคยใช้ RAM ภายนอก

สิ่งต่าง ๆ ถ้าเรามา ROM (วันนี้ Flash) เนื่องจากโปรแกรมและข้อมูลของคุณอยู่ใน ROM มีแอปพลิเคชั่นมากมายที่คุณแนบ ROM ภายนอกเข้ากับไมโครคอนโทรลเลอร์เพราะคุณมีข้อมูลมากมาย

ลองมาดูตัวอย่าง: ลองวิเคราะห์แอปพลิเคชั่นไมโครคอนโทรลเลอร์และเราจะนำเครื่องเล่น MP3 แบบพกพาที่มีจอแสดงผลและ Flash ขนาด 4 กิกะไบต์มาใช้

สำหรับแอพพลิเคชั่นนี้คุณอาจต้องการแรม 1 KB นั่นก็เพียงพอแล้วที่จะทำงาน อย่างไรก็ตามคุณสามารถใช้ RAM เพิ่มขึ้นเพื่อให้บัฟเฟอร์ใหญ่ขึ้นเพื่อเร่งความเร็วในการเขียน USB เป็น Flash

คุณเห็นความแตกต่างในขณะนี้: พีซีทั่วไปเก็บโปรแกรมและข้อมูลทั้งหมดใน RAM ดังนั้นมันจึงต้องการ RAM จำนวนมาก สำหรับไมโครคอนโทรลเลอร์นี่คือทั้งหมดใน Flash / ROM


2
คุณดูถูกดูแคลนการใช้ RAM ในหลาย ๆ แอปพลิเคชัน ไม่ใช่ด้วยจำนวนมาก แต่อาจเป็นเพราะปัจจัย 10-100 ขึ้นอยู่กับตัวอย่าง ผู้เล่น MP3 ต้องทำการประมวลผลสัญญาณดิจิตอล
Jason S

ฉันอยากรู้ว่าทำไมคุณทั้งสองพูดถึงสิ่งเหล่านี้ คำสั่ง C ประเภทใดต้องการ RAM แทนที่จะพูดว่า "แอปพลิเคชันเหล่านี้ต้องการ RAM มากกว่า" ฉันต้องการ "การดำเนินการเหล่านี้ต้องการ RAM มากกว่าเพราะ ... "
Frederick

-1

ในขณะที่ออกแบบ MCU คุณจะต้องเผชิญกับสภาวะที่ไม่สำคัญสำหรับพีซี

  1. ความทนทาน

    ในการเลือกส่วนประกอบคุณไม่จำเป็นต้องใช้ชิ้นส่วนที่ดีที่สุดหรือ / และประสิทธิภาพสูงที่สุด แต่ชิ้นส่วนที่ได้รับการพิสูจน์แล้วว่าทำงานได้อย่างเหมาะสมหลังจากใช้งานมานานหลายปีจะสามารถใช้งานได้เป็นเวลาหลายปี ปี. ด้วยเหตุนี้หากผู้ควบคุมอยู่ในตลาดเป็นเวลาหลายปีทำงานได้ดีดูเหมือนว่า RAM จะไม่ดีเมื่อเทียบกับมาตรฐานพีซีในปัจจุบัน แต่อย่างไรก็ตามมันทำงานได้ดีและไม่จำเป็นต้องมีการเปลี่ยนใหม่ถ้าวิศวกรรมดี

  2. ช่องว่าง

    หน่วยไมโครโปรเซสเซอร์อย่างแท้จริงคือไมโคร คุณต้องลดพื้นที่ที่จำเป็นให้น้อยที่สุด แน่นอนคุณสามารถรับ 256 MB ที่พื้นที่เดียวกับชิป 64 KB ที่มีอายุ 10 ปี นี่คือที่ # 1 มาถึงจุด

  3. ราคา

    ไม่เพียง แต่ราคาซื้อ แต่ยังรวมถึงการใช้พลังงาน คุณไม่ต้องการออกแบบ MCU ที่มีการควบคุมระบบรายการที่ต้องการ 1,000 W ถ้าคู่แข่งในธุรกิจของคุณมีหนึ่งที่ต้องการเพียง 25 W และแน่นอนราคาซื้อที่ถูกกว่า (ที่คุณภาพเดียวกัน) คือ ดีกว่าเสมอ


1
นั่นคือไมโครโปรเซสเซอร์พลังงานสูงจริงๆ!
KyranF

2
ฉันคาดเดา 1kW MCU จะไม่อยู่ในสถานะที่มั่นคงนานนัก
Dan ไบรอันท์

1
ทุกจุดมีความสำคัญอย่างยิ่งในการออกแบบพีซีในปัจจุบัน

@KyranF: ใช่หารตัวเลขทั้งสองด้วย 100 แต่ถ้ามีอะไรเขาก็พูดถึงความแตกต่างของพลังงานสัมพัทธ์ระหว่างโปรเซสเซอร์ประสิทธิภาพสูงและไมโครคอนโทรลเลอร์ที่ใช้พลังงานต่ำสำหรับการใช้งานแบตเตอรี่
Ben Voigt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.