สถาปัตยกรรม Von Neumann และ CPU
แนะนำใหม่| English | ความหมาย |
|---|---|
| processor/ˈprəʊsesə/ | โปรเซสเซอร์ |
| registers/ˈredʒɪstəz/ | รีจิสเตอร์ |
| buses/ˈbʌsɪz/ | บัส |
| Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ | สถาปัตยกรรมฟอน นอยแมน |
| Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ | หน่วยความจำเข้าถึงได้ทันที |
| stored program/stɔːd ˈprəʊɡræm/ | โปรแกรมที่เก็บไว้ |
| ALU/ˌeɪ el ˈjuː/ | หน่วยคำนวณทางคณิตศาสตร์และตรรกะ |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | หน่วยควบคุม |
| system clock/ˈsɪstəm klɒk/ | นาฬิการะบบ |
| clock speed/klɒk spiːd/ | ความเร็วของนาฬิกา |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | รีจิสเตอร์อเนกประสงค์ |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | รีจิสเตอร์เฉพาะหน้าที่ |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | ตัวนับคำสั่ง |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | รีจิสเตอร์ที่อยู่ความจำ |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | รีจิสเตอร์ข้อมูลความจำ |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | รีจิสเตอร์คำสั่งปัจจุบัน |
| accumulator/əˈkjuːmjʊleɪtə/ | ตัวสะสมผล |
| Index Register/ˈɪndeks ˈredʒɪstə/ | รีจิสเตอร์ดัชนี |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | รีจิสเตอร์สถานะ |
| flag/flæɡ/ | แฟล็ก |
| address bus/əˈdres bʌs/ | บัสที่อยู่ |
| data bus/ˈdeɪtə bʌs/ | บัสข้อมูล |
| control bus/kənˈtrəʊl bʌs/ | บัสควบคุม |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | การส่งผ่านรีจิสเตอร์ |
รายงานที่คอมพิวเตอร์ทุกเครื่องยังคงปฏิบัติตาม
- ในปีมิถุนายน ค.ศ. 1945 John von Neumann จัดจำหน่ายร่างพิมพ์อธิบายเครื่องซึ่งยังไม่ได้สร้าง: EDVAC
- ความคิดของมันเรียบง่ายและใหม่ เก็บโปรแกรมไว้ในหน่วยความจำเดียวกันกับข้อมูล และมีโปรเซสเซอร์หนึ่งดึงและดำเนินการคำสั่งทีละตัวตามลำดับที่อยู่
- ร่างฉบับนี้ไม่เคยเสร็จสมบูรณ์ แต่การออกแบบถูกคัดลอกไปทั่วทุกที่ โทรศัพท์ของคุณ แล็ปท็อป และเซิร์ฟเวอร์โรงเรียนล้วนสร้างขึ้นบนพื้นฐานนี้
- บทเรียนนี้จะถอดโมเดลออกดู: หน่วยความจำ ส่วนประกอบของโปรเซสเซอร์ registers และบัสระหว่างมัน
โมเดล Von Neumann
- สถาปัตยกรรม Von Neumann· มีหน่วยความจำเดียวคือ Immediate Access Store (IAS) เก็บทั้งคำสั่งโปรแกรมและข้อมูล นั่นคือแนวคิดโปรแกรมเก็บไว้
- โปรเซสเซอร์ดึงคำสั่งแต่ละตัวจากหน่วยความจำและดำเนินการทีละตัวตามลำดับที่อยู่ เว้นแต่จะมีคำสั่ง branch เปลี่ยนการไหล
- คำสั่ง ข้อมูล และที่อยู่ทั้งหมดเดินทางระหว่างโปรเซสเซอร์และหน่วยความจำผ่านบัสร่วม

