สถาปัตยกรรมคอมพิวเตอร์ประเภทใดบ้าง


20

ฉันกำลังอ่านหนังสือ "องค์ประกอบของระบบคอมพิวเตอร์" หนังสือเล่มนี้สอนวิธีสร้างคอมพิวเตอร์ทั้งเครื่องตั้งแต่เริ่มต้น ขณะที่ฉันกำลังอ่านบทเกี่ยวกับสถาปัตยกรรมคอมพิวเตอร์ฉันสังเกตว่ามันเน้นไปที่สถาปัตยกรรม Von Neumann ฉันแค่อยากรู้ว่าสถาปัตยกรรมอื่น ๆ คืออะไรและเมื่อไหร่และที่ไหนที่พวกเขาถูกนำมาใช้

ฉันรู้แค่สองคนคนหนึ่งคือฟอนนอยมันน์และคนที่สองคือฮาร์วาร์ด นอกจากนี้ฉันรู้เกี่ยวกับ RISC ซึ่งใช้ใน uC ของ AVR


2
มีหนึ่งในสามซึ่งถูกดัดแปลงฮาร์วาร์ด Harvard บริสุทธิ์จะไม่สามารถใช้ที่เก็บข้อมูลเดียวกันเพื่อเก็บทั้งโปรแกรมและข้อมูล ดังนั้นการปรับใช้ฮาร์วาร์ดเกือบทุกครั้งจึงได้รับการแก้ไขเพื่อให้หน่วยความจำการเรียนการสอนสามารถใช้เป็นข้อมูล
กอริลลา

คำตอบ:


27

มีสถาปัตยกรรมคอมพิวเตอร์หลายประเภท

วิธีหนึ่งในการจัดประเภทสถาปัตยกรรมคอมพิวเตอร์คือตามจำนวนคำสั่งที่เรียกใช้ต่อนาฬิกา เครื่องคำนวณจำนวนมากอ่านทีละคำสั่งและดำเนินการ (หรือใช้ความพยายามอย่างมากในการแสดงราวกับว่าพวกเขาทำอย่างนั้นแม้ว่าภายในพวกเขาจะทำสิ่งที่เกินความคาดหมายและสิ่งที่ล้าสมัย) ฉันเรียกเครื่องจักรเช่น "von Neumann" เพราะพวกเขาทุกคนมี von Neumann bottleneck เครื่องดังกล่าวรวมถึงสถาปัตยกรรม CISC, RISC, MISC, TTA และ DSP เครื่องดังกล่าวรวมถึงเครื่องสะสมเครื่องลงทะเบียนและเครื่องสแต็ค เครื่องอื่น ๆ อ่านและดำเนินการคำสั่งหลายครั้งในเวลา (VLIW, super-scalar) ซึ่งทำลายขีด จำกัด หนึ่งคำสั่งต่อนาฬิกา แต่ยังคงตีคอขวดของ von Neumann ที่จำนวนคำสั่งต่อนาฬิกาที่มีขนาดใหญ่ขึ้นเล็กน้อย ถึงกระนั้นเครื่องอื่น ๆ ก็ไม่ได้ถูก จำกัด โดยคอขวดของ von Neumann เพราะพวกมันทำการโหลดการทำงานทั้งหมดของพวกเขาล่วงหน้าหนึ่งครั้งก่อนที่จะเปิดเครื่องและจากนั้นประมวลผลข้อมูลโดยไม่มีคำแนะนำเพิ่มเติม เครื่องที่ไม่ใช่ Von-Neumann ดังกล่าวรวมถึงสถาปัตยกรรมดาต้าโฟลว์

อีกวิธีหนึ่งในการจัดประเภทสถาปัตยกรรมคอมพิวเตอร์คือการเชื่อมต่อระหว่าง CPU และหน่วยความจำ เครื่องบางเครื่องมีหน่วยความจำรวมเช่นที่อยู่เดียวสอดคล้องกับสถานที่เดียวในหน่วยความจำและเมื่อหน่วยความจำนั้นเป็น RAM เราสามารถใช้ที่อยู่นั้นในการอ่านและเขียนข้อมูลหรือโหลดที่อยู่ในโปรแกรมเคาน์เตอร์เพื่อรันโค้ด ฉันเรียกเครื่องจักรเหล่านี้ว่าเครื่องปรินซ์ตัน เครื่องอื่นมีพื้นที่หน่วยความจำแยกกันหลายตัวเช่นตัวนับโปรแกรมมักจะอ้างถึง "หน่วยความจำของโปรแกรม" ไม่ว่าจะโหลดที่อยู่ใดก็ตามและการอ่านและเขียนปกติจะไปที่ "data memory" ซึ่งเป็นตำแหน่งที่แยกต่างหาก ข้อมูลแม้เมื่อบิตของที่อยู่ข้อมูลเกิดขึ้นเหมือนกับบิตของที่อยู่หน่วยความจำของโปรแกรม เครื่องจักรเหล่านั้นคือ "pure Harvard" หรือ "

