โปรเซสเซอร์สามารถควบคุมความเร็วสัญญาณนาฬิกาได้อย่างไร


12

ฉันเพิ่งเจอโปรเซสเซอร์ STM ที่มีออสซิลเลเตอร์ 2 ตัวบนวงจร - ฉันคาดว่าตัวหนึ่งจะทำงานด้วยความเร็วสูงและอีกตัวใช้พลังงานต่ำ

สำหรับสิ่งที่ต้องการการประมวลผลสก์ท็อปที่ความเร็วสัญญาณนาฬิกาที่สามารถเปลี่ยนเป็นความถี่ที่ต้องการ (ภายในเหตุผล) - วิธีการไม่ได้ร่างกายทำเช่นนี้?


1
ตามคำตอบของ alex แสดงว่าความถี่ซีพียูเดสก์ท็อปสมัยใหม่ไม่ได้เปลี่ยนแปลงอย่างต่อเนื่อง โดยทั่วไปแล้วจะอยู่ในขั้นตอนของ 100 หรือ 133 MHz (ที่เกี่ยวข้อง: ซีพียู x86 รุ่นใหม่จะตัดสินใจอย่างไรเมื่อต้องเปลี่ยนความถี่สำหรับ "เทอร์โบ" เหนือความเร็วสูงสุดหรือถ้าระบบปฏิบัติการควบคุมการจัดการพลังงานทั้งหมดไปยัง CPU (Intel Skylake): SKL มี on-die ไมโครคอนโทรลเลอร์ที่มีทรานซิสเตอร์มากเท่าที่ 486 ทำเพื่อทำการตัดสินใจความถี่: เหตุใดการหน่วงเวลาการทำงานเริ่มช้าลงหลังจากการทำซ้ำหลายครั้งโดยไม่ต้องนอนหลับ
Peter Cordes

คำตอบ:


21

สิ่งนี้ทำได้โดยใช้อุปกรณ์ที่เรียกว่าloop-locked loopหรือ PLL นี่คือไดอะแกรมบล็อกของ PLL พื้นฐาน:

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

ออสซิลเลเตอร์บนเมนบอร์ดไม่ทำงานที่ความถี่สัญญาณนาฬิกาของ CPU แต่จะทำงานที่ความถี่ตามคำสั่งของ 100 MHz ออสซิลเลเตอร์นี้ทำหน้าที่เป็นความถี่อ้างอิงที่รู้จักและเสถียรเท่านั้น ภายในซีพียูความถี่สัญญาณนาฬิกาจริงจะถูกสร้างขึ้นโดยoscillator ที่ควบคุมแรงดันไฟฟ้าหรือ VCO VCO สามารถปรับแต่งเพื่อสร้างความถี่ในช่วงที่ค่อนข้างกว้าง แต่ด้วยตัวเองมันไม่เสถียรหรือแม่นยำเป็นพิเศษ - สำหรับแรงดันไฟฟ้าควบคุมที่กำหนดความถี่จะแตกต่างกันไปในแต่ละส่วนและด้วยแรงดันและอุณหภูมิ จากนั้นลูปล็อคเฟสจะทำหน้าที่ล็อคความถี่เอาต์พุตของ VCO ให้เป็นความสัมพันธ์เฉพาะกับความถี่อ้างอิง

fPFD=fref/D=fout/Mfout=frefM/D

ตัวอย่างเช่นสมมติว่าความถี่อ้างอิงคือ 100 MHz การอ้างอิงจะถูกหารด้วย 1 (D) และ VCO จะถูกหารด้วย 30 (M) สิ่งนี้จะส่งผลให้ความถี่เอาต์พุตที่ 100 MHz * 30/1 = 3 GHz ความสัมพันธ์นี้สามารถเปลี่ยนแปลงได้โดยเพียงแค่เปลี่ยนการตั้งค่าตัวแบ่งซึ่งสามารถทำได้ในซอฟต์แวร์ผ่านการลงทะเบียนควบคุม โปรดทราบว่าการเปลี่ยนความถี่ในการบินอาจไม่ง่ายเหมือนการเปลี่ยนค่าตัวแบ่งความถี่จะต้องเปลี่ยนในลักษณะเพื่อให้แน่ใจว่า CPU ไม่เห็น 'บกพร่อง' หรือพัลส์นาฬิกาใด ๆ ที่สั้นเกินไป อาจจำเป็นต้องใช้ 2 PLL และสลับระหว่างกันหรือหยุดนาฬิกาชั่วคราวหรือสลับไปยังแหล่งสัญญาณนาฬิกาอื่นจนกว่า PLL จะคงที่ที่ความถี่ใหม่

PLL ใช้ทั่วสถานที่เพื่อสร้างความถี่ที่แม่นยำและปรับแต่งได้ง่ายจากการอ้างอิงคงที่และเสถียร การ์ด Wi-Fi และเราเตอร์ Wi-Fi ของคุณใช้เพื่อเลือกช่องสัญญาณที่เหมาะสมโดยสร้างสิ่งที่เรียกว่าความถี่ oscillator ในท้องถิ่นสัญญาณที่ใช้ภายในวิทยุเพื่อแปลงและปรับข้อมูลที่ถูกปรับ วิทยุ FM ของคุณส่วนใหญ่จะใช้เพื่อเปิดใช้งานซอฟต์แวร์เพื่อควบคุมความถี่ในการรับทำให้สามารถเรียกใช้สถานีต่าง ๆ ได้ง่าย PLLs ยังใช้เพื่อสร้างสัญญาณนาฬิกาความถี่สูงที่ใช้ในการขับเคลื่อนซีเรียลไลเซอร์และดีซีเรียลไลเซอร์สำหรับอีเธอร์เน็ต PCI Express, Serial ATA, Firewire, USB, DVI, HDMI, DisplayPort และโปรโตคอลอนุกรมที่ทันสมัยอื่น ๆ อีกมากมาย


7

นอกจากคำตอบก่อนหน้า ...

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


นาฬิกาเรียลไทม์มักจะช้ากว่านาฬิกาหลักมาก (32kHz เป็นเรื่องปกติ) และด้วยเหตุนี้ออสซิลเลเตอร์นาฬิกาเรียลไทม์และวงจรที่แนบมาอาจทำให้สิ้นเปลืองกระแสไฟฟ้าต่ำมาก
mkeith

@mkeith ความเร็วสัญญาณนาฬิกาต่ำเป็นสิ่งสำคัญ แต่ส่วนใหญ่จะเป็นเพราะโปรเซสเซอร์เกือบทั้งหมดปิดอยู่
เกรแฮม

เกรแฮมคำถามดั้งเดิมเกี่ยวกับสาเหตุที่มีออสซิลเลเตอร์สองตัว ในหลักการคุณสามารถปิดบางส่วนได้ด้วยออสซิลเลเตอร์เดียวเท่านั้นและคุณจะประหยัดพลังงานได้มาก เหตุผลที่มีออสซิลเลเตอร์ความเร็วต่ำกว่าที่สองคือเนื่องจากการใช้พลังงานแบบไดนามิกมีความสัมพันธ์เชิงเส้นตรงกับความถี่สัญญาณนาฬิกา ดังนั้นการใช้พลังงานแบบไดนามิกของวงจร 32kHz จะน้อยกว่าการใช้พลังงานแบบไดนามิกของวงจร 10 MHz ประมาณ 300x ความเร็วนาฬิกาที่ลดลงเป็นส่วนสำคัญของคำตอบในความคิดของฉัน
mkeith

@mikeith มันไม่ใช่ "ในหลักการ" - นั่นเป็นวิธีการทำงานบนชิปทุกตัวที่มี RTC แน่นอนส่วน RTC ใช้ oscillator ความเร็วต่ำเพื่อประหยัดความเร็ว แต่ส่วน RTC ไม่เคยใช้นาฬิกาออสซิลเลเตอร์ที่เร็วกว่า - มันเป็นวงจรที่แยกจากกันโดยสิ้นเชิงในซิลิคอนชิ้นเดียวกัน และส่วนที่เหลือของชิปก็ไม่เคยใช้นาฬิกาออสซิลเลเตอร์ที่ช้ากว่า RTC นั้นใช้พลังงานน้อยกว่าด้วยการรันที่อัตราสัญญาณนาฬิกาที่ช้าลงแน่นอน แต่ชิปทั้งหมดที่เหลือจะถูกปิด 100% และใช้กระแสไฟเป็นศูนย์
เกรแฮม

1
@mikeith แน่นอนและฉันเห็นด้วย (แม้ว่าความถี่ของผลึก RTC ในอดีตมาจากการเคลื่อนไหวทางกลด้วยไฟฟ้าของควอตซ์ในนาฬิกาและนาฬิกาไม่ใช่จากการประหยัดพลังงานในอุปกรณ์อิเล็กทรอนิกส์) ฉันแค่ต้องการชี้แจงให้ OP ทราบว่านาฬิกาที่ช้ากว่านั้นไม่ได้มีไว้สำหรับโหมด "พลังงานต่ำ" ในโปรเซสเซอร์หลัก - สำหรับอุปกรณ์ต่อพ่วงที่แยกจากกันโดยสิ้นเชิง
Graham

0

อย่างระมัดระวัง !

ป้อนคำอธิบายรูปภาพที่นี่

ซีพียูมีโปรแกรมไบนารีล่วงหน้าตั้งโปรแกรมล่วงหน้าและ PLL กับ VCO เพื่อขับเคลื่อนตัวนับเพื่อให้คูณ FSB front-bus-clock, นาฬิกา FSB (พูด 100MHz)
โหมดประหยัดพลังงานแบบไดนามิกนี้จะถูกเลือกโดยอัตโนมัติเมื่อ CPU มีค่าน้อยพร้อมกับไดรเวอร์ของ CPU, CPU, OS และ BIOS ที่เหมาะสม

ฉัน i7 (8cpu) ไปจาก 3101 MHz ถึง 800 MHz และขั้นตอนที่ 1100, 1300,1500 ... เป็นต้น

หาก Bios เลือก x31 เช่นเดียวกับในกรณีของฉัน CPU จะทำงานที่ 100MHz x 3100MHz และด้วยตัวนับไบนารีใน CPU เลือกจาก x8 ถึง x15 เพื่อลดพลังงานของ CPU ในเวลาเดียวกับที่ควบคุมแรงดันไฟฟ้าของชิป CPU ใน 0.9V ภูมิภาคทั้งหมดเพื่อประหยัดพลังงาน

ฉันสามารถแสดงด้วยเคอร์เซอร์ของฉันที่มุมขวาบนใน Win8.1 พร้อมกับ CPU% และหน่วยความจำ%

ป้อนคำอธิบายรูปภาพที่นี่

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