คอมพิวเตอร์ที่ไม่มี RAM แต่มีดิสก์เท่ากับคอมพิวเตอร์ที่มี RAM หรือไม่


18

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

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



3
แนวคิดเบื้องหลังคำถามนี้คืออะไร
Yves Daoust

12
กำหนด "ดิสก์" เรากำลังเคลื่อนไปสู่โลกที่ไร้ดิสก์ (ฉันดีใจที่ Terry Pratchett ไม่ต้องเป็นพยาน) ซึ่งหมายความว่าที่เก็บข้อมูลทั้งหมดจะเป็นสถานะของแข็งหรืออีกประเภทหนึ่งซึ่งเป็นการตอบคำถามของคุณแม้ว่าอาจจะย้อนกลับไป
Peter - Reinstate Monica

2
หน่วยความจำคือหน่วยความจำคือหน่วยความจำ
Édouard

8
หน่วยความจำแบบสุ่มแอดเดรสไม่ได้เป็นความต้องการที่ดีที่สุดสำหรับคอมพิวเตอร์ของฉัน เทปจากเครื่องทัวริงไม่สามารถระบุแอดเดรสแบบสุ่มได้ ไม่มีอะไรป้องกันคุณจากการอ่าน / เขียนบล็อกเพียงหนึ่งบิตต่อบล็อกหากคุณต้องการ
Édouard

คำตอบ:


24

แน่ใจ โดยหลักการแล้วหากได้รับฮาร์ดแวร์ที่เหมาะสมคุณอาจมีเพียงดิสก์ด้วยทุกสิ่งที่เก็บไว้ในดิสก์ เมื่อใดก็ตามที่ CPU ทำการโหลดหรือเก็บคำสั่งอาจมีฮาร์ดแวร์บางตัวที่เปลี่ยนให้เป็นการอ่านหรือเขียนดิสก์ มันช้ามาก: บนดิสก์แม่เหล็กแต่ละการค้นหาใช้เวลาประมาณ 10 มิลลิวินาทีดังนั้นคุณสามารถอ่านและเขียนแบบสุ่มได้ประมาณ 100 ครั้งต่อวินาที

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


6
@MSalters ทำให้เป็นจุดที่ดีว่าถ้าเราปรับเปลี่ยนดิสก์ (หรือเลเยอร์ฮาร์ดแวร์พิเศษด้านบน) เพื่อทำให้มันเป็นเหมือนแรมเราก็อาจจะเรียกมันว่าแรม ปัญหาคือว่าคำถาม"เป็นไปได้ที่จะทำไปกับหน่วยความจำและเพียงแค่มีดิสก์"จะคลุมเครือเกินไป เราหมายถึงอะไรโดยหน่วยความจำและดิสก์? เราหมายถึงสิ่งที่มีอยู่ในพีซีตั้งโต๊ะที่ทันสมัยหรือไม่? จากนั้นคำตอบคือไม่ เราหมายถึงหน่วยความจำและดิสก์บางอย่างใช่หรือไม่? จากนั้นในกรณีนั้นความแตกต่างระหว่างทั้งสองก็เบลออยู่แล้วและคำถามนั้นเทียบเท่ากับ"เป็นไปได้ไหมที่จะมีคอมพิวเตอร์ที่มีแรมแบบกลไก" .
JBentley

1
ผลงาน AS / 400 เช่นนี้ มีการจัดเก็บข้อมูลระดับเดียวและมีเพียงที่อยู่พื้นที่เดียว ดิสก์และหน่วยความจำจะถูกรวมเข้ากับการจัดเก็บข้อมูลเดียวโดยเฟิร์มแวร์แพลตฟอร์มระบบปฏิบัติการของตัวเองเห็นเพียงพื้นที่จัดเก็บข้อมูลแบบแบนเดียว ไม่มีตัวชี้การอ้างอิงวัตถุเท่านั้น วัตถุจะถูกย้ายจากหน่วยความจำไปยังดิสก์และกลับมาอย่างโปร่งใสโดยเฟิร์มแวร์แพลตฟอร์ม (BIOS ใน PC-speak, SLIC ใน AS / 400-speak) มันจะไม่สร้างความแตกต่างให้กับระบบปฏิบัติการและแอพพลิเคชั่นหากคุณลบดิสก์และมี RAM เท่านั้นหรือลบ RAM และมีดิสก์เท่านั้น
Jörg W Mittag

