ฟังก์ชั่นซีพียูที่ไม่มีอะไรมากไปกว่าแหล่งจ่ายไฟและ ROM สามารถใช้แคชภายในเป็น RAM ได้หรือไม่?


61

CPU (เช่น Intel i3 / i5 / i7 / Xeon) ที่มี RAM แคชบนชิปสามารถใช้เป็น RAM ทำงานได้โดยไม่ต้องติดตั้งหน่วยความจำภายนอกหรือไม่

หรือต้องมี RAM ภายนอกและไม่สามารถเข้าถึงหรือใช้งานแคชเพียงอย่างเดียวได้

ซีพียูเดสก์ท็อป / เซิร์ฟเวอร์สมัยใหม่มักจะมี RAM แคชภายในมากกว่าคอมพิวเตอร์ในปี 1990 จำนวนมากในหน่วยความจำระบบทั้งหมดดังนั้นจึงควรมีจำนวนมากพอที่จะเรียกใช้รหัสอย่างง่าย

ซีพียูก่อนหน้านี้มีแคชอยู่เช่น 6502 จะไม่สามารถทำอะไรได้เนื่องจาก CPU RAM ภายในมีจำนวนไบต์เพียงไม่กี่ไบต์สำหรับตัวนับที่อยู่และตัวสะสม

นี่ไม่ใช่คำถามของการเรียกใช้ระบบปฏิบัติการสมัยใหม่ทุกประเภท แต่การรันโค้ดง่าย ๆ ที่ตั้งโปรแกรมไว้ใน ROM ที่กำหนดเองหรือป้อนด้วยมือด้วยปุ่มกดฐานสิบหก


1
ทั้งหมดขึ้นอยู่กับ CPU และสิ่งที่คุณหมายถึง "แคช" เพราะ CPU บางตัวมีหน่วยความจำในตัวและไม่ต้องการชิปภายนอก
PlasmaHH

42
หากคุณรวมหน่วยความจำที่กำหนดแอดเดรสไว้ในตัวประมวลผลเองคุณจะสร้างสิ่งที่เราเรียกว่าไมโครคอนโทรลเลอร์ สิ่งเหล่านี้มีอยู่จริง
Marcus Müller

1
ใครบอกว่าคุณต้องการ RAM ใด ๆ เลย?
Chris Stratton

1
ขึ้นอยู่กับวิธีที่คุณกำหนด "ฟังก์ชั่น" ฉันพนันได้เลยว่า i7 นั้นมีความสามารถในการผลิตความร้อนได้อย่างสมบูรณ์แบบโดยมีเพียงแบตเตอรี่ที่เชื่อมต่ออยู่เท่านั้น
Dmitry Grigoryev

2
มีหลายสิ่งที่คุณสามารถทำได้ด้วยการลงทะเบียนเพียงไม่กี่และไม่มี RAM เพิ่มเติม ตัวอย่างเช่นตัวสร้างฟังก์ชั่น
David Schwartz

คำตอบ:


67

ดูรายละเอียดบัญชีลำดับการบู๊ตของพีซีได้ที่: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

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

คุณสามารถสังเกตสิ่งนี้ได้โดยใช้พีซีที่ไม่มี RAM: มันจะเล่นเสียงบี๊บเป็นชุด โปรแกรมที่เล่นนั้นเรียกใช้จาก BIOS Flash ROM

ฉันเคยเห็นพฤติกรรมนี้ในโปรเซสเซอร์ ARM บางตัวด้วย จะมีการลงทะเบียนการกำหนดค่าภายใน SoC ที่อนุญาตให้คุณใช้แคชเป็น RAM ก่อนในลำดับการบู๊ตเพื่อเรียกใช้โปรแกรมที่ค้นหาระบุและกำหนดค่า DRAM


1
ขอให้เรายังคงอภิปรายนี้ในการแชท
vaxquis

2
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของโหมด "cache-as-ram" (CAR) ของ x86ในคำตอบที่นำมาใช้เป็นกรณีการใช้งานINVD(เมื่อออกจากโหมด CAR ให้ทำการทำให้แคชใช้ไม่ได้แทนการเขียนข้อมูลไร้ประโยชน์ไปยังหน่วยความจำ สิ่งที่มีค่า)
Peter Cordes

