เราสามารถรัน linux ในบางสิ่งได้เร็วกว่าแรมหรือไม่?


21

นี่อาจเป็นคำถามที่งี่เง่าและอาจเป็นผลมาจากความเข้าใจผิด ฉันกำลังศึกษา CPU อยู่ตอนนี้และหน่วยความจำโดยเฉพาะ ฉันเพิ่งอ่านว่า SRAM นั้นเร็วกว่า DRAM มากแค่ไหน แต่มีราคาแพงกว่า SRAM แพงมาก: ฉันซื้อมาสักหน่อยแล้วพบว่าการ์ด SRAM ใช้พลังงานจากแบตเตอรี่ขนาด 16 MB ราคาประมาณ $ 400

เมื่อเร็ว ๆ นี้มีเพื่อนคนหนึ่งกล่าวว่าเขาใช้ลูกสุนัขลินุกซ์ใน RAM และมันเร็ว ฉันสังเกตว่าแม้ว่าลินุกซ์คอร์ตัวจิ๋วนั้นอาจเล็กกว่า ... เล็กถึง 8 MB! นี่ทำให้ฉันคิดว่า: เราสามารถเรียกใช้ linux ใน SRAM ได้หรือไม่? คำถามนี้เกิดขึ้นได้ดีหรือไม่

Googling คำถามนี้พิสูจน์แล้วว่าไม่มีประสิทธิภาพ แต่ก็ยังมีคำถามเพิ่มขึ้นอีก สามารถเรียกใช้ linux ใน L3 Cache ได้หรือไม่ Intel Core i7 สามารถมี L3 Cache ใหญ่พอที่จะพอดีกับ 8MB ... แต่ฉันทำข้อผิดพลาดหมวดหมู่หรือไม่ ความแตกต่างระหว่างสิ่งนี้กับลินุกซ์ 'ฝังตัว' คืออะไร?

นั่นคือคำถาม: เราสามารถเรียกใช้ linux ใน SRAM หรือ L3 Cache ได้หรือไม่ มีอะไรเร็วขึ้นไหม เราจะลินุกซ์เร็วแค่ไหน!?

Z


3
ลินุกซ์ในตัวมักใช้งานบน ram หรือหน่วยความจำไม่ลบเลือน ลินุกซ์ในตัวมักจะถูกดึงลงมาเพื่อให้ทำงานบนฮาร์ดแวร์เฉพาะเท่านั้นหรือใช้ตัวเลือกเคอร์เนลที่พบได้น้อยเช่น latency ต่ำ
Journeyman Geek

2
ฉันสงสัยว่าคำถามนี้มีประโยชน์หรือไม่?
Robert Niestroj

4
+1 สำหรับการใช้ "linux" เป็นคำกริยา (ในประโยคสุดท้าย)!
Vorac

คำตอบ:


20

Linux หรือระบบปฏิบัติการอื่น ๆ ไม่ทราบว่า RAM ทำงานอย่างไร ตราบใดที่มีการกำหนดค่าตัวควบคุมหน่วยความจำอย่างเหมาะสม (เช่นอัตราการรีเฟรชที่ไม่ใช่ SRAM) ระบบปฏิบัติการก็ไม่สนใจว่ามันจะทำงานบนหน่วยความจำแบบไดนามิกธรรมดา (RAM ธรรมดา), RAM หน้าโหมดเร็ว (RAM RAM จาก C64-ish ครั้ง), โหมดขยายข้อมูลออก RAM (EDO), RAM แบบซิงโครนัส (SDRAM), SDRAMS อัตราการส่งข้อมูลใด ๆ (DDR 1/2/3) ใด ๆ ก็ตาม

ทั้งหมดสนับสนุนการอ่านและการเขียนจากสถานที่สุ่ม ทั้งหมดจะทำงาน

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

ตามทฤษฎีแล้วคุณสามารถใช้มันได้

แต่สำหรับการปฏิบัติงานจริงระบบที่มีหน่วยความจำ 'ปานกลาง' ปกติ '1 GB จะทำงานได้ดีกว่ามากด้วยหน่วยความจำเร็วเร็วเพียงไม่กี่ MB ซึ่งหมายความว่าคุณมีสามตัวเลือก:

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

ยกเว้นในกรณีที่หายากมากคนสุดท้ายไม่สมเหตุสมผล


6
CPU หลายตัวรองรับโหมด "cache-as-RAM" ผ่านการลงทะเบียนเฉพาะรุ่นของ CPU (MSRs) นอกจากนี้โปรดทราบว่า SRAM ใช้พลังงานมากกว่า DRAM และนั่นก็เป็นปัจจัยการออกแบบ หากแคชของ CPU มีขนาดใหญ่พอหรือเคอร์เนลมีขนาดเล็กพอที่คุณสามารถเปิดใช้งานโหมดแคช -as-RAM นี้และให้ดำเนินการทั้งหมดใน SRAM บน CPU คุณจะมี RAM จำกัด ในการใช้งานโปรแกรม ฯลฯ เนื่องจาก AFAIK cache-as-RAM และโหมดปกติจะไม่ทำงานพร้อมกัน ฉันอาจจะผิดเกี่ยวกับที่แม้ว่า แม้ว่าจะเป็นเช่นนั้นความเร็วของ CPU ส่วนใหญ่ในทุกวันนี้ก็เกิดจากการใช้แคช L2, L3
LawrenceC