หน่วยความจำหนึ่ง โปรเซสเซอร์หนึ่ง บัสสามเส้น
ทำไมโปรแกรมเก็บถึงสำคัญ
- เปลี่ยนโปรแกรมในหน่วยความจำและฮาร์ดแวร์ชุดเดิมจะทำหน้าที่ต่างกัน ไม่ต้องเดินสายใหม่ ไม่ต้องใช้เครื่องใหม่
- โปรแกรมคือเพียงข้อมูลจนกว่าจะถูกดึงมา ดังนั้นจึงโหลดจากดิสก์ ส่งผ่านเครือข่าย หรือเขียนโดยโปรแกรมอื่นได้
- ข้อความในข้อสอบ: คำสั่งและข้อมูลถูกเก็บในหน่วยความจำเดียวกัน และคำสั่งถูกดึงทีละตัวและดำเนินการโดยโปรเซสเซอร์
แนวคิดโปรแกรมจัดเก็บ (Von Neumann) หมายความว่า:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
หน่วยความจำแห่งเดียวเก็บคำสั่งและข้อมูลไว้ด้วยกัน; การเปลี่ยนโปรแกรมที่จัดเก็บจะเปลี่ยนสิ่งที่คอมพิวเตอร์ทำโดยไม่ต้องต่อสายใหม่
ALU, หน่วยควบคุม และนาฬิกา
- ALU (Arithmetic and Logic Unit) ทำ arithmetic (บวก ลบ) และ logic (AND, OR, เปรียบเทียบ) รับ operands จาก registers และส่งผลลัพธ์กลับเข้าไปในหนึ่ง
- subsystem ควบคุม (CU) decode คำสั่งแต่ละตัวและส่งสัญญาณควบคุมเพื่อดำเนินการ: เปิดข้อมูล paths, บอก ALU ว่าต้องทำอะไร, สั่งการอ่านและเขียนหน่วยความจำ
- ระบบ clock ส่งพัลส์ต่อเนื่องSubsystem ควบคุมเคลื่อนรอบต่อไปหนึ่งขั้นตอนต่อพัลส์ ดังนั้นทุกส่วนเปลี่ยนสถานะพร้อมกัน; ความเร็ว clock, ใน GHz, คือจำนวนพัลส์ต่อวินาที

โปรเซสเซอร์ทั้งหมดเป็นชิปเล็ก ๆ ตัวหนึ่ง
ALU รับผิดชอบในการ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
หน่วยคำนวณทางคณิตศาสตร์และตรรกะทำการคำนวณและตรรกะ/การเปรียบเทียบ การถอดรหัสเป็นหน้าที่ของหน่วยควบคุม
____ หน่วยถอดรหัสคำสั่งแต่ละตัวและส่งสัญญาณควบคุมเพื่อดำเนินการตามนั้น
Difficulty 1/5 · 100 coins + a small bonus on first completion today
หน่วยควบคุมถอดรหัสและส่งสัญญาณ; ALU ทำการคำนวณทางคณิตศาสตร์และตรรกะ; นาฬิกาทำให้พวกเขาทำงานพร้อมกัน
registers
- Registers เป็นที่เก็บขนาดเล็กมากและเร็วมากภายในโปรเซสเซอร์ General-purpose registers เก็บค่าชั่วคราวของนักเขียนโปรแกรม Special purpose registers แต่ละตัวมีงานคงที่หนึ่งอย่างในรอบ
| Register | Job |
|---|---|
| Program Counter (PC) | ที่อยู่ของ คำสั่งถัดไป ที่จะถูกดึงมา |
| Memory Address Register (MAR) | ที่อยู่ของตำแหน่งที่กำลังอ่านข้อมูลหรือเขียนข้อมูล |
| Memory Data Register (MDR) | ข้อมูลหรือคำสั่งที่เพิ่งถูกอ่านจาก หรือกำลังจะถูกเขียนลง ในตำแหน่งนั้น |
| Current Instruction Register (CIR) | คำสั่งที่กำลังถูกแปลและดำเนินการอยู่ |
| Accumulator (ACC) | ผลลัพธ์ของการคำนวณทางคณิตศาสตร์หรือตรรกะล่าสุด |
| Index Register (IX) | ค่าออฟเซตที่ถูกเพิ่มเข้าไปในที่อยู่ในการจัดที่อยู่แบบใช้ดัชนี |
| Status Register | แฟล็กที่ถูกตั้งค่าโดยการทำงานล่าสุด |

