แน่นอนว่าทุกๆคนต้องจำกันได้ CPU frequency มีการพัฒนาและเร็วขึ้นมากกว่าแต่ก่อนเป็นหลายสิบเท่าหลายร้อยเท่าหากย้อนไปเมื่อ 10 ปีที่แล้ว. เริ่มจาก 10 MHz ก็เร็วขึ้นเป็น 100, และจาก 100 MHz ก็พัฒนาอย่างรวดเร็วมาเป็น 1 GHz, และจาก 1GHz ก็มาเป็น 2 GHz และเขยิบขึ้นมาเรื่อยๆแต่ไม่ได้มีการพัฒนาเร็วเหมือนแต่ก่อน.
หากสังเกตุให้ดีไม่กี่ปีที่ผ่านมา, เราจะเห็น core CPU frequency หรือย่านความถี่พัฒนาเร็วขึ้นที่ละน้อยๆ. การที่จะทะยานไปให้ถึง 10 GHz ถือว่ายังเป็นเรื่องแห่งอนาคต ซึ่งเรทการพัฒนาของมันจะไม่เร็วเหมือนเมื่อก่อน 5 ปีที่ผ่านมา. คำถามก็คืออะไรไปหยุดมันเอาไว้ ทำไมเรทความเร็วมันถึงพัฒนาได้ช้าลง?
“Hot” gigahertz
เหตุผลแรกๆที่จะได้จากผู้เชี่ยวชาญก็คือยิ่งเพิ่มความเร็วก็ยิ่งร้อน. อีกทางก็บอกว่า ก็แค่ไป เปิดหรือหมุนสวิชต์ ให้ย่านความถี่มันเพิ่มขึ้นตามที่เราต้องการก็ทำได้. แน่นอนว่ามันจะก่อปัญหาทางด้านความร้อนให้กับตัว CPU และผลที่จะตามมาเป็นรูปธรรมก็คือ melt down/การละลาย. อันนี้ต้องกล่าวก่อนว่า ผู้ผลิต CPU ทั้งหลายต่างก็กลัวปัญหานี้, (ตัว CPU จะมีระบบเตือนเอาไว้หากอุณภูมิสูงเกินกำหนด ตัวระบบก็จะปิดตัวมันเองลงทันทีก่อนที่ความเสียหายจะเกิดขึ้น).
ความเห็นที่กล่าวมาข้างต้นนี้ได้มาจากผู้ที่ใช้งานทั่วไป, แต่ก็มีบทพิสูจน์ให้เห็นกันแล้วว่า นัก overclockers นั้นสามารถอัดย่านความถี่ให้มันเร็วมากขึ้นสองสามเท่า แต่สิ่งที่ตามมาก็คืออุณภูมิที่สูงขึ้นและต้องการตัวทำความเย็นแบบพิเศษมาชดเชย.
ส่วนตัว “switch” หรือปรับหมุนสวิชต์ เอากันจริงๆมันก็มี, แต่ก็ปัญหาเดิมๆคือเรื่องอุณภูมิ, แต่ทั้งหมดนี้ยังเป็นแค่ส่วนหนึ่งในการพยายามที่จะไปเร่งหรือเพิ่มย่านความถี่.
ตัวอุปสรรค
สำหรับสถาปัตยกรรมของ processor แต่ละตัวแน่นอนว่าย่อมต่างกัน รวมถึงความยากง่ายในการทำ overclocking ด้วย. ในที่นี้เราขอกล่าวเน้นไปที่ superscalar architecture รวมถึง x86 architecture ด้วย, ซึ่งเป็นที่ท๊อปฮิตใช้กันเกลื่อนในสินค้าของทาง Intel®.
(SUPERSCALAR หมายถึงสถาปัตยกรรมของ MOCRO PROCESSOR ที่มีหน่วยประมวลผลมากกว่า 1 หน่วย จาก SUPERSCALAR ARCHITECTURE นี้เองทำให้ PENTIUM PROCESSOR สามารถประมวลผลคำสั่งได้มากกว่า 1 คำสั่ง/1CLOCK ซึ่งแสดงให้เห็นถึงพัฒนาการของCPU ที่ต่างจาก 486 โดยที่486ทำได้ 1 คำสั่ง/CLOCK
ความสามารถในการEXECUTE คำสั่งได้มากกว่า 1 คำสั่ง/CLOCK นี้มีผลมาจากPENTIUM PROCESSOR ถูกออกแบบให้มี 2 PIPELINES ซึ่งสามารถคำนวณ 2 คำสั่งได้พร้อมกัน(ใน486 PROCESSOR มีเพียง 1PIPELINES) PIPELINES ใน PENTIUM PROCESSOR มี STORAGE ทั้งมหด 5 STORAGE ด้วยกับ PREFETCH, DECODED, DECODE2,WRITE BACK ซึ่งการทำให้คำสั่งหลอกคำสั่งสามารถแยกกันอยู่คนละSTORAGE และประมวณผลไปพร้อม ๆ กันนี้เองทำให้ประสิทธิภาพโดยรวมของPROCESSOR เพิ่มขึ้น
นอกจากนี้PENTIUM PROCESSOR ยังใช้ HARDWIRED INSTRUCTION แทนที่ MICROCODED INSTRUCTION ใน หลาย ๆ คำสั่ง HARDWARE สามารถประมวลผลHARDWIRE INSTRUCITON ได้ทันทีโดยไม่ต้องใช้ MICRO CODE เลย)
ที่มาเครดิต – https://www.cpe.ku.ac.th/~yuen/204323/x86/phol/superscl.html
เพื่อให้เข้าใจถึงปัญหาที่เกิดขึ้นของการพัฒนาย่านความถี่ให้สูงขึ้น, ถือว่าเป็นเรื่องที่สำคัญว่าอะไรกันแน่ที่เป็นสาเหตุ. อันนี้ต้องดูสถาปัตยกรรมนั้นๆพัฒนาถึงระดับไหนก่อน, แน่นอนว่ามันต้องมีหลายตัวแปรที่ทำให้มีข้อจำกัด. และสรุปได้ว่ามันมีเพียงแค่ตัวเดียวที่ต้องขจัดออกไปเพื่อที่จะพัฒนาย่านความถี่นี้ให้เพิ่มสูงขึ้นต่อไป.
The conveyor/ขั้นตอนหรือลำดับ
สิ่งที่ไปจำกัดและเป็นสาเหตุหลักก็คือ conveyor level, ซึ่งถือว่าเป็นพื้นฐานสำคัญแรกเริ่มเลยสำหรับ superscalar structure เพื่อให้บรรลุผลสำเร็จ. ตามหลักวืธีแล้ว, การประมวลผลในแต่ละ processor instruction นั้นถูกแบ่งออกเป็นขั้นๆหลายขั้น/ steps ตามภาพที่เราแสดงให้เห็นด้านล่างนี้.
ในแต่ละสเต็ปก็จะเรียงลำดับตามๆกัน, และจะถูกประมวลผลด้วยตัวคำนวณที่คนละตัวกัน. และเมื่อใดการประมวลผลนั้นสเต็ปนั้นๆเสร็จ, ตัวคำนวณก็จะถูกนำไปประมวลผลคำสั่งอื่นต่อไป.
หากสังเกตุดูรูปด้านบน, ตัวคำนวณตัวแรก/ computing device จะประมวลผลสเต็ปแรกของคำสั่งแรกก่อนในช่วงเวลา t1. และช่วงเวลา t2 จะเริ่ม, ก็ต่อเมื่อสเต็ปแรกประมวลผลเสร็จและสเต็ปที่สองถึงจะเริ่มกับตัวคำนวณที่สอง. คราวนี้ตัวคำนวณตัวแรก-ว่าง ก็จะเริ่มประมวลผลสเต็ปแรกกับคำสั่งตัวต่อไป, และมันก็จะเป็นแบบนี้ไปเรื่อยๆ. และในช่วงเวลา t4, สเต็ปที่แตกต่างกันของคำสั่งทั้งสี่ก็จะถูกคำนวณ.
แล้วมันเกี่ยวข้องยังไงกับย่านความถี่/ frequency? โดยปรกติแล้ว, แต่ละช่วงของเวลาในการคำนวณนั้นจะแตกต่างกัน. ในขณะเดียวกัน,สเต็ปที่แตกต่างกันในคำสั่งเดียวกันก็จะถูกคำนวณหรือใช้เวลาไม่เท่ากัน /clock ticks. ช่วงเวลาหรือความยาวของ Clock tick (และรวมถึง frequency ด้วย) ของ processor จะต้องพอเหมาะพอเจาะกับสเต็ปที่ใช้เวลายาวที่สุดอีกด้วย/ longest step. ภาพด้านล่างแสดงให้เห็น longest step นั้นอยู่ในช่วงที่สาม.
การตั้งค่า clock tick ให้ช่วงเวลาให้สั้นขึ้นไม่เกิดผลที่แตกต่างสำหรับสเต็ปที่ใช้เวลายาว, ถึงแม้ว่ามันสามารถกระทำได้ตามเทคนิกก็ตาม แต่ก็ไม่ช่วยให้ processor นั้นเร็วขึ้น.
สมมุติว่าสเต็ปที่ยาวที่สุดต้องการเวลาการคำนวณที่ 500 ps (picosecond). นี้คือ clock tick ที่ใช้ช่วงเวลายาวที่สุดในคอม frequency ที่ 2 GHz. เราแบ่งช่วงเวลา clock tick ให้สั้นลงเป็นสองช่วง, ก็จะเป็น 250 ps, และทุกตัว แต่ย่านความถี่ก็ยังคงเดิม. สิ่งที่ให้คำตอบมาก็คือเวลาการคำนวณก็ยังเป็น 500 ps อยู่ดี. การตั้งค่าเช่นนี้ ไม่เกิดผลที่ดีขึ้น และยิ่งทำให้ทุกอย่างซับซ้อนมากขึ้นแถมอุณภูมิก็สูง.
อาจจะมีคนแย้งก็ได้ว่า หากช่วงเวลา clock ticks ถูกแบ่งให้สั้นลง, และสำหรับสเต็ปที่สั้นๆก็จะคำนวณได้เร็วขึ้น, เฉลี่ยออกมาก็จะคำนวณเร็วขึ้น. อันนี้บอกได้เลยว่า ผิด ดูภาพตามด้านล่าง.
ช่วงแรกน่ะใช่เร็วขึ้น. แต่พอไปถึงช่วงเริ่มที่สี่ของ clock tick, สเต็ปที่สามและสเต็ปตามลำดับต่อๆไปดังตัวอย่างก็จะดีเลย์. เหตุที่เป็นเช่นนี้เป็นเพราะว่าตัวคำนวณที่สามจะเสร็จการคำนวณที่หรือทุกๆสอง clock ticks, ไม่ใช่ทุกๆ clock tick. และระหว่างที่ยังคำนวณสเต็ปที่สามไม่เสร็จของคำสั่งนั้นๆ,สเต็ปที่เหมือนกันแต่เป็นคนละคำสั่งก็ไม่สามารถเริ่มคำนวณได้. และตัว processor ที่เราสมมุติขึ้นมานี้ช่วงเวลา clock ticks มันอยู่ที่ 250 ps ก็จะใช้เวลาหรือความเร็วเท่ากับ 500 ps processor, ถึงแม้ว่าย่านความถี่มันจะเร็วเป็นสองเท่าก็ตาม.
ยิ่งเล็กยิ่งดี
หลังจากที่ได้สังเกตุนิสัยของ conveyor กันไปแล้ว, สิ่งเดียวที่สามารถเพิ่มย่านความถี่ให้สูงขึ้น ก็คือการหั่นขัสเต็ปที่ยาวที่สุดให้สั้นขึ้น. และหากว่าเราสามารถไปลดขั้นตอนที่ยาวสุดลงได้, ไม่แน่ก็จะสามารถลดเวลา/ขนาด clock tick ลงได้, โจทย์ก็คือ clock tick ยิ่งเล็ก, frequency ก็จะเพิ่มขึ้น.
มีเพียงไม่กี่วิธีหรือเทคโนโลจีที่จะสามารถไปดัดแปลงสเต็ปที่ยาวที่สุดได้มากนัก. หนึ่งในนั้นก็คือการพัฒนาเทคโนโลจีการประมวลผลให้มันก้าวหน้ามากไปกว่าที่. ที่เห็นเป็นรูปธรรมหรือจับต้องได้ก็คือการลดขนาดหรืออุปกรณ์ของ processor, ซึ่งจะทำให้มันเร็วขึ้น. เหตุเพราะกระแสไฟฟ้าจะมีเส้นทางที่จะวิ่งผ่านสั้นลง, และเวลาของ transistor ในการสับสวิชต์/switch time ก็จะลดน้อยลง. อันนี้ง่ายและเข้าใจง่าย, ทุกอย่างจะเร็วขึ้นและเป็นระบบ. สเต็ปทุกตัวจะสั้นขึ้นเป็นระเบียบ, อันนี้รวมถึงสเต็ปที่ยาวที่สุดด้วย, สิ่งที่ได้ตามมาก็คือ ย่านความถี่/frequency ที่เพิ่มขึ้น.
ฟังแล้วก็ง่ายๆ, แต่การที่จะลงสเกลไปถึงระดับนาโนถือว่าซับซ้อน. การเพิ่มย่านความถี่ให้สูงขึ้นนั้นต้องอาศัยเทคโนโลจีปัจจุบันทุกๆด้านและความก้าวหน้าที่มีอยู่ ณ ปัจจุบันก็ไม่สามารถขยับไปได้ไกลเกินสิ่งที่มันจำกัดอยู่ในรูปของรูปธรรม. แต่ถึงกระนั้นก็ตาม, ผู้ผลิต processor ต่างก็พยายามพัฒนาเทคโนโลจีกระบวนการผลิตให้มันดีมากยิ่งขึ้นเรื่อยๆ,เพื่อหวังว่า core CPU frequency จะสามารถพัฒนาไปได้อย่างไม่หยุดยั้งและสูงมากขึ้น.
หั่นมันเป็นชิ้นๆ
อีกวิธีที่จะทำได้ก็คือ หากทำตามตัวอย่างที่กล่าวมาเลย คือการหั่นสเต็ปยาวๆให้มันสั้นขึ้น. คำสั่งก็ถูกตัดแล้วและก็ถูกหั่นให้สั้นลงเป็นที่สำเร็จแล้วทำไมไม่ทำมันต่อเพื่อให้ processor ประมวลผลได้เร็วยิ่งขึ้น! ตรงนี้ต้องกล่าวเลยว่ามันได้ถูกกระทำไปแล้วในระดับโครงสร้างหรือสถาปัตกรรมของมันเลยทีเดียวและการที่จะหั่นจนเป็นสเต็ปเล็กๆมากไปกว่านี้ถือว่าเป็นงานที่ท้าทายมากๆ, แต่ผลที่จะตามมาจะส่งผลถึงประสิทธิภาพของ CPU ในทุกๆด้านอีกด้วย.
เราลองมาเปรียบเทียบกันดูให้เข้าใจกันง่ายๆด้วยการสร้างบ้าน. การสร้างบ้านนั้นเราสร้างกันแบบเป็นชั้นต่อชั้นขึ้นไป. ลองมาเปรียบเทียบชั้นของบ้านกับคำสั่ง/ instruction. เราทำการแบ่งขั้นตอนการสร้างชั้นของบ้านออกเป็นขั้นตอนย่อยๆ. เริ่มแรกก็สองขั้นตอนก่อน; คือการสร้างโครงสร้างชั้นของบ้านและพื้นผิวชั้นของบ้าน. พอพื้นผิวชั้นของบ้านเริ่มเป็นรูปเป็นร่างหรือใกล้เสร็จ, เราถึงจะเริ่มชั้นต่อไป, อันนี้ต้องใช้คนงานคนละชุดกันนะครับ กลุ่มแรกกำลังจะเสร็จส่วนอีกกลุ่มกำลังจะเริ่ม.
คราวนี้ใส่เพิ่มการทาสีเพดานและการใส่วอวล์เปเปอร์เข้าไปอีก. หากช่างสีทาสีเสร็จชั้นนึง, ช่างสีก็สามารถไปยังอีกชั้นได้, ถึงแม้ว่าช่างวอวล์เปเปอร์ยังทำงานชั้นแรกไม่เสร็จก็ตาม. แล้วชั้นต่อไปที่กำลังสร้างอยู่หล่ะ? การแบ่งการสร้างบ้านออกมาเป็นขั้นตอน- อันนี้สามารถกระทำได้แต่ดูเหมือนจะไม่เป็นผลที่ดี. เพราะเราไม่สามารถสร้างกำแพงชั้นต่อไปได้หากชั้นที่หนึ่งยังไม่เสร็จ. ตามทฤษฏีแล้ว สามารถแบ่งขั้นตอนการทำงานได้, แต่ต้องคอยให้แต่ละขั้นตอนนั้นเสร็จก่อนถึงจะไปขั้นตอนต่อไป!
ปัญหาก้จะเป็นแบบเดียวกันกับกับ processors. เหตุเพราะบางสเต็ปนั้นต้องอาศัยสเต็ปอื่นก่อนให้แล้วเสร็จ, และเป็นเรื่องที่ยาก ที่จะหั่นสเต็ปนั้นๆให้สั้นลงเพราะมันจะต้องไปปรับปรุงและเปลี่ยนโครงสร้างหรือสถาปัตยกรรมของ processor อีกด้วย, ซึ่งมันก็จะเหมือนเราพยายามสร้างบ้านหลายๆชั้นในเวลาเดียวกัน.
การปรับแต่งหรือหมุนสวิชต์
คราวนี้มาดูทางด้านกลุ่ม overclockers กันบ้าง. ที่เห็นๆกันก็คือการไปเพิ่ม processor voltage หรือแรงดันไฟเพื่อให้ transistors สับสวิชต์ให้มันเร็วขึ้น, สเต็ปทุกตัวก็จะสั้นขึ้น, ย่านความถี่/ frequency ก็จะเพิ่มขึ้น. ฟังดูแล้วง่าย แต่ไอ้ที่ตามมาก็คือความร้อน. ด้านล่างเป็นสูตรการคำนวณถึง พลังงานที่เสียไป หรือ processors power dissipation:
อันนี้ไม่ต้องเป็นห่วงหากคุณไม่รู้ปริมาณ ไฟฟ้าบรรจุ/dynamic capacitance —แต่สิ่งที่สำคัญคือแรงดันไฟหรือ voltage
สิ่งที่เกิดขึ้นจริงนั้นหากรู้แล้วมันยิ่งแย่กว่าที่คิด, อย่างที่บอก แรงดันไฟหรือ voltage มันเป็นตัวกระทำ transistors ให้เป็นผล. Transistor ก็คือตัวสวิชต์. มันต้องการแรงกระแทกเพื่อสับสวิชต์. เวลาของแรงกระแทกช้าหรือเร็วขึ้นอยู่กับกระแสไฟฟ้า, หากกระแสแรง ตัวสับสวิชต์ก็ยิ่งเร็ว. อีกนัยหนึ่งก็คือ, กระแสไฟฟ้าก็คือแรงดันไฟ/ voltage. คำตอบก็คือความเร็วการสับสวิชต์ของ transistor จะขึ้นอยู่กับแรงดันไฟ /voltage. อันนี้เราต้องรู้และตระหนักด้วยว่า ย่านความถี่นั้นสามารถเพิ่มให้สูงขึ้นได้ ขึ้นอยู่กับความเร็วในการสับสวิชต์ของตัว transistor เท่านั้น (transistor switch speed).
วิธีนี้ดูเหมือนจะไม่เหมาะกับผู้ผลิต processor หากนำไปเพิ่มย่านความถี่ เหตุเพราะประสิทธิภาพที่ได้มานั้นไม่เหมาะสมแต่มันสนุกมือสำหรับกลุ่ม extreme overclockers.
วิธีอื่นๆมีอีกไหม?
ตอบว่ายังมี แต่เพิ่มได้ไม่มากโดยไม่ต้องอาศัยการปรับแต่งแรงดันไฟ. อย่างที่รู้กัน processors นั้นถูกออกแบบให้การใช้งานทนต่อสภาพแวดล้อมได้หลากหลาย (อันนี้จะส่งผลต่อเวลาของสเต็ป), แต่ก็ได้มาเพิ่มเช่นกัน. ยกตัวอย่างเช่น, สเต็ปที่ยาวที่สุดจะใช้เวลาหรือ clock tick ไปทั้งหมดแค่ 95% เท่านั้น. อันนี้เห็นทางแล้วใช่ไหม. แต่อย่าลืมเล่นผิดๆกับ overclocking ผลเสียก็จะตามมา.
ยังมีอีก ที่สามารถไปปรับแต่งสเต็ปยาวๆให้มันดีขึ้นได้. ยกตัวอย่างเช่น, อุณภูมิซึ่งมันมีผลกับส่วนที่เกี่ยวข้องกับไฟฟ้า, แต่ก็รู้กันอยู่แล้วว่าอุณภูมิยิ่งต่ำก็จะส่งผลยิ่งดี.
สรุป
การหาคำตอบเพื่อเพิ่มย่านความถี่ให้สูงขึ้นนั้นมันเป็นอะไรที่ท้าทาย. ทุกวันนี้ทุกคนก็กระทำกันอยู่แล้ว, แต่ดูเหมือนมันจะช้าๆและค่อยๆขึ้นไม่เหมือนแต่ก่อน. ที่เห็นๆตอนนี้ก็มี multicore processors มาช่วยให้มันประมวลผลได้เร็วขึ้น!
ที่มาเครดิต/Sources:
https://software.intel.com/en-us/blogs/2014/02/19/why-has-cpu-frequency-ceased-to-grow
You must be logged in to post a comment.