บางคนใช้คำจำกัดความแคบ ๆ ของ "von Neumann machine" ซึ่งไม่รวมเครื่องของ Harvard หากคุณเป็นหนึ่งในคนเหล่านั้นคุณจะใช้คำใดกับแนวคิดทั่วไปของ "เครื่องจักรที่มีขวด von Neumann" ซึ่งรวมถึงทั้งเครื่องจักรของ Harvard และ Princeton และไม่รวม NON-VON

ระบบฝังตัวส่วนใหญ่ใช้สถาปัตยกรรมของฮาร์วาร์ด ซีพียูบางตัวเป็น "pure Harvard" ซึ่งอาจเป็นวิธีที่ง่ายที่สุดในการสร้างฮาร์ดแวร์: แอดเดรสบัสไปยังหน่วยความจำโปรแกรมอ่านอย่างเดียวนั้นเชื่อมต่อกับตัวนับโปรแกรมเช่น Microchip PICmicros รุ่นแรก ๆ จำนวนมาก นอกจากนี้เครื่องฮาร์วาร์ดที่ดัดแปลงบางตัวยังใส่ค่าคงที่ในหน่วยความจำของโปรแกรมซึ่งสามารถอ่านได้ด้วยคำสั่ง "อ่านค่าคงที่จากหน่วยความจำโปรแกรม" พิเศษ (ต่างจากคำสั่ง "อ่านจากหน่วยความจำ") ซอฟต์แวร์ที่ทำงานในเครื่อง Harvard ประเภทด้านบนไม่สามารถเปลี่ยนหน่วยความจำของโปรแกรมซึ่งเป็น ROM อย่างมีประสิทธิภาพกับซอฟต์แวร์นั้น ระบบฝังตัวบางตัวเป็น "โปรแกรมได้เอง" โดยทั่วไปจะมีหน่วยความจำโปรแกรมในหน่วยความจำแฟลชและ "บล็อกการลบหน่วยความจำแฟลช" แบบพิเศษ การสอนและการสอนพิเศษ "การเขียนบล็อกของหน่วยความจำแฟลช" (แตกต่างจากการสอนปกติ "การเขียนไปยังหน่วยความจำข้อมูล") นอกเหนือไปจากคำสั่ง "การอ่านข้อมูลจากหน่วยความจำโปรแกรม" Microchip PICmicros และ Atmel AVRs ล่าสุดหลายตัวเป็นเครื่องฮาร์วาร์ดที่ปรับแต่งโปรแกรมได้ด้วยตนเอง

อีกวิธีในการจัดประเภท CPU คือตามเวลาของนาฬิกา คอมพิวเตอร์ส่วนใหญ่ซิงโครนัส - พวกเขามีนาฬิกาทั่วโลกเดียว ซีพียูไม่กี่ตัวมีอะซิงโครนัส - พวกมันไม่มีนาฬิกา - รวมถึง ILLIAC I และ ILLIAC II ซึ่งในครั้งเดียวเป็นซุปเปอร์คอมพิวเตอร์ที่เร็วที่สุดในโลก

กรุณาช่วยปรับปรุงรายละเอียดของทุกชนิดของสถาปัตยกรรมคอมพิวเตอร์ใน http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture


2
ว้าวอายสำหรับคุณที่ระงับความรู้นั้นมานานหลังจากที่ฉันถามคำถาม
Rick_2047

3
@Rick - ดูเหมือนว่าคำตอบนั้นใช้เวลานานในการแต่ง ขอขอบคุณที่ David ใช้เวลาตอบคำถามของคุณ! บางคนไม่ทำงานตามกำหนดเวลาเดียวกับคุณ
Kevin Vermeer

2
@reemrevnivek ที่มีความหมายว่าเป็นเพื่อนตลก
Rick_2047