Register, หน่วยควบคุม และ ALU เชื่อมต่อกันด้วยบัส
แตะส่วนประกอบของคอมพิวเตอร์ Von Neumann
สำรวจแต่ละบล็อก CPU (หน่วยควบคุม, ALU, รีจิสเตอร์) สื่อสารกับหน่วยความจำหลักเพียงแห่งเดียวผ่านบัส — และหน่วยความจำร่วมกันนี้สำหรับคำสั่ง AND ข้อมูลคือแนวคิดของ Von Neumann
จับคู่รีจิสเตอร์ชนิดพิเศษแต่ละตัวกับสิ่งที่มันเก็บ
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ชี้ไปที่คำสั่งถัดไป, CIR เก็บคำสั่งปัจจุบัน, MAR/MDR คู่ที่อยู่/ข้อมูลสำหรับหน่วยความจำ, ACC เก็บผลลัพธ์ที่กำลังรันอยู่
ตัวอย่างวิธีทำ: "อธิบายบทบาทของแต่ละregister"
- คำถามตารางต้องการคำตอบหนึ่งประโยคต่อแต่ละregister และคำที่ทำให้ได้คะแนนจะตัวหนา
- PC: เก็บ ที่อยู่ ของ คำสั่งถัดไป ที่จะถูกดึงมา. MAR: เก็บ ที่อยู่ ของตำแหน่ง ที่กำลังเข้าถึง.
- MDR: เก็บ ข้อมูล ที่เพิ่งถูกอ่านจาก หรือกำลังจะถูกเขียนลง ในหน่วยความจำ. CIR: เก็บ คำสั่ง ที่กำลัง ถูกแปลและดำเนินการ อยู่.
- ACC: เก็บ ผลลัพธ์ ของการดำเนินการ ALU ล่าสุด หมายเหตุว่าสองregisterเก็บที่อยู่ สองregisterเก็บเนื้อหา และหนึ่งregisterเก็บผลลัพธ์
แฟล็กของstatus register
- แต่ละ flag เป็นหนึ่งบิต ถูกตั้งค่าหรือลบโดย ALU หลังการดำเนินการ: zero flag เมื่อผลลัพธ์หรือการเปรียบเทียบให้ค่าเป็นศูนย์, carry flag เมื่อการบวกเกินขอบเขตของregister, negative flag เมื่อผลลัพธ์เป็นลบ, overflow flag เมื่อผลลัพธ์ที่มีเครื่องหมายไม่พอดีกับขนาด
- การกระโดดตามเงื่อนไขอ่านflagเพื่อตัดสินใจว่าจะเบี่ยงเบนไปหรือไม่ นั่นคือวิธีการที่
IFและลูปทำงานในระดับฮาร์ดแวร์ - Overflow flag ยังสามารถส่งสัญญาณ interrupt ได้ ซึ่งบทเรียนถัดไปจะอธิบาย
ข้อใดต่อไปนี้เป็นแฟล็กในรีจิสเตอร์สถานะ? เลือก ทั้งหมด ที่ถูกต้อง
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Carry, zero, negative และ overflow เป็นแฟล็กขนาด 1 บิตที่กำหนดโดย ALU Program counter เป็นรีจิสเตอร์แยกต่างหากที่เก็บที่อยู่
บัสทั้งสามชนิด
- Address bus ส่งที่อยู่ที่โปรเซสเซอร์ต้องการ มันมีทิศทางเดียว จากโปรเซสเซอร์ไปยังหน่วยความจำ
- Data bus ส่งข้อมูลหรือคำสั่งเอง มันมีทิศทางสองทาง เพราะการอ่านและการเขียนgoingไปในทิศทางตรงกันข้าม
- Control bus ส่งสัญญาณควบคุมเช่น read, write, clock และ interrupt มันมีทิศทางสองทาง