เกิดอะไรขึ้นกับการเลี่ยงเมื่อ DRAM ไม่พร้อมใช้งาน ปัญหาอ่านไม่ได้แทนที่จะเขียนไปที่ RAM ใช่ไหม
เมห์ราด

14

โดยทั่วไปหน่วยความจำแคชไม่สามารถกำหนดแอดเดรสได้ โปรแกรมไม่สามารถจัดเก็บหรือดึงข้อมูลโดยเจตนา


2
+1 นี่คือคำตอบที่ชาญฉลาดมาก Cachelines ถูกโหลดและยกเลิกตามความประสงค์จากการเข้าถึงที่อยู่จากหน่วยความจำหลักในลักษณะที่เกือบจะสุ่ม
Ale..chenski

17
ใช่นี่คือเหตุผลที่มันต้องใช้โหมดพิเศษ (เช่นในคำตอบของ pjc) หรือกลอุบายพิเศษบางอย่าง ตัวเลือกอื่น (นอกเหนือจากคำตอบที่ยอมรับ) อาจทำให้ระบบคิดว่ามี DRAM บางส่วน แต่หน่วยความจำจริงเขียนเพียงทิ้งข้อมูลและอ่านศูนย์ทั้งหมด (หรือข้อมูลจริงจาก ROM สำหรับบางส่วนของที่อยู่) ตราบใดที่การโหลดทั้งหมดเข้าสู่แคชระบบจะทำงานอย่างถูกต้อง IDK มากพอเกี่ยวกับวิธีที่ x86 บูทรู้ว่าเป็นไปได้หรือไม่ที่จะเข้าสู่โหมดยาว 64- บิตโดยไม่ต้องล้างแคชจริง
ปีเตอร์กอร์เดส

3
อย่างไรก็ตามซีพียู Skylake ที่มีแคช eDRAM ในแพ็คเกจใช้งานเป็นแคชหน่วยความจำ (ระหว่างตัวควบคุมหน่วยความจำและสิ่งอื่น ๆ ซึ่งแตกต่างจาก Broadwell) ดังนั้นจึงสามารถแคช DMA เข้าถึงได้จากอุปกรณ์ระบบที่ไม่ใช่ CPU หรือโหลด CPU / จัดเก็บไปยังพื้นที่หน่วยความจำ "uncacheable" (ซึ่งข้าม L1 / L2 / L3)
ปีเตอร์กอร์เดส

3
@PeterCordes อย่างไรก็ตามคำตอบไม่ใช่ "ไม่" เพียงเพราะต้องการโหมดพิเศษ - คำถามนั้นเกี่ยวกับว่ามีโหมดพิเศษอยู่หรือไม่
user253751

1
คำถามคือ - จะเกิดอะไรขึ้นถ้าคุณใช้แคชอย่างไรก็ตามและตรวจสอบให้แน่ใจว่าจะไม่พลาดหรือถูกลบ - มันจะกลายเป็นแอดเดรสเมื่อสิ่งที่เขียนไปยังที่อยู่ใน RAM ที่ไม่มีอยู่ไม่มี? การเขียนที่แท้จริงถูกทิ้งไว้บนพื้น แต่การอ่านนั้นทำหน้าที่แคช
rackandboneman

9

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

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

เมื่อก่อนค่าใช้จ่ายของ RAM สูงและเนื่องจากเป็นโครงการงานอดิเรกการลดค่าใช้จ่ายจึงมีความสำคัญนอกเหนือจากการฝึกหัดเชิงวิชาการที่น่าสนใจ นี่คือก่อนหน้าวันที่ไมโครคอนโทรลเลอร์ที่ใช้งานได้อย่างกว้างขวาง (8751 ที่มีค่า eprom มากกว่า 100 ปอนด์สเตอลิงก์ IIRC)


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

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

-3

โดยทั่วไปแล้วซีพียูจะต้องใช้นาฬิกาภายนอก แต่ด้วยความที่ใช่มันสามารถ


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