มันจะดีถ้าคำตอบนี้ถูกทำเครื่องหมายเป็นคำตอบของชุมชน wiki
Trygve Laugstøl

8

CISC คือ "ตรงกันข้าม" ของ RISC ในขณะที่ RISC ชอบที่จะมีคำสั่งง่าย ๆ ที่ง่ายสำหรับคอมไพเลอร์ในการปรับให้เหมาะสมและบ่อยครั้งที่ขนาดเดียวกัน CISC ชอบคำสั่งที่ซับซ้อนที่มีขนาดแตกต่างกัน

ตัวอย่างเช่นคำสั่งป๊อปอัพใน CISC จะแก้ไขตัวชี้สแต็คและวางข้อมูลจากสแต็กลงในการลงทะเบียนอื่น อย่างไรก็ตามตัวประมวลผล RISC จะอ่านข้อมูลด้วยคำสั่งเดียวแล้วแก้ไขตัวชี้สแต็กด้วยคำสั่งที่สอง (โดยทั่วไปมีข้อยกเว้นบางอย่างเช่น PowerPC ซึ่งสามารถอัปเดตตัวชี้สแต็กและส่งข้อมูลไปยังสแต็ก แต่เป็นข้อยกเว้น)

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

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


1
ถ้าคุณชอบมันยอมรับ
Kortuk

5

มีบางอย่างเช่น ENIAC ที่คุณมี ALU ส่วนบุคคลและคุณ "ตั้งโปรแกรม" โดยการเดินสายเอาต์พุตของหนึ่ง alu ไปยังอินพุตของ alu อื่นที่กำลังดำเนินการต่อไปกับตัวแปรกลางนั้น "รีจิสเตอร์" และที่เก็บข้อมูลของคุณคือสายไฟที่เชื่อมต่อกับ alus

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

เมื่อหน่วยความจำถูกประดิษฐ์และใช้งานได้จริงเราก็ตัดสินด้วยสองคนที่ได้รับความนิยม Von Neumann และ Harvard การดำเนินการจากการเดินสายใหม่, บัตรเจาะ, เทปกระดาษหรือสิ่งต่าง ๆ เช่นที่เป็นประโยชน์น้อย และมีสแต็กตามด้วย (ตัวอย่างเช่นซีพียู) ซึ่งฉันสงสัยว่าอาจตกอยู่ภายใต้หมวดหมู่ของฮาร์วาร์ด

สิ่งที่เกี่ยวกับแพลตฟอร์ม von neumann ที่บูตจากแฟลชแบบอ่านอย่างเดียว (ในการใช้งานปกติ) บนหน่วยความจำอินเทอร์เฟซหนึ่งและมี ram / อ่าน / เขียนข้อมูล ram อีกอัน (บางครั้งสามารถทำงานได้ทั้งสองแบบขนาน) พื้นที่ที่อยู่? หรือคนที่มีความทรงจำ / อินเทอร์เฟซทั้งภายในและภายนอกหลายตัวทำงานแบบขนานทั้งหมด แต่เป็น von neumann สำหรับที่อยู่ในพื้นที่ที่อยู่เดียวกัน

และแพลตฟอร์มฮาร์วาร์ดที่ดีซึ่งโปรเซสเซอร์ไม่สามารถเข้าถึงหน่วยความจำคำสั่งเป็นข้อมูลเพื่อเปลี่ยน / อัพเกรด bootloader หรือสำหรับ bootloader เพื่อโหลดโปรแกรมถัดไปให้ทำงานได้ ทำไมสถาปัตยกรรม von neumann ถึงไม่ใช่ล่ะ? ตัวประมวลผลที่ดำเนินการจากและทำงานบนหน่วยความจำเดียวกันบนอินเทอร์เฟซเดียวกันอาจเป็นไปตามลำดับ (การเรียกคำสั่งและการเขียนหน่วยความจำไม่ได้เกิดขึ้นพร้อมกัน)?

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