บัสระบบทั้งสามชนิดเชื่อมต่อโปรเซสเซอร์ หน่วยความจำ และอินพุต/เอาต์พุต
บัสใดเป็นทางเดียว (พาข้อมูลได้ในทิศทางเดียวเท่านั้น)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Address bus เป็นทางเดียว (CPU → หน่วยความจำ) Data และ control buses เป็นสองทาง
ตัวอย่างวิธีทำ: กว้างพอแล้วหรือยัง?
- Address bus ขนาด $n$ บิต สามารถเข้าถึงตำแหน่งได้ $2^{n}$ ตำแหน่ง. บัส 16-บิต เข้าถึง $2^{16} = 65\,536$ ตำแหน่ง; บัส 32-บิต เข้าถึง $2^{32}$ ประมาณสี่พันล้าน
- "ระบุผลกระทบหนึ่งอย่างจากการเพิ่มความกว้างของaddress bus": สามารถเข้าถึงตำแหน่งหน่วยความจำได้มากขึ้น
- "ระบุผลกระทบหนึ่งอย่างจากความกว้างของdata bus": มีจำนวนบิตเคลื่อนย้ายได้มากขึ้นในแต่ละการถ่ายโอน ดังนั้นจึงต้องการการถ่ายโอนน้อยลงสำหรับข้อมูลเดียวกัน
- เพิ่มความกว้างของaddress busจะได้หน่วยความจำมากขึ้น; เพิ่มความกว้างของdata busจะทำให้ถ่ายโอนได้เร็วขึ้น
Address bus ขนาด 16-bit สามารถเข้าถึงตำแหน่งหน่วยความจำได้กี่แห่ง?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
$2^{16} = 65\,536$ ตำแหน่ง
Address bus ที่กว้างขึ้นช่วยให้ CPU เข้าถึงตำแหน่งหน่วยความจำได้มากขึ้น
Difficulty 1/5 · 100 coins + a small bonus on first completion today
เส้นที่อยู่เพิ่มeach เส้นหนึ่งจะเพิ่มจำนวนตำแหน่งเป็นสองเท่า — n เส้นสามารถระบุ 2ⁿ ตำแหน่ง
Notation การถ่ายโอนregister
- การเคลื่อนย้ายระหว่างregisterและหน่วยความจำเขียนใน notational register transfer:
MAR ← [PC]หมายถึง "คัดลอก เนื้อหา ของ PC เข้าไปไว้ใน MAR" - วงเล็บเหลี่ยมหมายถึง "เนื้อหาของ" และ
[[MAR]]หมายถึง "เนื้อหาของตำแหน่งwhose address อยู่ใน MAR" - รอบ fetch-execute ทั้งหมดทั้งหมดเขียนแบบนี้ในบทเรียนถัดไป; notational นี้เหมือนลูกศรassign ใน pseudocode
MAR ← [PC] หมายถึงอะไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ลูกศรชี้ไปยังปลายทางและวงเล็บเหลี่ยมหมายถึง "เนื้อหา" นี่คือขั้นตอนแรกของการดึงคำสั่งทุกครั้ง
คะแนนที่หลุดหายไป
- PC เก็บที่อยู่ของ คำสั่งถัดไป ไม่ใช่คำสั่งปัจจุบัน; CIR เก็บ คำสั่ง ไม่ใช่ที่อยู่
- MAR เก็บ ที่อยู่, MDR เก็บ ข้อมูล การสับสนระหว่างทั้งสองทำให้เสียคะแนน
- มีเพียงaddress busที่เป็นทิศทางเดียว การพูดว่า "บัสทุกชนิดเป็นทิศทางเดียว" หรือ "data bus เป็นทิศทางเดียว" เป็นข้อผิดพลาดพบบ่อย
- Register อยู่ภายในโปรเซสเซอร์ ไม่ใช่ส่วนหนึ่งของ RAM และเร็วกว่าหน่วยความจำทุกชนิด
Program counter เก็บคำสั่งที่กำลัง被执行อยู่ตอนนี้
Difficulty 1/5 · 100 coins + a small bonus on first completion today
PC เก็บ ที่อยู่ ของ คำสั่งถัดไป คำสั่งปัจจุบันอยู่ใน CIR
คุณเข้าใจแล้ว
- Von Neumann: หน่วยความจำหนึ่ง (IAS) เก็บคำสั่งและข้อมูล; โปรเซสเซอร์ดึงและดำเนินการทีละชิ้น
- ALU คำนวณ, CU แปลและส่งสัญญาณ, clock รักษาก้าวเดินให้เป็นเวลา
- PC ที่อยู่ถัดไป · MAR ที่อยู่ที่กำลังเข้าถึง · MDR ข้อมูล · CIR คำสั่งปัจจุบัน · ACC ผลลัพธ์ · IX ออฟเซต · status register แฟล็ก
- address bus ทิศทางเดียว, $2^{n}$ ตำแหน่ง; data และ control buses ทิศทางสองทาง;
MAR ← [PC]คัดลอกเนื้อหาของ PC เข้าไปไว้ใน MAR