จริงๆแล้วคืออะไร: ไมโครคอนโทรลเลอร์ (uC), ระบบบนชิป (SoC) และตัวประมวลผลสัญญาณดิจิตอล (DSP)


9

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

ฉันคิดเสมอว่าฉันรู้ถึงความแตกต่าง แต่เมื่อฉันได้รับคำถามเช่น: "ถ้าฉันใส่ตัวรับส่งสัญญาณด้วย uC ตอนนี้เป็น SoC หรือไม่" ฉันสับสนมากขึ้นและไม่รู้วิธีตอบ ผมจำได้เมื่อฉันได้บอกว่าUC เป็นหลัก SoC แต่ฉันมีหลักฐานอะไรบ้าง แต่ Arduino ไม่ได้อยู่บนชิปตัวเดียว! ฉันสามารถนำโปรเซสเซอร์ Atmeg ออกจาก "บอร์ด" ได้ตลอดเวลา!

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

ดังนั้นฉันจึงตัดสินใจค้นหาความหมายพื้นฐานของคำสามคำนี้: uC, SoC และ DSP เพราะตัวอย่างเช่นเมื่อฉันสับสนเกี่ยวกับแรงดันไฟฟ้าในวงจรฉันมักจะกลับไปที่พื้นฐานทางฟิสิกส์พื้นดินไม่ได้เป็นศูนย์จริงๆมันเป็นเพียง "อ้างอิง" และแรงดันไฟฟ้าไม่ได้เป็น "สัมบูรณ์" พวกเขาเป็น "ญาติ" สิ่งนี้ชี้ให้ฉันไปในทิศทางที่ถูกต้องเสมอ แต่ไม่มีฐานที่จะไปเมื่อพูดถึง uC "micro" "controller" เป็นคอนโทรลเลอร์ที่เล็กจนอยู่ในระดับไมโครมิเตอร์ แต่เราไม่มีคำว่า nanocontroller ใช่ไหม? ดังนั้นวิธีคิดนี้จะไม่ช่วย

สิ่งที่ฉันพยายามตอบคือ:

  • uC เป็นหน่วยประมวลผลที่มีอุปกรณ์ต่อพ่วงและหน่วยความจำอื่นสำหรับใช้งานทั่วไปใช่ไหม
  • SoC เป็น "ระบบ" เต็มรูปแบบใน "ชิป" ดังนั้นระบบใดก็ตามที่คุณใส่ชิปตัวเดียว SoC คืออะไรใช่ไหม
  • DSP เป็นหน่วยประมวลผลสำหรับการใช้งานเฉพาะการดำเนินการทางคณิตศาสตร์เป็นหลักใช่มั้ย

    ตอนนี้

  • นั่นหมายความว่าทุกสิ่งในยูซีซีทั้งหมดนั้นจะต้องอยู่ในชิปตัวเดียวหรือไม่? เพราะถ้าใช่แล้วยูซีนั้นเป็น SoC อาจจะเล็ก แต่ก็เป็น แล้วอาร์ดิโน่ล่ะ อาจ uC "สามารถ" เป็น SoC หากอยู่ในชิปตัวเดียว แต่ไม่จำเป็นต้อง (ฉันใช้ arduino เป็นตัวอย่างที่นี่)

  • ดังนั้น arduino เป็น uC ถ้าฉันเอาส่วนประกอบทั้งหมดมาใส่ไว้ในบอร์ดอื่นและฉันเพิ่ม XBEE ลงไปในมิกซ์ มันยังคงเป็น uC ใช่ไหม? ดังนั้นเมื่อไหร่ที่เราบอกว่าตอนนี้มันเป็น SoC? เฉพาะเมื่อสิ่งเดียวกันถูกใส่ในชิปตัวเดียวแทนที่จะเก็บไว้ในบอร์ด?

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

คำถามต่อไปคือสิ่งที่โพสต์นี้เกี่ยวกับ:

  • uC นั้นเป็น SoC หรือไม่? กรณีพิเศษของ SoC ซึ่งหนึ่งในความต้องการของมันคือทั้งระบบมีไว้สำหรับการใช้งานทั่วไป
  • uC เป็นจุดประสงค์ทั่วไป (อ้างอิงจากอินเทอร์เน็ต) และ DSP นั้นใช้เพื่อประมวลผลสัญญาณทางคณิตศาสตร์ที่เก็บรวบรวมจากโลกแห่งความเป็นจริง แต่ DSP ยังคงเป็น "โปรเซสเซอร์" และ uC มี "โปรเซสเซอร์" ฉันสามารถใส่ DSP กับพวงหรืออุปกรณ์ต่อพ่วง (สมมุติว่า ADC และ DAC เนื่องจากมักใช้กับมัน) และเรียกผสมมิกซ์ยูซีซี? หรือเป็น SoC (ตั้งแต่ตอนนี้การผสมไม่ได้มีวัตถุประสงค์ทั่วไปและด้วยเหตุนี้เราไม่สามารถเรียกมันว่า uC แต่มันยังคงเป็น SoC)

