หน่วยความจำแฟลชรอสถานะคืออะไร?


10

ฉันใช้ไมโครคอนโทรลเลอร์ PowerPC แบบฟรีสเกล ในโมดูลหน่วยความจำแฟลชในแผ่นข้อมูลจำนวนกำหนด "สถานะรอของการเข้าถึงหน่วยความจำแฟลช" ได้

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

ฟิลด์นี้ต้องตั้งค่าเป็นค่าที่สอดคล้องกับความถี่ในการใช้งานของ PFlash และเวลาเข้าถึงการอ่านจริงของ PFlash ความถี่ในการใช้งานที่สูงขึ้นจำเป็นต้องมีการตั้งค่าที่ไม่เป็นศูนย์สำหรับฟิลด์นี้เพื่อการใช้งานแฟลชที่เหมาะสม
0 MHz, <23 MHz, สถานะรอจำเป็น = 0 ---
23 MHz, <45 MHz, สถานะรอจำเป็น = 1 ---
45 MHz, <68 MHz, สถานะรอจำเป็น = 2 ---
68 MHz, <90 MHz รอสถานะที่จำเป็น = 3 ---

(PFlash เป็นโมดูลควบคุมแพลตฟอร์ม Flash)

ฉันเข้าใจว่าตัวประมวลผลเร็วกว่าแฟลชนั่นเป็นสาเหตุที่ทำให้มีสถานะรอคอย สิ่งที่ฉันไม่เข้าใจคือ: ถ้าตัวประมวลผลเร็วกว่าแฟลชตัวประมวลผลคือตัวที่ต้องชะลอตัวลงไม่ใช่แฟลช แต่ย่อหน้าข้างต้นบอกว่าตรงกันข้าม (หรือฉันไม่เข้าใจสิ่งนี้) กล่าวว่าในกรณีที่ Pflash ทำงานด้วยความถี่สูงเราจำเป็นต้องชะลอความเร็วลงโดยเพิ่มสถานะการรอเพิ่มเติม !!

เกิดอะไรขึ้นกับความเข้าใจของฉัน?

ขอบคุณ


1
หากฉันเข้าใจถูกต้องตัวควบคุมที่สามารถตั้งค่าความเร็วต่างกันคือ; ดังนั้นต้องรอว่าหน่วยความจำแฟลชจริงมีข้อมูลที่พร้อมใช้งาน
clabacchio

คำตอบ:


8

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

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


ดี! ขอบคุณสำหรับรายละเอียดที่เป็นประโยชน์ที่คุณอธิบาย!
MohamedEzz

1
@MemoryLeaks: ความสุขของฉัน สิ่งสำคัญที่ควรทราบคือการลดสถานะรอต่ำกว่าขีด จำกัด ที่ระบุจะทำให้ระบบทำงานได้เร็วขึ้น แต่การอ่านจากหน่วยความจำอาจให้ข้อมูลที่ไม่ถูกต้องตามอำเภอใจ ต่อไป "ข้อมูลที่ไม่ถูกต้องตามอำเภอใจ" อาจหมายถึง "ให้ข้อมูลที่ถูกต้องจนกว่าอุปกรณ์ที่คุณออกแบบจะอยู่ในมือของลูกค้าแล้วเริ่มให้ข้อมูลที่ไม่ถูกต้องบ่อยครั้งพอที่จะทำให้ลูกค้าโกรธคุณมาก"
supercat

1
ดูเหมือนว่าการโอเวอร์คล็อกแบบขนานอย่างใกล้ชิด แต่มีตัวเลือกที่กำหนดค่าได้มากกว่า วิธีที่น่าสนใจในการโอเวอร์คล็อก MCU อาจเป็นไปได้
sherrellbc

1
@supercat คำถามหนึ่งสิ่งที่หมายถึงโดยตัวควบคุมมันคือโปรเซสเซอร์หรือหน่วยความจำหรือไม่
Mouin

1
@Mouin: ตัวควบคุมหน่วยความจำถ้ามีหรือตัวประมวลผลถ้าไม่มี
supercat

9

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


1
ดังนั้นโดยการกำหนดค่าการตั้งค่าที่ฉันกำลังบอกตัวควบคุมหน่วยความจำเมื่อสัญญาณ "ข้อมูลพร้อม" ว่า ฉันไม่สามารถบอกให้หน่วยความจำส่งสัญญาณ "data ready" เมื่อพร้อมใช้งานจริงได้หรือไม่?
MohamedEzz

