หาก CPU มีบัสแอดเดรส 16 บิตและ 8 บิตคำว่าหน่วยความจำนั้นสามารถอยู่ได้เท่าใด


23

ฉันกำลังเรียนเพื่อสอบปลายภาคและสับสนกับคำถามต่อไปนี้ ถ้า CPU มีบัสแอดเดรส 16 บิตและ 8 บิตคำหน่วยความจำเท่าใดใน KB จะอยู่ได้ ความเข้าใจของฉันจะบอกฉันว่ามันสามารถพูด 64KB อย่างไรก็ตามฉันเพิ่งใช้ 2 ^ 16 = 65,536 การคำนวณนั้นไม่ได้คำนึงถึงคำ 8 บิตจริง ๆ ดังนั้นฉันไม่แน่ใจว่ามันถูกต้องหรือไม่ คำ 8 บิตหมายความว่าอย่างไร

ไชโย


16
คุณใช้ทางอ้อม: จำนวนหน่วยความจำที่กำหนดแอดเดรสได้ทั้งหมดคือ 2 ^ 16 * 8 บิต เนื่องจากหนึ่งไบต์ = 8 บิตนั่นคือ 2 ^ 16 ไบต์เช่น 65536 ไบต์หรือ 64 KiB โปรดทราบว่า K เป็นคำนำหน้า SI สำหรับ 1,000 หากคุณหมายถึง 1024 ให้ใช้ Ki
jcaron

2
คำนึงถึงความแตกต่างระหว่างกิโลไบต์ส่วนนำหน้า SI (1,000 ไบต์) และ kibibytes ส่วนนำหน้าไบนารี (1,024 ไบต์) 2 ^ 16 = 65,536 = 64 kibi ~ 65.5 กิโลกรัม คำตอบที่ต้องการนั้นอาจเป็นคำที่ใช้ในการหมายถึง kibi แต่มีบางครั้งที่ความแตกต่างสำคัญจริงๆ หากคุณต้องการความมั่นใจอย่างสมบูรณ์ให้ใช้เส้นทางที่ปลอดภัยและระบุจำนวนไบต์และเสนอการแปลเป็นหน่วยที่สะดวกกว่าเช่นกิโลไบต์หรือ kibibytes เพื่อความสะดวกสำหรับครูของคุณ เปรียบเทียบวิกิพีเดีย: คำนำหน้าไบนารี โดยทั่วไปชิปหน่วยความจำจะระบุเช่น 65,536x8 บิต
CVn


3
ฉันคิดว่าคุณไม่มีธนาคารแลกเปลี่ยน ซีพียู 16 บิตส่วนใหญ่ใช้การแลกเปลี่ยนรูปแบบบางอย่างซึ่งยากที่จะตอบ
Joshua

1
@ MichaelKjörlingคำถามพูดว่า KB ซึ่งมีความหมายเสมอ 1024 ไบต์
kasperd

คำตอบ:


38

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

ขนาดที่ใหญ่ที่สุดที่เป็นไปได้ที่ใช้เพื่อกำหนดตำแหน่งในหน่วยความจำมักเรียกว่าคำฮาร์ดแวร์

ดังนั้นCPU ของคุณจะสามารถระบุที่อยู่ 64KB (2 ^ 16)แต่จะสามารถถ่ายโอนในการดำเนินการเดียว 8 บิตเท่านั้น


3
ฉันแน่ใจว่าคำตอบนี้เป็นคำตอบของครู แต่มันถูกต้องจริงหรือ คุณไม่สามารถใช้บางอย่างเช่น PAE เพื่ออนุญาตให้มีระดับ 3 ระดับ (หรือมากกว่า) เพื่ออนุญาตให้ CPU เข้าถึงมากกว่า 64KB หรือไม่ ฉันไม่ใช่ผู้เชี่ยวชาญด้านฮาร์ดแวร์ แต่ Commodore 128 ไม่สามารถทำสิ่งนี้ได้ด้วยคำ 8 บิตบัส 16 บิตโดยอนุญาตให้เปลี่ยนหน่วยความจำ RAM
davidgo

5
ไม่แน่ใจว่าฉันเข้าใจประโยคของคุณ "จะสามารถถ่ายโอนในการดำเนินการเดียวคือ 256B (2 ^ 8)" หรือไม่ สามารถถ่ายโอนได้เพียง 1 คำ = 1 ไบต์ = 8 บิตในการดำเนินการเดียว
jcaron

8
@davidgo ยังคง PAE ต้องการขนาดของบัสที่เหมาะสม Intel CPUs ที่รองรับ PAE มีบัสแอดเดรสขนาด 36 บิต
Dmitry Grigoryev