นอกจากนี้ฉันคิดว่าชีวิต HDD จะสั้นกว่ามาก และแย่ยิ่งกว่าสำหรับ SSD ส่วนใหญ่มีแนวโน้มว่าทำไมโทรศัพท์ Android ไม่มี swap
Suici Doga

16

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

แน่นอนไม่มีฮาร์ดไดรฟ์ "ไม่ จำกัด พื้นที่" แต่ไม่มี RAM ไม่ จำกัด

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


14

คำถามนั้นไม่ได้เป็นวิชาการอย่างแท้จริง มันเป็นเรื่องของการบันทึกทางประวัติศาสตร์ว่าเป็นหนึ่งในคอมพิวเตอร์ที่ผลิตเร็วที่สุดในเชิงพาณิชย์ [ขออภัยฉันจำไม่ได้ว่า offhand] ไม่มี RAM ใด ๆ - โปรแกรมทั้งหมดดำเนินการโดยดึงคำแนะนำโดยตรงจากถังแม่เหล็ก [กระบอกหมุน กับพื้นผิวด้านนอกเป็นสนามแม่เหล็ก (ดิสก์มาภายหลัง)] มันค่อนข้างช้า แต่ถูกกว่าการแข่งขันมาก [นี่เป็นวิธีย้อนกลับไปในยุค 'tube']

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


3
คุณอาจจะคิดของ Stantec ม้าลาย - archive.computerhistory.org/resources/text/Standard/... พวกเขายังคงมีหนึ่งในแผนก CS เมื่อฉันไปมหาวิทยาลัยในปี 1967
David Marshall

3
ที่จริงฉันคิดว่าฉันอาจจะคิดถึง IBM 1408
PMar

8
ดูเรื่องของเมล ( catb.org/jargon/html/story-of-mel.html ) ซึ่งเกี่ยวกับโปรแกรมเมอร์ที่ทำงานกับ Royal McBee LPG-30 ซึ่งมีหน่วยความจำดรัม
db48x

@ db48x: ฉันลืมไปแล้วว่าเรื่องราวมันเจ๋งขนาดไหน ฉันอาจยังไม่ได้อ่าน 10 ปี
Peter Cordes

7

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

ด้วยเหตุนี้คุณต้องมีที่เก็บข้อมูลแบบสุ่มเข้าถึงบล็อกหนึ่งบล็อก นี่อาจเป็น CPU แคชซึ่งทำจาก SRAM (RAM ชนิดรวดเร็ว)

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

คุณสามารถสร้างพื้นที่เก็บข้อมูลถาวรที่ CPU ใช้งานได้โดยตรง ที่เก็บข้อมูล EEPROM จะอยู่ในหมวดหมู่นี้ (หน่วยความจำ "อ่านอย่างเดียว" ที่สามารถลบได้ด้วยโปรแกรมอิเล็กทรอนิกส์ - แม้ว่า "เพิ่มประสิทธิภาพการอ่าน" จะเป็นคำอธิบายที่ดีกว่าในความเป็นจริง)


5
ฉันคิดว่า "ไม่" ของคุณควรเป็น "ใช่ แต่ต้องใช้ดิสก์แบบกำหนดเอง"
Taemyr

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

3
และ "การบล็อก" ถูกทำขึ้นเพื่อการใช้พื้นที่ดิสก์อย่างมีประสิทธิภาพ: คุณต้องการพื้นที่รอบ ๆ ข้อมูล "ของจริง" แต่ละชิ้นเพื่อระบุบล็อกให้เว้นระยะ "ยาม" ระหว่างบล็อกเป็นต้นไม่มีเหตุผลทางเทคนิคที่บล็อกไม่สามารถเป็นหนึ่งได้ ไบต์ยาว (แต่ความเร็วจะลดลงไปอีกตามความจุ)
TripeHound