ไม่สำคัญว่าคุณจะเรียกมันว่าอะไร 'กุหลาบชื่ออื่นจะได้กลิ่นหอมหวาน!' SoC เป็นเงื่อนไขการขาย 'คนอื่นขายชิ้นส่วนให้คุณ แต่เราขายคุณทั้งระบบ' คือสิ่งที่มีความหมาย โดยทั่วไปแล้ว uC จะเป็นเหมือนหน่วยความจำ uP + และมักจะเป็น ADC DSP เหมาะสำหรับคุณจะเชื่อหรือไม่ว่า DSP และตัวคูณของฮาร์ดแวร์อย่างสม่ำเสมอ แต่บ่อยครั้งที่สมัยนี้หน่วยความจำโปรแกรมและบางครั้ง ADCs / DACs เกือบเป็น SoC แต่ในระดับใหญ่ส่วนใหญ่สามารถอธิบายเป็นคนอื่น ๆ อย่าเหงื่อมันแน่นอนอย่าตีคนมากกว่ามัน
Neil_UK

2
ฉันรู้ว่ามันเป็นที่เข้าใจกันอย่างกว้างขวางในการใช้งาน u และไม่มีปัญหาจริงในการใช้งาน แต่คุณควรต้องการสร้าง µ กดAltGr + Mหรือ⌘ + Mควรทำเคล็ดลับ
Magic Smoke

1
"micro" เป็นสัมภาระประวัติศาสตร์ คอนโทรลเลอร์ "micro" มาจากคอมพิวเตอร์ "micro" ซึ่งแตกต่างจากคอมพิวเตอร์ "mini" ที่มีขนาดตู้เย็นและคอมพิวเตอร์ "" ที่ใช้พื้นที่ทั้งห้อง
user253751

คำตอบ:


11

uC = ชิปประมวลผลแบบเอกเทศ: CPU, RAM, ROM, อุปกรณ์ต่อพ่วงบางตัว

DSP = ชิปประมวลผล (สามารถแยก CPU ปัจจุบันส่วนใหญ่เป็น uC) ที่เหมาะสำหรับการประมวลผลสัญญาณ มักจะมี MAC ที่รวดเร็ว (การคูณทวีคูณ) คณิตศาสตร์ที่อิ่มตัวและอินเตอร์เฟสหน่วยความจำหลายตัว เพื่อให้ได้รับประโยชน์สูงสุดคุณมักจะต้องตระหนักถึงลักษณะของมันอย่างลึกซึ้งเช่นการเข้าถึงหน่วยความจำชนิดใดที่สามารถทำได้พร้อมกัน (ดังนั้นมักใช้กับไลบรารี่แอสเซมบลีที่ได้รับการปรับแต่งโดยผู้ผลิต) มักไม่ถูกใช้เพื่อใช้กับหน่วยความจำขนาดใหญ่ (บัสแอดเดรส 16 บิตมักเพียงพอ)

SOC = ชิปประมวลผล (ส่วนใหญ่เป็น CPU, อาจมี RAM สำหรับการแคช) ที่รวมอุปกรณ์ต่อพ่วงที่เคยอยู่นอกชิปโปรเซสเซอร์หลัก นี่คือคำจำกัดความของเป้าหมายที่เคลื่อนไหว: ฟังก์ชั่นใน SOC พิเศษในปัจจุบันสามารถพบได้ในชิปกระแสหลักในวันพรุ่งนี้ SOCs ปัจจุบันส่วนใหญ่มีความหมายสำหรับการใช้งานระบบปฏิบัติการระดับ Linux และมีสิ่งต่าง ๆ ที่คุณต้องการในระบบดังกล่าวยกเว้น RAM และ ROM (แม้ว่าบาง ROM จะรวมอยู่บ่อยครั้งเพื่ออ่าน FLASH ภายนอก)