6
PAE เป็นชื่อแบรนด์ / คุณสมบัติเฉพาะสำหรับซีพียู x86 ที่ทันสมัยมากขึ้นหรือน้อยลง ใช่แผนการที่จะจัดการกับหน่วยความจำจำนวนมากโดยอ้อมได้ถูกนำมาใช้เป็นเวลานาน (เช่น XMS) ซึ่งท้ายที่สุดถือว่าระบบย่อยหน่วยความจำเช่นอุปกรณ์ต่อพ่วงที่สามารถกำหนดค่าใหม่ได้อย่างต่อเนื่องเพื่อเปิดเผยหน่วยความจำที่แตกต่างกัน นอกจากนี้ดูโมเดลหน่วยความจำแบบแบ่งกลุ่มของโรงเรียนเก่า x86 ...
rackandboneman

6
@ เกินกว่าที่คุณควรชี้แจงคำตอบของคุณเล็กน้อย ไม่มีใครใช้Bเดี่ยวเป็นหน่วยและเหตุผลก็คือสิ่งที่เกิดขึ้นตรงนี้ - คุณกำลังสับสนบิตและไบต์ สหกรณ์ฯ "คำ 8 บิต * - แต่ละคำจึงมี 8 บิต (1 ไบต์) และสามารถถ่ายโอนได้ว่าในการดำเนินการหนึ่ง 256 เป็นเพียงจำนวนของค่าที่เป็นไปได้แต่ละคำมีไม่เท่าไหร่จะถูกโอนได้..
าเดลฟุส

21

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

สิ่งที่สำคัญคือหน่วยของการแก้ไขที่อยู่ซึ่งโดยทั่วไปแล้วจะเป็นไบต์ 8 บิตแม้ในสถาปัตยกรรมแบบ 16/32/64 บิต ไม่จำเป็นต้องเท่ากับขนาดคำของเครื่อง แต่อาจเป็นในกรณีของคุณ

ยูนิตที่สามารถระบุแอดเดรส 8 บิตรวมกับบัสแอดเดรส 16 บิตจำนวน 64KiB ของ RAM ที่ CPU สามารถระบุได้


3
แต่ฉันใช้เครื่องที่หน่วยความจำที่อยู่คือ 16 บิต (ดังนั้นแนวคิดนี้จึงมีความหมาย)
Martin Bonner สนับสนุน Monica

4
@MartinBonner อย่างไรก็ตามมันไม่ได้เกี่ยวข้องโดยตรงกับขนาดคำของ CPU
glglgl

1
@glglgl - มันเกี่ยวข้องกันมาก ฉันไม่เชื่อว่ามีสถาปัตยกรรมใด ๆที่ไม่มีหน่วยที่อยู่เป็น 8 บิตหรือขนาดของคำ
จูลส์

1
ฉันไม่เห็นด้วยกับข้อความที่คำว่าเป็นหน่วยที่ใหญ่ที่สุดที่ CPU สามารถจัดการได้ทั้งหมด Intel i7 มีบัสข้อมูล 64 บิตและยังคงสามารถใช้คำสั่ง SIMD 256 บิต หาก Wikipedia นั้นถูกต้องคำว่าหมายถึงความกว้างของบัสข้อมูลและไม่ใช่ข้อมูลภายในของ CPU
Thomas Weller

1
@ThomasWeller: 8088 มีบัสข้อมูล 8 บิต แต่ก็ยังเป็นคำแนะนำ 16 บิต ในความเป็นจริงมันคือ 8086 ที่มีฐานข้อมูลขนาดเล็ก หมายเหตุ: ความกว้างของฐานข้อมูลและการถ่ายโอนจริงนั้นก็แตกต่างกันด้วย (คิดว่าข้อมูลไม่ตรงแนว)
Giacomo Catenazzi

1

คำ 8 บิตหมายความว่าอย่างไร

ในบริบทขนาดคำไปพร้อมกับขนาดที่อยู่เพื่ออธิบายบัสหน่วยความจำ มีหน่วยความจำ 16 บิตที่พุ่งออกมาเพื่อให้สามารถเลือกตำแหน่งที่ตั้ง 64ki ได้ จากนั้นแต่ละตำแหน่งจะมี 8 บิต

ขนาดคำที่นี่อาจหรืออาจไม่ตรงกับขนาดหน่วยคำนวณของ CPU และสิ่งนี้อาจหรืออาจไม่ตรงกับความละเอียดเชิงตรรกะในการกำหนดที่อยู่