1
@MemoryLeaks - เป็นไปได้และทำได้โดยตัวประมวลผลแบบอะซิงโครนัสซึ่งหายาก เป็นเรื่องปกติและคาดเดาได้มากขึ้นในการซิงโครไนซ์ทุกสิ่งโดยใช้นาฬิกา ดังนั้นอาจเป็นความล่าช้าของวงจรนาฬิกา (หรือ 2 หรือ 3) หรือไม่มีอะไรเลย
stevenvh

ขอบคุณสำหรับคำตอบของคุณ :) ดังนั้นเพื่อสรุป: คำอธิบายในคำถามของฉันข้างต้นหมายถึงมันจะล่าช้า "ซีพียู" และไม่ควบคุมแฟลช
MohamedEzz

1
@stevenvh ตัวประมวลผลวางสายอย่างแท้จริงนี้มันได้รับข้อมูลจากหน่วยความจำฉันหมายความว่ามันจะหยุดการดำเนินการอย่างสมบูรณ์หรือมันจะดำเนินการคำแนะนำอื่น ๆ ในกรณีของซีพียู pipelined สิ่งที่เกี่ยวกับการขัดจังหวะฉันคิดว่าพวกเขาจะได้รับการบริการในขณะที่ CPU กำลังรอให้หน่วยความจำพร้อม?
Miguel Sanchez

3

โปรเซสเซอร์อาจต้องหยุดการทำงานในหน่วยความจำ แต่การออกแบบที่ชาญฉลาดไม่จำเป็นต้อง

ฉันคิดว่าเทคโนโลยีหลักที่คุณไม่ทราบคือการเข้าถึงโหมดต่อเนื่อง/ หน้า ที่ช่วยให้แบนด์วิดท์ของหน่วยความจำเข้าถึงใกล้เคียงกับความเร็วโปรเซสเซอร์มาก (แต่อาจแฟลชยังคงเป็นคอขวดเนื่องจากฉันไม่เคยเห็น MCU ที่ใช้แฟลชที่ทำงานที่> 200MhZ)

อย่างไรก็ตามเวลาแฝงยังคงเหมือนเดิม ตัวอย่างเช่นสำหรับ STM32F4 MCU ที่ฉันใช้ #wait states = floor (clockSpeed ​​/ 30MhZ) นั่นหมายถึงเวลาในการตอบสนองอยู่ที่ 33ns โดยไม่คำนึงถึงความเร็วสัญญาณนาฬิกา มีคำพูดว่า "เงินสามารถซื้อแบนด์วิดท์ แต่เวลาแฝงอยู่ตลอดไป ... "

แม้ว่าแบนด์วิดท์แฟลชไม่เพียงพอที่จะทำให้ CPU ไม่ว่างคุณสามารถออกแบบแคชรหัสที่จัดเก็บและดึงคำแนะนำล่วงหน้าที่คาดว่าจะใช้งานได้อย่างง่ายดาย ST มีคำใบ้เกี่ยวกับเรื่องนี้สำหรับ STM32F4 MCU (168 MhZ):

ขอบคุณที่เร่งความเร็ว ART และหน่วยความจำแฟลช 128 บิตจำนวนสถานะรอที่ระบุในที่นี้ไม่ส่งผลกระทบต่อความเร็วในการดำเนินการจากหน่วยความจำแฟลชเนื่องจากตัวเร่งความเร็ว ART อนุญาตให้ทำงานได้เทียบเท่ากับการดำเนินการโปรแกรมสถานะรอ 0

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


สายอยู่ไกลจาก "ฟรี" บนชิปโดยทั่วไปพูด แต่การเพิ่มความกว้างบัสระหว่างอาร์เรย์หน่วยความจำและชุดสลักไม่ได้เพิ่มสายไฟ หากชิปมีอาร์เรย์แฟลช 256kbit ที่จัดเป็นตาราง 512x512 การเดินสายและตรรกะในการรวม 512 คอลัมน์ไปยังบัส 32 บิตนั้นจำเป็นหรือไม่ว่าจะมีการวางสลักกว้าง 512 บิตก่อนที่จะมีการควบแน่นและตรรกะ หรือสลักกว้าง 32- บิตหลังจากนั้น
supercat

1
ฉันหมายถึงพวกเขา "ฟรี" เมื่อเทียบกับพินภายนอก ฉันรู้ว่าพลังงานเส้นลวดมีอิทธิพลเหนือทุกวันนี้และท้องที่นั้นมีความสำคัญดังนั้นให้ฉันผ่านการรับรองว่า พวกเขาทำฟรี แต่ไม่เปิดฟรี!
Yale Zhang

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