6
อันที่จริงแม้ RAM ปัจจุบันไม่ได้จริงๆไบต์แอดเดรส - DDR3 ทำงานในระเบิดและต่ำสุดอ่าน / เขียนขนาดคือ 8 คำ 64 บิต (เช่น 64 ไบต์); ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ฉันพนันได้เลยว่าจำเป็นต้องมีการเข้าถึงที่สอดคล้องกัน ทั้งหมดนี้ไม่แตกต่างจากดิสก์รุ่นเก่าที่ขนาดบล็อกอยู่ในลำดับ 512 ไบต์ดังนั้นฉันจะบอกว่าความแตกต่างเหล่านี้ส่วนใหญ่เป็นประวัติศาสตร์บรรทัดจะเบลอจริง ๆ
Matteo Italia

1
(เช่นไม่มีอะไรหยุดคุณที่จะใช้ทั้งบล็อก - ขนาดอะไรก็ได้ - แค่ถือหนึ่งไบต์ - ไม่มีประสิทธิภาพนิดหน่อย แต่ตราบใดที่ฉันไม่ใช่คนจ่ายดิสก์มันก็โอเค)
Matteo Italia

1

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

หากคุณมี CPU เช่น Xeon ขนาดใหญ่ 12 แกนที่มีหน่วยความจำแคช 30 MB อาจเป็นไปได้ที่จะมีระบบที่ไม่มีทั้ง RAM หรือฮาร์ดไดรฟ์ แต่ใช้เพียงหน่วยความจำแคช (ไม่แน่ใจว่าใช้งานได้จริงหรือถ้าจำเป็นต้องใช้ RAM ด้วยเหตุผลบางอย่าง)


IIRC, x86 มีโหมดที่ใช้แคชภายในเป็นหน่วยความจำหลัก electronics.stackexchange.com/questions/16485/…มีรายละเอียดบางอย่าง ฉันคิดว่าบางครั้งเรียกว่า "ไม่มีโหมดการเติม" เช่น CPU ไม่ได้พยายามเติมแคชไลน์จากหน่วยความจำภายนอก สิ่งนี้อาจขัดขวางการใช้ DMA สำหรับฮาร์ดไดรฟ์ I / O เนื่องจาก "ตัวแทนระบบ" ไม่สามารถ DMA ลงในแคช L3 มันอาจทำงานบน Skylake ด้วย L4 eDRAM เพราะตั้งค่าเป็นแคชด้านหน่วยความจำ (ไม่เหมือนกับ Broadwell) ที่สามารถแคชทุกอย่างรวมถึง DMA Programmed-IO ยังคงใช้งานได้กับดิสก์
Peter Cordes

แน่นอนว่า ณ จุดนี้คุณใช้งาน System-on-Chip พร้อม RAM ขนาด 128MiB ซึ่งเป็นจำนวนเงินที่เหมาะสมเมื่อ 15 ปีก่อน ด้วยแคช L3 SRAM เพียงอย่างเดียวนั่นยังคงอยู่ที่ 4 ถึง 8MiB ในชิปเดสก์ท็อปซึ่งอาจเพียงพอสำหรับลีนุกซ์ที่ถูกขีดฆ่ามาก แต่ก็เพียงพอสำหรับ DOS หากรหัสส่วนใหญ่ของคุณอยู่ใน ROM ไม่ใช่ RAM ก็ถือว่าใช้ได้
Peter Cordes

1

มันเป็นไปได้ในแนวความคิด RAM เป็นเพียงระดับแคช มีระดับการแคชจำนวนมากในคอมพิวเตอร์สมัยใหม่ (ดู CPU L1, L2, L3 .. แคชแน่นอน Ram พื้นที่สลับ - ซึ่งเป็นส่วนตรรกะของดิสก์ที่ใช้เป็น RAM ...-) หากคุณใส่ หรือเพิ่มหนึ่งรายการเครื่องจะทำงาน ตัวอย่างเช่นอูบุนตูไลฟ์ซีดีอาจไม่ใช้ระดับแคชของ HDD อย่างไรก็ตามฉันไม่คิดว่าจะมีระบบปฏิบัติการใดที่สามารถรองรับการขาดระดับ RAM