ตัวอย่างเช่น CPU อาจโฆษณาบัส 16 บิต (เพื่อจุดประสงค์นี้) มันใช้ที่อยู่ 16 บิตในคำแนะนำและเช่นเดียวกับตัวอย่างของคุณมี 64ki แต่มันมีแอดเดรสบัส15บิตและบัสข้อมูล 16 บิต มันต้องการที่อยู่ 32ki เท่านั้นและมักจะได้รับ 2 ไบต์กับแต่ละสถานที่ (หากคำสั่งต้องการ 1 ไบต์มันจะส่งที่อยู่โดยที่บิตหายไปเล็กน้อยดึงข้อมูลทั้งสองไบต์ในขั้นตอนนั้นจากนั้นดูบิตที่น้อยที่สุดของที่อยู่ที่ต้องการเพื่อตัดสินใจว่าจะใช้ครึ่งใด)

โปรดทราบว่าการเปลี่ยนธนาคาร, PAE และอื่น ๆ ที่กล่าวถึงโดยบุคคลอื่นไม่เกี่ยวข้องที่นี่ หน่วยจัดการหน่วยความจำอาจใช้ที่อยู่ 16 บิตและมีที่อยู่ฮาร์ดแวร์ 20 บิตดังนั้น CPU จำเป็นต้องสลับและแมปสิ่งต่าง ๆ เพื่อใช้ช่วงที่อยู่ 20 บิตจริงของชิป RAM ที่สามารถแก้ไขได้

ให้แน่ใจว่าระบุหน่วยในคำตอบของคุณ “64ki” ของอะไร? คำ 8 บิตทำให้ (ยังคง) 64ki ไบต์ของ RAM แอดเดรส ขั้นตอนนั้นช่วยลดความสับสนและทำให้เกิดปัญหาเช่นนี้เล็กน้อย


0

คุณต้องใช้ขนาดคำในการคำนวณเช่นกัน คำตอบคือ 64 KB

คุณสามารถพูดได้ 2 ^ 16 คำและแต่ละคำคือ 8 บิต (= 1 ไบต์) ดังนั้นมันคือ 64 KB

หากขนาดของคำว่า 16 บิต คำตอบคือ 128 KB


1
การคำนวณของคุณไม่ได้เก็บไว้สำหรับ CPU แบบ 32 บิตทั่วไปซึ่งยังคงสามารถระบุหน่วยความจำขนาด 2 ^ 32 ไบต์ (4GB) ไม่ใช่ (2 ^ 32) * 4 (16GB)
Dmitry Grigoryev

ซีพียูสมัยใหม่จัดการกับ "แถว" ที่ใหญ่กว่าและมีบรรทัดที่อยู่ให้น้อยลง คำถามพูดถึงที่อยู่บัสด้านกายภาพของสิ่งต่าง ๆ ดังนั้นการคูณด้วยขนาด word ของบัสนั้น (ไม่ใช่ขนาด register CPU) นั้นถูกต้อง
JDługosz

0

มีสองด้านนี้ผู้สอนของคุณต้องการให้คุณบอกเขาว่าอะไรคือความจริง

สิ่งแรกที่อาจารย์ผู้สอนของคุณต้องการให้คุณบอกเขา

"16 บิตสามารถระบุตำแหน่งหน่วยความจำ 2 ^ 16 แต่ละตำแหน่งคือ 8 บิตดังนั้นเราสามารถระบุหน่วยความจำ 524288 บิต (65536 octet)"

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

  • โปรเซสเซอร์หลายตัวไม่มีแผนที่ IO เฉพาะดังนั้นบางส่วนของพื้นที่ที่อยู่หน่วยความจำอาจต้องใช้สำหรับสิ่งอื่นนอกเหนือจากหน่วยความจำ
  • "ขนาดคำ" ของโปรเซสเซอร์นั้นไม่เหมือนกับความกว้างของบัสข้อมูลหน่วยความจำหรือหน่วยที่เล็กที่สุดของแอดเดรสหน่วยความจำ
  • บัสบางประเภทอนุญาตให้มีการเคลื่อนย้ายหน่วยข้อมูลที่มีขนาดต่างกัน สิ่งนี้ต้องการการกำหนดแอดเดรสเพิ่มเติมซึ่งอาจมีหรือไม่มีการจัดการโดยบิตของบัสแอดเดรสหลัก
  • บางบัสใช้สัญญาณที่แตกต่างกันหลายจุดในบรรทัดเดียวกัน ตัวอย่างเช่น SDRAM ใช้บรรทัดที่อยู่เดียวกันสองครั้งเพื่อส่ง "ที่อยู่แถว" และ "ที่อยู่คอลัมน์"
  • ระบบจำนวนมากใช้วิธีการสลับธนาคารเพื่ออนุญาตให้โปรแกรมเข้าถึงหน่วยความจำได้มากกว่าที่โปรเซสเซอร์สามารถทำได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.