ทำไมการออกแบบระบบปฏิบัติการถึงสามารถลดการใช้พลังงานได้?


11

ฉันได้อ่านแล้วว่าระบบปฏิบัติการอย่าง Android และ iOS นั้นได้รับการปรับปรุงให้ดีขึ้นเพื่อปรับปรุงอายุการใช้งานแบตเตอรี่

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

นอกจากนี้หากกระบวนการใช้ RAM มากกว่าจะใช้พลังงานมากกว่าหรือไม่

คำตอบ:


15

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

ซีพียูที่ได้รับการปรับให้เหมาะสมสำหรับอุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่มักจะประกอบด้วยส่วนประกอบที่ใช้งานได้หลายอย่างซึ่งแต่ละตัวมีนาฬิกาของตัวเอง (ตัวอย่าง: ARM Cortex A8 ) เมื่อส่วนประกอบหนึ่งไม่มีการใช้งานระบบปฏิบัติการสามารถปิดได้ (หรือลดเวลาลง) ซึ่งจะช่วยประหยัดพลังงาน ตัวอย่างเช่นใน CPU แบบมัลติคอร์จำนวนมาก (เช่นที่อยู่ในอุปกรณ์มือถือระดับไฮเอนด์) แต่ละคอร์สามารถเปิดหรือปิดแยกกันได้ ARM เป็นเกมที่ดีโดยเฉพาะซึ่งเป็นหนึ่งในเหตุผลที่สมาร์ทโฟนส่วนใหญ่มีซีพียู ARM

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

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

แอปพลิเคชันมีส่วนร่วมในการลดการใช้พลังงาน: พวกเขาจะต้องยอมให้ระบบปฏิบัติการทำสิ่งนั้น สิ่งที่แย่ที่สุดเป็นโปรแกรมที่สามารถทำได้คือการเลือกตั้ง - while (not_ready()) {}วิ่งห่วงเหมือน แม้การแนะนำการหน่วงเวลาเล็กน้อยwhile (not_ready()) {usleep(100);}ก็ไม่ได้ช่วยให้มันมีเวลาไม่พอสำหรับโปรเซสเซอร์ที่จะเข้าสู่โหมดพลังงานต่ำหรือหากเป็นเช่นนั้นการตื่นขึ้นแต่ละครั้งที่ไม่เกิดผลหมายถึงพลังงานที่สูญเปล่า ดังนั้น API ของระบบปฏิบัติการจะต้องได้รับการออกแบบเพื่อให้แอปพลิเคชันไม่จำเป็นต้องทำการสำรวจความคิดเห็น แต่สามารถสมัครสมาชิกกับกลไกเหตุการณ์บางประเภทและยังคงไม่ทำงานจนกว่าจะได้รับแจ้งเกี่ยวกับเหตุการณ์ที่เกี่ยวข้อง แอปพลิเคชันจะต้องใช้ประโยชน์จากกลไกดังกล่าวดังนั้นการออกแบบสแต็กซอฟต์แวร์ทั้งหมดจึงมีผลกระทบต่อการใช้พลังงาน

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

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


4

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

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

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

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


3

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

ฮาร์ดไดรฟ์สมัยใหม่มีหลายวิธีในการลดการใช้พลังงานเช่น

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

หากกระบวนการใช้ RAM มากกว่าจะใช้พลังงานมากขึ้นหรือไม่?

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

อย่างที่คุณเห็นมีหลายวิธีในการลดการใช้พลังงานในสถาปัตยกรรมสมัยใหม่ แต่ต้องใช้ระบบปฏิบัติการในการจัดการ คุณสมบัติบางอย่างเช่น PASR มีความยุ่งยากในการใช้งานซึ่งต้องใช้งานมากในระบบปฏิบัติการเพื่อปรับการจัดการหน่วยความจำเพื่อดำเนินการขั้นตอน suspend / resume, ...


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

3

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

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

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

หวังว่านี่จะช่วยได้


2

หากต้องการเพิ่มคำตอบอื่น ๆ :
คำถามของคุณเกี่ยวกับ iOS และ Android เป็นระบบปฏิบัติการ แต่ "ระบบปฏิบัติการ" เป็นเพียงส่วนหนึ่งเท่านั้น
ทั้ง Android และ iOS เป็นเฟรมเวิร์กและมีหลายส่วนที่ไม่ถือว่าเป็นส่วนหนึ่งของระบบปฏิบัติการจริง แต่ใช้งานได้ในการลดการใช้พลังงาน
ตัวอย่างเช่น Android โดยการออกแบบอนุญาตให้ผู้พัฒนาแอปพลิเคชันบันทึกสถานะของตนเมื่อถูกซ่อนดังนั้นกระบวนการสามารถถูกยกเลิกเมื่อไม่ได้ใช้งานอย่างแข็งขันและลดจำนวนเธรดที่พร้อมใช้งานและอนุญาตให้ปิดแกนและลดอัตรานาฬิกา
มีคุณสมบัติใน "ระบบปฏิบัติการ" ที่ตั้งค่าความสว่างที่ปรับได้, สถานะการนอนหลับของ Wi-Fi, เธรดการล้างข้อมูล, กำหนดการรวมกำไร, ไฟ LED, พฤติกรรมการสแตนด์บายมือถือและด้านอื่น ๆ ที่มีผลต่อการใช้พลังงานอย่างมาก
นอกจากนี้แพลตฟอร์มโทรศัพท์มือถือบางรุ่นยังทำงานอย่างหนักเพื่อเพิ่มประสิทธิภาพการใช้งาน CPU / GPU เนื่องจาก GPU ได้รับการปรับให้เหมาะสมกับกราฟิกมากขึ้นและเป็นส่วนเสริมใหม่สำหรับแนวนอนมือถือส่วนอื่น ๆ ที่เกี่ยวข้องกับกราฟิกของระบบปฏิบัติการ GPU ที่ล้างการทำงานจาก CPU และอนุญาตให้ใช้การเพิ่มประสิทธิภาพพลังงานของ CPU ที่จะใช้ (และในหลายกรณียังเพิ่มความเร็วของระบบโดยรวม)

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