1
ไม่ใช่ระบบปฏิบัติการ แต่เป็นฮาร์ดแวร์ที่ได้รับการออกแบบซึ่งต้องการคำแนะนำในการใช้หน่วยความจำ (จริง ๆ แล้วแมปบนพื้นที่ที่อยู่)
Ángel

@Angel จำเป็นจริงๆในระบบปฏิบัติการสมัยใหม่หรือไม่ที่จะโหลดข้อความ (คำสั่ง), bss, stack และ heap ลงในหน่วยความจำเพื่อให้โปรแกรมทำงานได้? พวกเขาไม่สามารถอยู่บน swap (ดิสก์) หรือไม่ ใน Linux ให้พูด
Tosh

1
เรากำลังพูดถึงวิทยาการคอมพิวเตอร์หรือวิศวกรรมคอมพิวเตอร์? ฉันไม่รู้การนำระบบปฏิบัติการมาใช้ไม่ว่าจะเป็นระดับฮาร์ดแวร์หรือไม่ฉันก็แค่ทำวิทยานิพนธ์ศาสนจักรทัวริงเท่านั้น บางทีนี่อาจเป็นไปไม่ได้หากใช้ฮาร์ดแวร์ปัจจุบันที่มีอยู่ในตลาดหรือใช้ระบบปฏิบัติการที่มีอยู่ แต่อาจเป็นไปได้ในสถานการณ์เชิงทฤษฎี
Picci

1
@Tosh มันไม่ใช่ปัญหาของระบบปฏิบัติการ แต่เป็นฮาร์ดแวร์ CPU ของคุณดำเนินการคำสั่งเดียวที่อยู่ในหน่วยความจำที่ชี้โดยตัวชี้คำสั่ง ดังนั้นการมีดิสก์จะไม่ทำงาน (โดยไม่ต้องเปลี่ยนฮาร์ดแวร์ของคุณ) ตอบคำถามของคุณไม่จำเป็นต้องโหลดทุกส่วนในหน่วยความจำอันที่จริงแล้วระบบปฏิบัติการอาจโหลดเฉพาะเมื่อโปรแกรมพยายามเข้าถึง ตัวอย่างตัวนับที่รุนแรงคุณสามารถเรียกใช้โปรแกรม "จากดิสก์" โดยใช้โปรแกรมจำลองที่อ่านหนึ่งคำ * ต่อครั้งจาก hdd แต่คุณจะต้องมีในหน่วยความจำเพื่อให้คุณยังคงต้องบาง RAM
Ángel

1
ขออภัย @Tosh: "ผู้เอาอย่างของคุณจะต้องอยู่ในความทรงจำ"
Ángel

-1

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


ยินดีต้อนรับสู่ CS.SE! คุณสามารถปรับการอ้างสิทธิ์ของคุณว่าค่าใช้จ่ายในการอ่าน - เขียนเพิ่มขึ้นเพิ่มโอกาสที่ระบบล่มบ่อยครั้งหรือไม่ นั่นฟังดูไม่เหมาะสมสำหรับฉัน
DW

มันขึ้นอยู่กับว่าคุณใช้อะไรอยู่ เช่นเดียวกับใน unix / Linux มีแนวคิดที่เรียกว่าบัฟเฟอร์แคช สามารถใช้เพื่อจัดเก็บบล็อกที่ดึงข้อมูลล่วงหน้าหรือบล็อกที่ทำเครื่องหมายสำหรับการเขียนล่าช้า แต่ใน Windows หรือ Mac ไม่มีแนวคิดดังกล่าว ดังนั้นคุณต้องเข้าถึงบล็อกที่จำเป็นจากที่เก็บข้อมูลสำรอง ตอนนี้ในขณะที่รันกระบวนการแบบขนานค่าใช้จ่ายการอ่านจะเพิ่มขึ้นและความเร็วในการประมวลผลจะลดลงตามมา กระบวนการจะไม่สามารถดำเนินการได้ดังนั้นจึงทำให้คอมพิวเตอร์ช้าลงจนเริ่มหยุดทำงานและขัดข้องในภายหลัง
Sanket Gupte

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