ตัวอย่างของอุปกรณ์ต่อพ่วงที่ใช้กันทั่วไปใน SOCs ในปัจจุบัน (แต่กำลังหาทางเข้าสู่ uC's!): พอร์ต Ethernet, โครงสร้างการสลับ Ethernet, USB รวม โฮสต์ & OTG, เอ็นจิ้นกราฟิค, การถอดรหัส mpeg, เอ็นจิ้น crypto, อินเตอร์เฟส RAM & FLASH

Arduino เป็นผลิตภัณฑ์ระดับบอร์ดดังนั้นโดยนิยามไม่ใช่ uC, DSP หรือ SOC ถึงแม้ว่ามันจะมีหนึ่ง Uno พื้นฐานประกอบด้วย uC

uC ไม่ใช่ SOC (แม้ว่าอาจมีกรณีที่มีขอบเขต): uC เป็นแบบสแตนด์อโลนและ (ที่ระดับเทคโนโลยีปัจจุบัน) ไม่ได้หมายถึงการใช้งานระบบปฏิบัติการระดับ Linux SOC ไม่ใช่แบบสแตนด์อโลน (ต้องการ RAM และ ROM)

รอยต่อไม่ได้ 100% และมีการขยับเมื่อเวลาผ่านไป เดอ CPU และอินเทอร์เฟซหน่วยความจำของซีพียูปัจจุบันส่วนใหญ่ทำได้ง่ายกว่า DSP สมัยก่อนแม้กระทั่งบนพื้นหญ้า แต่ปัจจุบัน DSP นั้นเร็วกว่าและ / หรือถูกกว่าหรือหิวน้อยกว่าซีพียูทั่วไปมากขึ้นเมื่อทำการประมวลผลสัญญาณ เป็นการแข่งขันกันระหว่างผู้ผลิตเพื่อให้ได้ชิปที่น่าสนใจที่สุดโดยใช้เทคโนโลยีและความต้องการล่าสุด ในขณะนี้สิ่งนี้นำไปสู่ ​​3 สปอตหวาน (รวมถึงไมโครโพรเซสเซอร์อเนกประสงค์), แต่สิ่งนี้จะเปลี่ยนไปตามกาลเวลา (DSPs ได้รับความนิยมน้อยกว่า 10y ที่ผ่านมา, IMO เพราะการส่งผ่านระดับเสียงทำได้ง่าย ซีพียูที่ใช้งานทั่วไป)

ชิปประเภทหนึ่งที่เฉพาะเจาะจงที่กลายเป็นเรื่องธรรมดาในปัจจุบันคือ uC (หรือ SOC) ที่มีอินเตอร์เฟสไร้สายบางตัว ตรวจสอบตัวอย่างของ ESP8266 และ ESP32 สำหรับ WiFi และ RN2483 สำหรับ LoraWan


2

uC และ DSP มีคำจำกัดความตรงไปตรงมา

uC เป็นแกนประมวลผลที่มีหน่วยความจำ (ระเหยและไม่ระเหย) รวมอยู่ภายใน สิ่งนี้เปรียบเทียบกับไมโครโปรเซสเซอร์ที่โดยทั่วไปจะมีหน่วยความจำภายใน แต่ไม่ระเหย

DSP คือการถ่ายภาพนอกสถานที่ของ uC โดยทั่วไปแล้ว DSP นั้นมีความสามารถในการสุ่มตัวอย่างแบบอะนาล็อกที่ดีกว่ายูซีซีทั่วไป DSP ยังมีความสามารถทางคณิตศาสตร์ที่ดีกว่า uC และมาพร้อมกับห้องสมุดจำนวนมากเช่น FFT หรือการเชื่อมโยงอัตโนมัติเพื่อใช้ความสามารถทางคณิตศาสตร์เหล่านั้น

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


คุณกำลังบอกว่า DSP นั้นมี ADC เป็นตัวอย่างด้วยหรือไม่
himura

@himura uC มี ADCs แต่ DSP นั้นมี ADC ที่ดีจริงๆ ตัวอย่างเช่น Arduino มีความสามารถในการสุ่มตัวอย่างสูงสุดประมาณ 10kHz ที่ 10 บิต dsPIC33 ซึ่งเป็น DSP มีความสามารถในการสุ่มตัวอย่างด้วยอัตรา 1.1MHz ที่ 10 บิต นั่นเป็นคำสั่งสองขนาดที่เร็วขึ้น
vini_i

ฉันคิดว่า DSP เป็นเพียงหน่วยประมวลผลที่ไม่มีความสามารถของ ADC แต่ตอนนี้ดูเหมือนว่าจะเป็นระบบที่สมบูรณ์กว่า ขอบคุณ
himura

1
ฉันคิดว่าคำตอบนี้ผิด มีชิป DSP จำนวนมากที่ไม่มีตัวแปลง ความแตกต่างที่สำคัญระหว่าง DSP และ CPU วัตถุประสงค์ทั่วไปคือสถาปัตยกรรมหน่วยความจำ DSP มีความทรงจำหลายอย่างที่สามารถเข้าถึงได้แบบขนาน ดูen.wikipedia.org/wiki/Harvard_architecture
Hilmar

@Hilmar คุณสามารถให้การอ้างอิงบางส่วนของ DSP โดยไม่ต้องแปลง? ฉันชอบประเด็นนี้
himura

0

สิ่งที่เราเรียกว่า SOC โดยทั่วไปจะมีหน่วยประมวลผลกลางที่ทรงพลังมากกว่า uC โดยปกติแล้วคุณจะพบแกน ARM ที่นั่น โปรเซสเซอร์ ARM "ใหญ่" เกือบทั้งหมดเช่น Cortex A series ที่ผลิตในวันนี้เป็น SOC ในการใช้งานระบบปฏิบัติการขนาดใหญ่เช่น Linux คุณต้องใช้ RAM จำนวนมากดังนั้น SOCs จึงมีตัวควบคุม RAM ภายนอกที่รองรับชิป SDRAM ที่ทันสมัย สแตติก RAM ในตัวจำนวนเล็กน้อยใช้เฉพาะที่เฟสบูตเพื่อเรียกใช้บูตโหลดเดอร์และเริ่มต้นอุปกรณ์ต่อพ่วงและตัวควบคุม SDRAM

โดยปกติแล้ว uC จะเป็นโซลูชั่นแบบครบวงจรที่มีแรมแบบคงที่ (ในปริมาณที่น้อย) RAM ขนาดเล็กและการขาด MMU ป้องกันไม่ให้ใช้ระบบปฏิบัติการขนาดใหญ่ในนั้น ทุกวันนี้ยูเอสเอส่วนใหญ่มีแกน 8 บิตหรือ 32 บิต uCs 16 บิตที่ใช้ในแอปพลิเคชันรุ่นเก่าเท่านั้น ยุค 32 บิต uSc เริ่มต้นด้วยแกนชุด ARM M คอร์เหล่านี้ได้รับการออกแบบมาโดยเฉพาะสำหรับยูซีเอสและมีขนาดเล็กมากเหมือนกันกับ ARM ขนาดใหญ่ยกเว้นชุดคำสั่ง (ARM M ใช้คำสั่ง THUMB ซึ่งเป็นเซตย่อยของชุดคำสั่ง ARM)

คำ DSP เป็นเรื่องเกี่ยวกับสถาปัตยกรรมหลัก DSP มีมากกว่าหนึ่ง ALU และเรียกว่าชุดคำสั่ง VLIW (คำศัพท์การสอนที่ยาวมาก) คำสั่ง VLIW ประกอบด้วยคำสั่งย่อยจำนวนหนึ่ง (ประมาณ 4) กำหนดเป้าหมายไปยังระบบย่อยของ CPU ที่แตกต่างกัน ตัวอย่างเช่นคำสั่งแบบยาวสามารถมีคำสั่งเพื่อดึงข้อมูลล่วงหน้าจากหน่วยความจำคำสั่งการคูณไปยังตัวคูณพิเศษ ALU และคำสั่งทางคณิตศาสตร์ให้กับ ALU วัตถุประสงค์ทั่วไป

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

คอร์ CPU ที่ทันสมัยมักจะมีการเรียงลำดับ "ส่วนขยาย DSP" ในรูปแบบของคำแนะนำแบบเวกเตอร์ (คุณสามารถดำเนินการทางคณิตศาสตร์แบบเดียวกันกับจำนวนของ 8 ตัวดำเนินการ) มันแตกต่างจากคำสั่ง DSPs VLIW


"โปรเซสเซอร์ ARM เกือบทั้งหมดที่ผลิตในวันนี้เป็น SOC จริง ๆ " จริงเหรอ? คุณพิจารณา Cortex-M0 chips เช่น LPC810 SOCs หรือไม่?
Wouter van Ooijen

ฉันได้กล่าวถึงชุด Cortex M แยกต่างหากขณะที่พูดถึง uCs Cortex M เป็นยูซีเอสอย่างชัดเจน
e_asphyx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.