สถาปัตยกรรม AMD K10
ประวัติ AMD AMD ก่อตั้ง ค.ศ. 1969 โดยพนักงานเก่าจากบริษัท Fairchild Semiconductor ผลิตภัณฑ์ของAMD ที่เป็นที่รู้จักได้แก่ ไมโครโพรเซสเซอร์ตระกูล K6, Athlon, Opteron, Sempron, Duron, Turion และชิปกราฟิก Readeon R600 และ AMD ยังเป็นคู่แข่งที่สำคัญของ Intel ในตลาดไมโครโพรเซสเซอร์ และมีคดีความ
ประวัติ AMD AMD Processor Year Bus width Description 29000 1988 32 32-bit embedded RISC microprocessor 29030 199? 29040 32-bit high-performance embedded RISC microprocessor K5 1996 Pentium-class processor K6 1997 Pentium/Pentium II-class processor K6-2 1998 Pentium II-class processor, enhanced version of K6 K6-III 1999 Pentium II-class processor, enhanced version of K6-2 K7 Pentium III/IV class processor K8 2003 64 Eighth generation of x86 processors K10 2007 Ninth generation of x86 processors
Integer Execution Unit K10 Micro-Architecture Instructions Fetch Branch Prediction Memory Controller Integer Execution Unit Virtualization โครงสร้างภายในของ K10 Micro-Architecture New Instructions (SSE4a)
Instructions Fetch Fetch สำหรับ K10 Micro-Architecture นั้น ได้มีการพัฒนาให้สามารถดึง (Fetch) ชุดคำสั่งจาก L1I Cache ได้มากกว่าเดิมเท่าตัว จาก 16-byte blocks ใน K8 เป็น 32-byte blocks ใน K10 เนื่องจากขนาดชุดคำสั่งในทุกวันนี้มีขนาดใหญ่ขึ้นกว่าเดิม ทำให้การขยายขนาดการดึงชุดคำสั่งช่วยลดปัญหาคอขวดได้เป็นอย่างดี
ชุดก่อนหน้า และใช้การคำนวณ เพื่อหาผลลัพธ์ถัดไป Diagram Branch Prediction Branch Prediction ก็คือการคาดเดาของโพรเซสเซอร์ที่จะทำนายล่วงหน้าว่าการทำงานในคำสั่งถัดไปจะเป็นอย่างไร และก็จะดึงข้อมูลหรือชุดคำสั่งถัดไปมาเตรียมไว้ล่วงหน้า เพื่อป้องกันการเกิด Decoding Interruption ซึ่งใน K8 จะใช้ Two-level adaptive algorithm ที่จะทำนายข้อมูล โดยการย้อนกลับไปพิจารณาจากชุดคำสั่ง 8 ชุดก่อนหน้า และใช้การคำนวณ เพื่อหาผลลัพธ์ถัดไป มีการพัฒนา Prediction algorithm เพื่อข้อมูลประเภท Indirect โดยสร้างตารางขนาด 512 elements - เพิ่มขนาด Global history register ที่ใช้เก็บชุดคำสั่งก่อนหน้าจากเดิม 8 เพิ่มขึ้นเป็น 12 - เพิ่มขนาดของ Return-Address Stack จากเดิม 12 เป็น 24 ตำแหน่ง
Integer Execution Unit IEU ของ K8 และ K10 นั้นประกอบไปด้วยท่อในการประมวลผลเลขจำนวนเต็ม 3 ท่อด้วยกัน ซึ่งแต่ละท่อก็จะมี Scheduler ที่ไว้จัดสรรลำดับข้อมูลแยกออกจากกัน ดังรูป ใน K10 นั้นแก้ปัญหาการเกิด out-of-order reads ซึ่งคือการประมวลผลชุดคำสั่งที่ไม่เป็นลำดับ อย่างเช่นการประมวลผลให้เขียนชุดคำสั่ง ก่อนที่จะอ่านชุดคำสั่ง ก็จะไม่เกิดปัญหา Conflict กับ Memory Address แต่อย่างใด
Floating Point Unit ใน K10 นั้น ความกว้างของขนาด FPU ได้เพิ่มขึ้นเป็น 128 บิต ทำให้ K10 สามารถประมวลผล Vector 128-bit ได้ในสัญญาณนาฬิกาเดียว ซึ่งเพิ่มประสิทธิภาพขึ้นสองเท่าในทางทฤษฏี เมื่อทำงานเกี่ยวกับ Vector SSE-instructions (เทียบกับ K8)
Memory Controller ใน K10 ได้เพิ่มช่องสัญญาณของ Data Cache จากเดิม 64-bit ต่อสัญญาณนาฬิกา ใน K8 เป็น 128-bit ต่อสัญญาณนาฬิกาใน K10 และเพิ่มช่องสัญญาณของ Memory Controller เป็น 128-bit ด้วยเช่นกัน ในส่วนของ Cache ใน K10 ก็มีเพิ่มแคชระดับ 3 (L3 Cache) ขึ้นมา เพื่อเป็นจุดเชื่อมต่อของแต่ละคอร์ เพื่อจะสามารถส่งข้อมูลหากันได้
Virtualization มีการพัฒนาชุดคำสั่งที่ AMD-V ที่เพิ่มประสิทธิภาพการทำงานหลาย OS บนเครื่องเดียวกัน โดย K10 นั้น อนุญาตให้แต่ละ OS บน Virtualization สามารถมี Memory Management เป็นของตัวเองได้ ซึ่ง AMD เรียกว่า “Nested Paging” ซึ่งเทคโนโลยีนี้ ช่วยลดระยะเวลาที่ VM จะใช้ในการจัดการพวก Shadow Page และทาง AMD ได้อ้างว่าสามารถเพิ่ม ประสิทธิภาพได้ถึง 79%
New Instructions (SSE4a) เพิ่มชุดคำสั่งจากเดิมใน K8 เข้าไป ทำให้ช่วยประมวลผลชุดคำสั่งเฉพาะทางได้รวดเร็วขึ้น อย่าง LZCNT ที่นับจำนวนเลข 0 ในชุดคำสั่ง และ POPCNT ที่นับจำนวนเลข 1 ในชุดคำสั่ง ซึ่งชุดคำสั่งพวกนี้ จะใช้งานกับโปรแกรมที่ถูกออกแบบมาโดยเฉพาะ จะสามารถทำงานได้เร็วกว่าปกติ เปรียบเสมือนการลดจำนวนสัญญาณนาฬิกาที่จะต้องทำงานในแต่ละชุดคำสั่งนั้นๆ จากปกติต้องทำงาน 8 ถึง 32 สัญญาณนาฬิกาเพื่อนับจำนวนบิต แต่พอใช้คำสั่งพิเศษ ก็เหลือเพียงสัญญาณนาฬิกาเดียว เป็นต้น
Power Management ใน K10 ก็ได้มีการพัฒนาส่วนของการประหยัดพลังงาน ที่แต่ละคอร์จะมีการทำงานอิสระจากกัน ซึ่งสัญญาณนาฬิกาของแต่ละคอร์จะมีความเร็วที่แตกต่างขึ้น ขึ้นอยู่กับ Work Load ที่เข้ามาในโพรเซสเซอร์ โดยเทคโนโลยีนี้มีชื่อว่า AMD “CoolCore” รวมทั้งเทคโนโลยีที่อาจจะเคยผ่านตากันแล้วอย่าง “Split Power Planes” ที่จะเพิ่มประสิทธิภาพในการจัดการพลังงาน ทาง AMD ก็นำมาจับเปลี่ยนชื่อใหม่เป็น AMD “Dual Dynamic Power Management” ซึ่งเทคโนโลยีนี้จำเป็นที่จะต้องใช้ร่วมกันเมนบอร์ด Socket 1207+ ที่เป็นบอร์ดรุ่นใหม่ ซึ่งจะมาพร้อมเทคโนโลยีตัวนี้ โดยบอร์ด Socket 1207 ธรรมดาที่ออกมาก่อนหน้านี้ จะไม่รองรับ
Review
Thank You !