หน่วยความจำที่จัดเรียงเป็นไบต์และ Word จัดระเบียบโดยใช้โมดูลหน่วยความจำ


5

ฉันกำลังเรียนรู้เกี่ยวกับวิธีการทำงานของ CPU ในระดับฮาร์ดแวร์และบางสิ่งที่กำลังจะเกิดขึ้นคือองค์กรหน่วยความจำ จากสิ่งที่ฉันเรียนรู้ (และโปรดแก้ไขสิ่งที่ไม่ถูกต้องให้ฉันด้วย) คุณสามารถจัดหน่วยความจำได้สองวิธีดังต่อไปนี้:

หน่วยความจำที่จัดเรียงเป็นไบต์: แต่ละแอดเดรสบนบัสแอดเดรสชี้ไปยังตำแหน่งหน่วยความจำที่เก็บไบต์ (8 บิต)

หน่วยความจำที่มีการจัดระบบ Word: แต่ละที่อยู่บนบัสแอดเดรสชี้ไปยังตำแหน่งหน่วยความจำที่เก็บคำ (หลายตัวจาก 8 บิต)

กล่าวอีกนัยหนึ่งหน่วยความจำที่จัดระเบียบไบต์สามารถเข้าถึงตำแหน่งหน่วยความจำใด ๆ ที่เป็นขอบเขตไบต์ในขณะที่หน่วยความจำจัดระเบียบคำสามารถเข้าถึงตำแหน่งหน่วยความจำที่เป็นขอบเขตคำ

ตอนนี้ที่นี่ฉันมีปัญหา ฉันกำลังเรียนเพื่อรับกลางภาคและฉันกำลังดูงานที่ผ่านมาและคำถามต่อไปนี้เกิดขึ้น:

รับชุดโมดูลหน่วยความจำที่มีที่อยู่ 20 บิตและอินเตอร์เฟสข้อมูล 8 บิต เราจำเป็นต้องสร้างหน่วยความจำหลักที่มีหน่วยความจำหลักเป็น 4 ไบต์สำหรับซีพียูสถาปัตยกรรมข้อมูล 16 บิต

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

2 ^ m * n โดย m คือแอดเดรสบัสเป็นบิตและ n คือบัสข้อมูลเป็นบิต สิ่งนี้ให้ความจุ 2 ^ 20 * 8 = 1MBytes สำหรับแต่ละโมดูลหน่วยความจำ

ตอนนี้เราต้องหาจำนวนหน่วยความจำที่ต้องการ ค่อนข้างง่ายและพบได้ดังนี้: 4MB / 1MB = 4 modules

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

ตอบ: enter image description here

ขอบคุณ.


ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นนอกหัวข้อเนื่องจากรายละเอียดการจัดการหน่วยความจำระดับนี้เหมาะกับกลุ่มคอมพิวเตอร์บางอย่างมากขึ้น SE
Carl Witthoft

ไม่นี่เป็นคำถามสำหรับ electronics.stackexchange.com . คุณควรถามอีกครั้ง แต่คำตอบก็คือคุณต้องการอุปกรณ์อิเล็กทรอนิกส์สำหรับการแปลงระหว่างโลกภายนอกและโมดูลหน่วยความจำของคุณ อุปกรณ์อิเล็กทรอนิกส์นี้ควรแปลงคำว่าอ่านและเขียนคำให้เป็นสองไบต์อ่านและไบต์เขียน มันเป็นไปไม่ได้เสมอไปถ้ามีข้อ จำกัด เรื่องเวลา แต่อย่างไรก็ตามวงจรไม่ซับซ้อนมาก
peterh

1
ฉันลงคะแนนให้ปิดคำถามนี้เป็นหัวข้อนอกเพราะเหมาะสมสำหรับ SE Electronics
Fred

คำถามเกี่ยวกับสถาปัตยกรรมของ CPU และเกี่ยวข้องกับฮาร์ดแวร์คอมพิวเตอร์และวิศวกรรมคอมพิวเตอร์ ดังนั้นฉันเชื่อว่าคำถามอยู่ในส่วนที่ถูกต้อง
John

คำตอบ:


4

หากคุณสังเกตเห็นคุณต้องใช้ 20 บิตในการเข้าถึงโมดูล 1Mb ไบต์

Byte module

แต่หน่วยประมวลผลของคุณจะจัดตำแหน่งคำ ดังนั้น 2 1Mb ไบต์โมดูลในรูปแบบโมดูลคำ 2Mb กุญแจสำคัญในการทำความเข้าใจวิธีการทำงานเป็นแนวที่ด้านล่าง

Misalignment of Word addressed modules

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

A20 ถึง A1 (บิต 1 .. 20) เลือกตำแหน่งหน่วยความจำที่จัดเรียงคำศัพท์ 1Mb ของคุณ การเยื้องศูนย์นั้นได้รับการชดเชยในโปรเซสเซอร์เช่นเดียวกับไบต์สูง D15-D8 และไบต์ต่ำ D7-D0

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

ตัวเลือกอื่น ๆ คือ A21 เลือกระหว่างทั้งสองธนาคารโดยเปิดใช้งานการเลือกชิป ธนาคารที่เหมาะสมวางข้อมูลลงบนบัสข้อมูลโดยตรง

วิธีการเดียวกันนี้ใช้กับบัสหน่วยความจำ 32, 64 หรือ 128 ปล่อยบิตที่อยู่ต่ำซึ่งทำซ้ำซ้อน


แก้ไขเพื่อชี้แจงความคิดเห็น OP

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

โปรเซสเซอร์ 64 บิตพร้อมหน่วยความจำ 8Gbytes สามารถดึงข้อมูลได้ 8 ไบต์ / เข้าถึงดังนั้นตำแหน่ง 64 บิต 1G เราควรขยายการถอดรหัสเพื่อให้แต่ละไบต์สามารถเข้าถึงทีละรายการได้หรือไม่?

แล้วบูลลีนล่ะ? เราเข้าถึงผ่านบิตหรือไม่ 64 หรือ 128 บิตลอย คุณมีโครงสร้างทางกายภาพของฮาร์ดแวร์และโครงสร้างข้อมูลซึ่งต้องปรับการรับส่งข้อมูลให้เหมาะสมผ่านโปรเซสเซอร์

สมมติว่าคุณสร้างโครงสร้างด้วย bool, byte, จำนวนเต็ม 16 บิต, ไบต์และ 64 บิตลอย คอมไพเลอร์สำหรับตัวประมวลผล 16 บิตอาจจัดสรรเป็น float (4 ints), int (2 ไบต์แยกกันรวมกัน), int และ int (บูล - 15 บิตเสีย) ดังนั้น 7 ints

ถ้าคุณเปลี่ยนโครงสร้างให้เป็นอาร์เรย์คอมไพเลอร์อาจจัดสรรสมาชิกแต่ละคนเป็น 8 int ดังนั้นโครงสร้างการจัดตำแหน่งโดยธรรมชาติสำหรับลอยและ ints จะไม่ถูกรบกวน สูญเสีย int อื่น


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