@Hennes เป็นเพราะ Linux สนใจเฉพาะที่อยู่หน่วยความจำ (แมป) หรือไม่
Alvin Wong

SDRAM เป็น RAM D (ynamic) แบบซิงโครนัสในขณะที่ SRAM เป็น RAM แบบคงที่ ฉันไม่รู้ว่าอันไหนที่คุณหมายถึงในย่อหน้าแรกและฉันไม่มีตัวแทนที่จะทำการแก้ไข "เล็กน้อย" แต่คุณอาจแก้ไขได้ไหม นอกจากนั้นคำตอบที่ดี
CVn

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

เมื่อฉันอ่านความคิดเห็นนี้ครั้งแรกที่ฉันเห็น "Linux หรือระบบปฏิบัติการอื่น ๆ ไม่ทราบว่า RAM ทำงานอย่างไร" การเสียของคุณเป็นสิ่งที่ดี: ฉันคิดว่าฉันไม่มีภาพลวงตาว่านี่จะ "ดีขึ้น" ฉันแค่สงสัยว่ามันสามารถทำได้
Ziggy

8

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

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


1
ไม่สามารถ / จะคัดลอกได้ทั้งหมด สำหรับโครงสร้างแคช Intel / x86: ถ้าฉันมีแคช 256KiB และแคช 1024KiB ฉันสามารถอ่านที่อยู่ 0 ได้มันจะถูกเก็บไว้ในแคชที่ตำแหน่ง 0 ฉันสามารถอ่านที่อยู่ 1 และจะถูกเก็บไว้ในแคชที่ตำแหน่ง 1 อย่างไรก็ตามถ้าฉันอ่านที่อยู่จาก (256Kib + 1) ที่จะถูกเก็บไว้ที่ที่อยู่ 1 ในแคช แคชใช้ SRAM พิเศษ (แท็ก) เพื่อระบุว่าเก็บไว้ในรายการใด ซึ่งหมายความว่าการอ่านจากขนาดแคชหลายรายการจะใช้งานไม่ได้ (โปรดทราบว่านี่จะเป็นของหายากและมักจะถูกละเว้น)
Hennes

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

3

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

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


2

"เราสามารถเรียกใช้ linux ใน L3 Cache ได้หรือไม่"

ไม่เป็นไปไม่ได้เพราะหน่วยความจำแคชไม่ได้ระบุโดยตรง / เป็นเชิงเส้น
เนื่องจากวิธีการออกแบบหน่วยความจำแคชรีจิสทรีของCPU Program Counter (IP)จึงไม่สามารถชี้ไปที่ตำแหน่งในหน่วยความจำแคชได้

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


1

"เราสามารถเรียกใช้ linux ใน L3 Cache ได้หรือไม่"

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

"เราสามารถเรียกใช้ linux ใน SRAM ได้หรือไม่"

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

"มีอะไรเร็วกว่านี้เราจะลินุกซ์เร็วแค่ไหน!?"

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


1

ย้อนกลับไปในสมัยของ 486ES เคยเป็นเครื่องจักรที่ RAM ทั้งหมดเป็น SRAM สิ่งนี้กลับมาเมื่อ 8MB เป็นจำนวนมาก แต่ดูเหมือนจะตรงกับข้อ จำกัด ของคุณ ฉันแน่ใจว่า 8MB ของ SRAM ราคาถูกกว่าตอนนี้มาก

ดังนั้นคุณสามารถเรียกใช้ Linux ใน SRAM ได้หากเครื่องนั้นเป็นแบบนั้น มันไม่ใช่เชิงทฤษฎี มันเสร็จแล้ว

แต่ไม่ใช่ในแคช แคชมีสายแตกต่างกันและที่สำคัญกว่านั้นแตกต่างกัน คุณไม่สามารถพูดได้เหมือนกัน มีการแมปชิ้นแตกต่างกันไม่ใช่ชิ้นที่ต่อเนื่อง และเนื้อหาไม่จำเป็นต้องเป็นสิ่งที่คุณเห็นบนดิสก์ - ชิป Intel รุ่นใหม่ทำในเวลาเพียง "คอมไพล์" (มากกว่า CISC => RISC-micro-op เข้ารหัสซ้ำ) ที่ micro-op เป็นสิ่ง ที่สิ้นสุดในแคช สรุปแล้วสิ่งที่อยู่ในแคชไม่ใช่โปรแกรมของคุณ แต่เป็นการเปลี่ยนแปลงมุมมองดังนั้นคุณจึงไม่สามารถใช้มันเพื่อเป็นตัวแทนหน่วยความจำของโปรแกรมของคุณได้อีกต่อไป

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

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