GPU ตกที่ไหน? หรือธุรกิจที่ฉันทำงานเครือข่ายโปรเซสเซอร์ (NPUs) ในกรณีที่คุณมี microengines (โปรเซสเซอร์) ที่มีวัตถุประสงค์พิเศษเล็ก ๆ เหล่านี้ซึ่งเรียกใช้จากฮาร์วาร์ดเช่นโปรแกรม ram (แอดเดรส แต่คุณไม่ต้องการทำเพื่อเหตุผลด้านประสิทธิภาพ) ทำงานบนแรมข้อมูลต่าง ๆ แต่ละตัวมีพื้นที่ที่อยู่แยกต่างหาก คำแนะนำสำหรับแต่ละพื้นที่), (พื้นที่หน่วยความจำทำงานแบบขนาน) และส่งสัญญาณข้อมูลกลางเพื่อให้การคำนวณครั้งต่อไปทำโดย microengine ตัวต่อไปในสายอะลู (eniac) อย่างแฟชั่น? คุณจะเรียกสิ่งนั้นว่าอะไร? npus และ gpus เป็นเพียงสถาปัตยกรรมฮาร์วาร์ดที่ดัดแปลงมาอย่างแฟนซีหรือไม่?


"แพลตฟอร์มฮาร์วาร์ดดีที่โปรเซสเซอร์ไม่สามารถ ... โหลดโปรแกรมถัดไปเพื่อทำงาน" ซีพียูจำนวนมากมีโปรแกรมคงที่ที่ไม่สามารถเปลี่ยนแปลงได้โดยซอฟต์แวร์ที่ทำงานบน CPU นั้น ข้อดีอย่างหนึ่งของข้อตกลงนี้คือมันเป็นไปไม่ได้ที่จะ "ก่ออิฐ" ระบบที่มีข้อผิดพลาดที่เขียนไปยังหน่วยความจำแบบสุ่มหรือการอัปเดตซอฟต์แวร์ที่ไม่ดีหรือแม้กระทั่งกับการอัปเดตซอฟต์แวร์ที่ดี มันทำให้การอัปเดตซอฟต์แวร์ยากขึ้น แต่จริงๆแล้วคุณเปลี่ยนซอฟต์แวร์ในไมโครเวฟเป็นกี่ครั้ง
davidcary

2
ไม่มีไมโครเวฟเลย แต่ฉันใช้เวลาในการเขียนโค้ดสำหรับไมโครคอนโทรลเลอร์และซอฟต์แวร์โหลดซ้ำวันละหลายครั้ง การถูก จำกัด ให้มีขนาดเล็กไม่มีข้อผิดพลาดระบบที่ใช้ rom ปัญหาการก่ออิฐนั้นสามารถแก้ไขได้อย่างง่ายดายโดยใช้ von neumann ระบบที่คุณอธิบายมีการใช้งานเพียงเล็กน้อยเพื่อเพิ่มประสิทธิภาพการทำงานของบัสแยกต่างหากคุณสมบัติอื่นของสถาปัตยกรรมฮาร์วาร์ด ดังนั้นประเด็นของฉันคือสถาปัตยกรรมฮาร์วาร์ดไม่ได้ขยายขนาดโดยไม่มีวิธีโหลดโปรแกรมทำให้ค่อนข้างล้าสมัย
old_timer

1
อืมพวกมันเรียกว่า cortex-m3 ฮาร์วาร์ดเมื่อมันไม่เหมือนกับ avr (พวกมันเรียกว่าฮาร์วาร์ดที่ดัดแปลงแล้ว) ฉันแน่ใจว่ามีตัวประมวลผลสถาปัตยกรรมฮาร์วาร์ดบริสุทธิ์ (PIC) และเคยเป็นฟอนนอยมันน์บริสุทธิ์มากขึ้น แต่ส่วนใหญ่จะดัดแปลงฮาร์วาร์ดหรือดัดแปลงฟอนนอยมันน์ (ข้อมูลและคำสั่งเข้าถึงแบบขนาน) ทำให้เหมือนกันมากกว่า ซึ่งเป็นที่ที่ฉันอยู่ในคำตอบของฉันฮาร์วาร์ดบริสุทธิ์และฟอนนอยมันน์ล้วน แต่ล้าสมัยอย่างรวดเร็ว โปสเตอร์อยากรู้ว่ามีอะไรอีกที่นั่นเกือบทุกอย่างอยู่ที่นั่น
old_timer

4

ทั้งสถาปัตยกรรม von Neumann และ Harvard สามารถใช้กับโปรเซสเซอร์ RISC เช่น AVR และ ARM AVR ใช้ฮาร์วาร์ดในขณะที่ชิป ARM บางรุ่นใช้ฟอนนอยมันน์และใช้ฮาร์วาร์ด


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