ตอนที่ 3 ของสถาปัตยกรรมคอมพิวเตอร์กับ Microarchitecture เทคโนโลยีที่รวบรวมชุดคำสั่งบนหน่วยประมวลผลตั้งแต่อดีตจนถึงปัจจุบัน
หลังจากที่เราได้เขียนถึง Computer Architecture หรือสถถาปัตยกรรมคอมพิวเตอร์ไปแล้วถึง 2 ตอน(Computer Architecture ในปัจจุบันมีอะไรบ้างและมันแตกต่างกันอย่างไร และ Computer Architecture ในปัจจุบันมีอะไรบ้างและมันแตกต่างกันอย่างไร ตอนที่ 2) จะเห็นได้ว่าส่วนประกอบสำคัญของสถาปัตยกรรมคอมพิวเตอร์นั้นก็คือการรวบรวมเอาชุดคำสั่งมาทำการประมวลผลตามข้อมูลที่ได้รับแล้วทำการแสดงผลออกมา
ดังนั้นแล้วหากจะบอกว่าชุดคำสั่งคือหัวใจสำคัญของหน่วยประมวลผลนั้นก็ไม่ผิดสักเท่าไรนัก โดยส่วนสำคัฐในการออกแบบหน่วยประมวลผลที่ก่อให้เกิดความแตกต่างในแต่ละรุ่นนั้นก็คือ Microarchitecture ซึ่งเป็นส่วนที่รวบรวมชุดคำสั่งที่มีอยู่ในหน่วยประมวลผลทั้งหมดเอาไว้ แน่นอนว่าผู้ผลินหน่วยประมวลผลแบรนด์ต่างๆ นั้นมีชุดคำสั่งบนหน่วยประมวลผลเหมือนกันบ้างแตกต่างกันบ้างตาม Microarchitecture ที่ออกมาในแต่ละรุ่นของผู้ผลิต
ในบทความนี้เราจะพูดถึง Microarchitecture ในมุมกว้างไปจนถึงมุมย่อยทั้งหมด จะเป็นเช่นไรนั้นไปติดตามกันได้เลย
Microarchitecture คืออะไร
สถาปัตยกรรมไมโคร(microarchitecture) คือการนำฮาร์ดแวร์ไปใช้ของ ISA (สถาปัตยกรรมชุดคำสั่ง) ISA คือโครงสร้างของคำสั่งและการดำเนินการที่ซอฟต์แวร์ใช้เพื่อสื่อสารกับฮาร์ดแวร์ สถาปัตยกรรมไมโครคือวงจรฮาร์ดแวร์ที่ใช้ ISA เฉพาะอย่างหนึ่ง
ตัวอย่างเช่น x86-64 คือ ISA ที่ใช้โดยคอมพิวเตอร์โน๊ตบุ๊คและเดสก์ท็อปสมัยใหม่ส่วนใหญ่ มีการใช้งานโดยสถาปัตยกรรมไมโครต่างๆ รวมถึงที่ออกแบบโดย Intel และ AMD ซอฟต์แวร์ที่คอมไพล์สำหรับ x86-64 ISA สามารถทำงานบนสถาปัตยกรรมไมโครใดๆ ที่ออกแบบมาเพื่อใช้ชุดคำสั่ง x86-64
CPU (หน่วยประมวลผลกลาง) หลายรุ่นอาจได้รับการออกแบบสำหรับสถาปัตยกรรมไมโครโดยเฉพาะ ด้วยเหตุนี้ บางครั้งสถาปัตยกรรมไมโครจึงถูกเรียกว่า “ตระกูล” หรือ “รุ่น” ของ CPU ตัวอย่างเช่น Intel Kaby Lake (รุ่นที่ 7) และ Coffee Lake (รุ่นที่ 8) เป็นสถาปัตยกรรมไมโครที่แยกจากกัน โดยแต่ละตัวมี “ตระกูล” ของ CPU ที่เข้ากันได้
คำว่า “microarchitecture” บางครั้งใช้คำย่อว่า µarch ตัวอักษรกรีก µ (“mu”) เป็นตัวย่อทางวิทยาศาสตร์ของ “micro” เนื่องจากตัวอักษรนี้ไม่ปรากฏบนแป้นพิมพ์บางรุ่น จึงอาจใช้ตัวย่อ uarch ได้เช่นกัน ต่อไปเราจะมาดูกันว่าแบรนด์ผู้ผลิตหน่วยประมวลผลใหญ่ๆ อย่าง Intel และ AMD นั้นมี Microarchitecture อะไรบ้าง
Microarchitecture ของ Intel
x86
สำหรับ x86 microarchitectures ของทาง Intel นั้นอยู่มานานสุดๆ และยังคงมีการใช้งานมาจนถึงปัจจุบัน โดยเริ่มต้นนั้น x86 microarchitectures ของทาง Intel จะมีชุดคำสั่งแบบ 16-bit เริ่มใช้งานบนหน่วยประมวลผล 8086 ตั้งแต่ในปี 1978 เรื่อยๆ มาจนถึงหน่วยประมวลผล 286 ที่มีการเพิ่มชุดคำสั่ง protected mode ออกมาเป็นรุ่นแรก
x86 32-bit หรือ IA-32
จากนั้นในปี 1985 ทาง Intel ได้เพิ่มความสามารถให้กับ x86 microarchitectures ให้กลายเป็นหน่วยประมวลผลแบบ 32-bit ซึ่งเป็นการต่อยอด x86 microarchitectures บนหน่วยประมวลผล i386 ซึ่งชื่อจริงๆ ของ x86 microarchitectures ที่จริงๆ แล้วนั้นทาง Intel ได้มีชื่อเรียกภายใน x86 microarchitectures นี้ว่า IA-32 ทว่าพื้นฐานโดยทั่วไปนั้นยังคงเป็น x86 microarchitectures อยู่และเป็นชื่อของ microarchitectures ที่ติดตลาดไปแล้ัว ดังนั้นหน่วยประมวลผลของทาง Intel ก็จะยังคงใช้ชื่อ microarchitectures เป็น x86 ต่อเนื่องมาเรื่อยๆ จนถึงปัจจุบัน
P5 – P6 (x86 ที่มาพร้อมสถาปัตยกรรม super-scalar)
ในปี 1993 ทาง Intel มี x86 microarchitectures รุ่นใหม่ที่ใช้ชื่อภายในว่า P5 ซึ่งถูกนำมาใช้งานกับหน่วยประมวลผล Pentium และ Pentium MMX ที่มีการเพิ่มชุดคำสั่ง MMX เข้ามาแต่ออกจำหน่วยหลัง P6 microarchitectures ที่มีหน่วยประมวลผลหลักๆ คือ Pentium Pro และ Pentium II ซึ่งเจ้า P6 นี้ถูกใช้งานมาเรื่อยๆ จนถึง Pentium III
NetBurst
จริงๆ แล้ว NetBurst มีชื่อภายในว่า P68 ซึ่งถูกใช้งานบน Pentium 4, Pentium D และ P7 ซึ่งถูกใช้งานบน Itanium ซึ่งจริงๆ แล้วนั้น NetBurst นั้นมีสถาปัตยกรรมย่อยเป็น x86-64 แล้วแต่ด้วยความที่มันยังไม่ถูกใช้งานอย่างจริงจังและราคาของหน่วยประมวลผลนั้นมีราคาค่อนข้างที่จะแพง(โดยเฉพาะ Itanium ซึ่งมี microarchitectures 64-bit เป็นของตัวเองอย่าง IA-64) ทาง Intel จึงไม่ค่อยจะภูมิใจกับสถาปัตยกรรมนี้เท่าไรนัก แต่ตอนนั้นที่ต้องออกมาก่อนก็เนื่องมาจากว่าทางคู่แข่งอย่าง AMD นั้นมีสถาปัตยกรรมไมโครแบบ 64-bit ที่ได้รับความนิยมเป็นอย่างมากกับ amd64 แถมราคาวางจำหน่ายก็ถูกกว่าของทาง Intel เยอะมาก
x86-64 สถาปัตยกรรม 64-bit
ต่อกันที่ microarchitectures 64-bit ของแท้ของทาง Intel ที่เริ่มวางจำหน่ายกับหน่วยประมวลผล Intel Core ซึ่งได้รับความนิยมเป็นอย่างมาก โดย microarchitectures 64-bit ที่มีฐานจาก x86-64 ของทาง Intel นั้นได้ถูกใช้งานมาอย่างยาวนานบนหน่วยประมวลผลหลายๆ สถาปัตยกรรมจนถึึงปัจจุบันอย่าง Raptor Cove ซึ่งในแต่ละ microarchitectures 64-bit นี้นั้นจะมีการพัฒนาชุดคำสั่งใหม่ๆ ออกมาเรื่อยๆ
ที่น่าสนใจมากที่สุดคงหนีไม่พ้นชุดคำสั่ง AVX-512 ที่จะมีให้ใช้งานเฉพาะในหน่วยประมวลผลรุ่นระดับ Server เท่านั้น เจ้า AVX-512 นี้นั้นถือได้ว่าน่าสวนใจเป็นอย่างมากเพราะมันทำให้การประมวลผลต่างๆ นั้นดีขึ้นเป็นอย่างมาก
จริงๆ แล้วในช่วงระยะทางของ microarchitectures 64-bit ของทาง Intel นั้นมีชื่อเรียกทางด้านการพัฒนามากมายหลายรุ่นตามหลักการที่ทาง Intel ใช้ในการออกแบบอย่าง Tick-Tock โมเดล
Microarchitecture ของ AMD
สำหรับคู่แข่งตัวฉกาจของ Intel อย่าง AMD นั้นจะมีวิธีการตั้งชื่อ microarchitecture แตกต่างไปจากของทาง Intel โดย AMD นั้นจะเริ่มตั้งชื่อ microarchitecture ของตัวเองด้วยตัวอักษร K ตามด้วยตัวเลขแล้วใช้ชื่อนั้นวางจำหน่ายในตลาดเลยคือตั้งแต่ AMD K5 ไปจนถึง K8 (จริงๆ มี K9 แต่ไม่ได้วางจำหน่ายอย่างเป็นทางการ) แล้วข้ามมาที่ K10 ก่อนที่จะเปลี่ยนเป็น AMD Family 11h ไปจนถึง AMD Family 1Ah ที่พอเปลี่ยนมาใช้ชื่อ Family แล้วนั้นก็จะมีการเปลี่ยนชื่อที่วางจำหน่ายในตลาดอย่างเช่น AMD Zen microarchitecture เป็นตั้น(ตั้งแต่ AMD Zen Family 17h – 1Ah หรือ (Zen5)
และเช่นเดียวกันกับ Intel ที่ทาง AMD ใช้ microarchitecture แบบเดียวกันกับทาง Intel อย่าง x86 เป็นต้น ทว่าเมื่อทาง AMD ได้ออกวางจำหน่ายหน่วยประมวลผลแบบ 64-bit ของตัวเองออกมาซึ่งออกมาก่อน Intel นั้นทาง AMD จึงใช้โอกาสนี้ในการตั้งชื่อชุดคำสั่ง 64-bit ว่า amd64 และยังคงใช้มาจนถึงปัจจุบัน
จริงๆ แล้วชื่อ microarchitecture ที่แต่ละบริษัทใช้นั้นมีมากมายหลายชื่อตามรุ่นที่ออกวางจำหน่ายในตลาด อย่างทาง ARM คู่แข่งรายใหม่เองก็มีสถาปัตยกรรม AArch64 ของตัวเอง(ศึกษาได้ที่ สถาปัตยกรรม AArch64 คืออะไรแล้วมันพร้อมหรือยังที่จะเปลี่ยนโลก CPU) ทว่าชื่อ microarchitecture กับชื่อที่วางจำหน่ายในตลาดนั้นมักจะใช้ต่างกัน ชื่อทางการวางจำหน่ายในตลาดจะต้องจำง่ายและสื่อถึงหน่วยประมวลผลรุ่นนั้นๆ มากกว่าทำให้ตั้งแต่ในปี 2000 มานั้นเราไม่ค่อยได้เห็นผู้ผลิตเอาชื่อ microarchitecture มาใช้ในการตลาดเท่าไรนัก