Tags:

Cell เป็นชื่อของซีพียูที่เจาะจงพัฒนาขึ้นมาเพื่อ PS3 และเครื่องใช้ไฟฟ้ายุคหน้า มันถูกมองว่าเป็นเครื่องมือในการปฏิวัติวงการคอมพิวเตอร์ และนำสิ่งที่เรียกว่า Ubiquitous Computing (คอมพิวเตอร์ทุกหนทุกแห่ง) เข้าสู่ความเป็นจริง การที่แต่ละซีพียูของแต่ละอุปกรณ์ที่ไม่เกี่ยวข้องกันเลยทำงานร่วมกันได้จะไม่อยู่แต่ในนิยายอีกต่อไป ด้วยชื่อของสมาคม STI ซึ่งย่อมาจาก Sony, Toshiba และ IBM ทำให้มันเป็นจริงได้ และกำลังจะเป็นจริง

Blognone เสนอรายงานพิเศษ เจาะลึกสถาปัตยกรรมของ Cell ว่าทำงานอย่างไร และปฏิวัติวงการคอมพิวเตอร์ได้จริงมั้ย

เกริ่น

ข้อมูลทั้งหมดในบทความนี้ อ้างอิงมาจาก Cell Architecture Explained: Introduction โดยนาย Nicholas Blachford ซึ่งเค้าบอกว่าได้มาจากการอ่านสิทธิบัตรของ Cell อีกทีหนึ่ง เป็นการอ่านจากข้อมูลเท่าที่ Sony จดสิทธิบัตรไว้เท่านั้น ซึ่งหมายความว่าข้อมูลทั้งหมดไม่ใช่ข้อมูลอย่างเป็นทางการ และหมายความว่า PS3 ไม่จำเป็นต้องเป็นแบบนี้นะครับ

บทความของ Nicholas เป็นที่ฮือฮาและค่อนข้างเอียงพอสมควร (ในด้านที่ว่า Cell จะมาโค่นพีซี) มีบทวิจารณ์มากมายบนอินเทอร์เน็ตเกี่ยวกับเรื่องนี้ Slashdot เองยังลงหน้าหนึ่งไปสองรอบเลย ผมจะขอเสนอเวอร์ชันที่รวบรัดกว่า เข้าใจง่ายกว่า และมองอะไรเป็นกลางขึ้นมาหน่อยนะครับ อยากให้เป็นเหมือนบทนำคร่าวๆ ให้รู้จักกับ Cell เท่านั้นเอง ไม่ใช่เรื่องเทคนิคเข้มข้นแต่อย่างใด อย่างไรก็ตาม คุณควรจะมีความรู้ด้าน Computer Architecture บ้างเพื่อความเข้าใจที่สมบูรณ์ครับ

ตอนนี้พิเศษหน่อยนะครับ ผมไม่อนุญาตให้คัดลอกข้อความทั้งหมดนี้ไปเผยแพร่ที่เว็บไซท์อื่น ด้วยเหตุผลว่าผมต้องการโปรโมทเว็บไซท์นี้ ถ้าอยากอ้างอิง กรุณาลิงค์มายังบทความนี้ที่เดียวนะครับ ขอบคุณครับ

แนวคิด

Cell มีดีไซน์ที่แตกต่างจากซีพียูในปัจจุบันค่อนข้างมาก และไปคล้ายกับกราฟฟิกการ์ด (หรือ GPU) มากกว่า ซีพียูตระกูล x86 นั้นเราใช้มาเกือบยี่สิบปีแล้ว และสถาปัตยกรรมส่วนมากก็ยังคงเดิมมาตลอด โครงสร้างบางอย่างเกิดจากข้อจำกัดด้านต้นทุนหรือเทคโนโลยีในสมัยนั้น ก็ยังคงสืบต่อมาจนถึงสมัยนี้ เช่น การเก็บข้อมูลที่ใช้บ่อยๆ ไว้ในแคช และเรียกข้อมูลจากแรมด้วยระบบเพจ เพราะว่าแคชมีราคาแพง ใช้เยอะมากไม่ได้ เป็นต้น แนวคิดพวกนี้เป็นพื้นฐานของคอมพิวเตอร์ปัจจุบัน ชื่อที่ค่อนข้างเป็นทางการหน่อยคือ Abstraction แปลเป็นภาษาชาวบ้านก็คือหลอกกันเป็นชั้นๆ ซีพียูจะไม่รู้หรอกว่าข้อมูลนั้นเก็บอย่างไร ขอเพียงเรียกข้อมูลตามตำแหน่งที่ต้องการ แคชจะไปหาข้อมูลจริงๆ (ซึ่งไม่แน่ว่าอยู่ที่ไหน) มาให้ แนวคิดนี้ใช้กันมากนะครับ ทั้งเรื่องแคช เวอชวลเมโมรี ไปจนถึงเวอชวลแมชชีนในภาษาจาวา ผลดีของมันก็คือระบบที่ค่อนข้างจะยืดหยุ่น อย่างเช่นเรารันจาวาบนเครื่องไหนก็ได้ เพราะจาวาจะไม่เห็นเครื่องคอมพิวเตอร์จริงๆ แต่จะเห็นแค่เวอชวลแมชชีน ที่ JRE (Java Runtime Environment) สร้างขึ้น ส่วนข้อเสียของมันอย่างชัดเจนก็คือเรื่องประสิทธิภาพนั่นเอง

ในงานที่ไม่ห่วงเรื่องประสิทธิภาพมากนัก อัดซีพียูแรงๆ หน่อยก็พอจะทดแทนกันได้ แต่ในงานที่ต้องการประสิทธิภาพสูงมากๆ ปัญหา Abstraction ถือเป็นคอขวดสำคัญเลย

และนี่ก็เป็นไอเดียเริ่มต้นของ Cell

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

รายละเอียด

Cell Architecture

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

ชั้นถัดมาคือ Cell 1 ชุดครับ ส่วนประกอบหลักที่สำคัญที่สุดคือ APU (Attached Processor Unit) จำนวน 8 ตัว ซึ่งการคำนวณจริงๆ จะเกิดขึ้นใน APU ทั้ง 8 นี้ แต่ละตัวจะทำงานอิสระจากกัน รายละเอียดเราไปว่ากันใน APU อีกทีหนึ่ง ส่วนถัดมาคือ PU (Processor Unit) เป็นตัวควบคุมว่าจะให้ APU ตัวไหนทำอะไร อ่านเขียนหน่วยความจำตรงไหนบ้าง โดย PU จะไม่สั่งไปยัง APU โดยตรง แต่จะเขียนคำสั่งลงใน DMAC (Direct Memory Access Control) ซึ่งเปรียบเสมือนกับศูนย์กลางการสื่อสารของ Cell น่ะเอง DMAC จะเป็นตัวกลางระหว่าง PU กับ API และหน่วยความจำ (ในกรณีเรียกข้อมูลจากหน่วยความจำ) รวมไปถึง I/O ภายนอก (ในกรณีเรียกข้อมูลภายนอก เช่น Cell ตัวอื่น หรือ อ่านข้อมูลจากฮาร์ดดิสก์) เป็นต้น บัสของ Cell ก็ไม่ใช่ธรรมดาครับ พันธมิตร TSI ซื้อสิทธิ์การใช้งานบัสความเร็วสูงของ RAMBUS มาแล้ว

ย่อยลงไปอีกก็คือตัวสำคัญ APU แต่ละ APU จะประกอบด้วยหน่วยประมวลผลเลขทศนิยม (Floating Point) จำนวน 4 ตัว และหน่วยประมวลผลเลขจำนวนเต็ม (Integer) อีก 4 ตัว ระหว่างกลางจะมีรีจิสเตอร์ขนาด 128 บิตจำนวน 128 ตัว คอยเก็บข้อมูลที่ต้องใช้ในการประมวลผล และแรมแบบ SRAM อีก 128KB ที่ใช้แทนแคช

สถาปัตยกรรมของทั้ง PU และ APU คาดว่าจะเป็น POWER Architecture ของไอบีเอ็ม ให้ยกตัวอย่าง POWER ที่มีใช้กันจริงๆ คือ Power4 นั้นถูกนำมาทำเป็น G5 ที่ใช้ในแมคอินทอช และ Power 5 ที่คาดว่าจะเอามาทำ G6 ในอนาคต นอกจากนี้แล้วเครื่องเล่นเกม Gamecube ของนินเทนโดก็ใช้สถาปัตยกรรม POWER เช่นกัน รวมไปถึง Revolution เครื่องตัวต่อไปของนินเทนโดด้วย แปลว่าเครื่องเล่นเกมยุคถัดไป 3 ตัวจะเป็น POWER ทั้งหมด (Revolution, PS3 และ Xbox2 ซึ่งใช้ Power แน่นอนแล้ว)

Stream Processing

ทำไมต้องมี APU ถึง 8 ตัวใช่มั้ยครับ เพราะสิ่งที่มันทำได้ก็คือ Stream Processing หรือการประมวลผลขนานกันของ APU หลายๆ ตัวใน Cell เดียวกัน (แยกลำดับชั้นให้ดีๆ นะครับ) แนวคิดของ Stream Processing จะตรงกับแนวคิดของการประมวลผลแบบ Vector (1 รอบสัญญาณนาฬิกา ทำได้หลายชุดคำสั่ง) ซึ่งปัจจุบันเราก็ใช้กันอยู่ในคำสั่งประเภท MMX, SSE ที่มีเป็นจุดขายในเพนเทียมทั้งหลาย ซึ่งส่วนมากจะเป็นงานด้านมัลติมีเดียโดยเฉพาะ

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

ฟังดูดี แต่ก็มีข้อจำกัดว่า งานที่จะใช้ Stream Processing ได้ก็ต้องโปรแกรมมาเฉพาะสำหรับ Stream Processing เท่านั้น ถ้าไม่ได้ตั้งใจเขียนมาเพื่อทำงานแบบนี้โดยเฉพาะ ก็ไม่เกิดประโยชน์อะไร

Cellular Computing

ทีนี้มองในชั้นของ Cell แต่ละ Cell เราไม่สนตัว APU แล้วนะครับ หลักการทำงานของ Cellular Computing ตัว OS จะจัดปริมาณการคำนวณที่ต้องการ รวมเป็นชุดข้อมูล ที่ประกอบไปด้วยชุดคำสั่ง, ข้อมูลที่จะใช้ และข้อมูลอื่นๆ ที่จำเป็น เรียกว่า 1 Software Cell จากนั้น OS จะทำการค้นหา Hardware Cell ที่ว่างอยู่ในระบบ (ซึ่งอาจหมายถึง Cell บนเครื่องอื่นๆ ที่ส่งข้อมูลผ่านเครือข่ายก็ย่อมได้ การจัดการค้นหา Cell และส่งข้อมูลเป็นหน้าที่ของ OS) แล้วส่ง Software Cell ไปทำงานบน Cell ตัวที่ต้องการ นี่เป็นการประมวลผลแบบขนานกลายๆ นั่นคือ แยกงานที่ทำลงเป็นงานย่อยๆ เรียกเป็น Cell และกระจายกันไปประมวลผลในแต่ละที่

นั่นหมายความว่า ถ้าพลังในการประมวลผลของ Cell ภายในอุปกรณ์ไม่เพียงพอแล้วล่ะก็ เราสามารถยืมพลังจาก Cell ตัวอื่นๆ ในรัศมีใกล้เคียงมาได้ เช่น คุณมี PDA ที่ใช้ Cell แต่ดันใช้งานผิดประเภทเอา PDA ไปเข้ารหัสหนัง ถ้าแถวๆ นั้นมี PS3 ตั้งอยู่และติดต่อกับ PDA ได้ด้วย WiFi คุณก็สามารถสั่ง (จริงๆ OS เป็นคนสั่ง) ให้ PS3 มาช่วย PDA ทำงานได้ การกระทำแบบนี้มีศัพท์เฉพาะเรียกว่า Ubiquitous Computing หรือคอมทุกหนทุกแห่ง ในอนาคตเราอาจจะเอา Cell ไปฝังในกำแพง ถ้าใครอยากได้พลังการคำนวณเพิ่มก็จ่ายตังแล้วเอาคอมไปจ่อกับกำแพงก็ได้

ที่ว่ามาเป็นแค่แนวคิดที่จะใช้ใน Cell เท่านั้นนะครับ ส่วนการทำงานจริงนั้นต้องมีอะไรอีกเยอะ ทั้งวิธีการค้นหา การสั่งการ ซึ่งต้องยุ่งยากเพิ่มขึ้น และทำให้ประสิทธิภาพไม่สูงเท่าตามทฤษฎีอีกด้วย

ประสิทธิภาพ

คนเขียนบทความอ้างว่า 1 Cell มีค่าเท่ากับ 5 Dual Opteron ครับ เรื่องประสิทธิภาพทั้งหมดเป็นคำอ้าง ซึ่งไม่มีเบนช์มาร์คทดสอบ ดังนั้นฟังหูไว้หูดีกว่า มันคงไม่เร็วเวอร์มาก แต่ก็คิดว่าคงเร็วกว่าซีพียูปัจจุบันแบบก้าวกระโดดอยู่เหมือนกัน

จุดอ่อน

แน่นอนว่า Cell ไม่ใช่ความพยายามแรกในการล้มอาณาจักร x86 ของอินเทล ในวงการคอมพิวเตอร์ก็สรุปกันเรียบร้อยมาหลายปีแล้วว่าซีพียูแบบ CISC (x86) นั้นห่วยกว่า RISC (Power, SPARC) เยอะ เพียงแต่ x86 นั้นถูก มีโปรแกรมให้ใช้เยอะ และหาได้ทั่วไปตามท้องตลาดง่ายกว่ากันเยอะมาก หลายบริษัทที่มีคอมพลังสูงออกมาแข่งกับ x86 ก็ล่มจมไปหลายรายไม่ว่าของจะเจ๋งแค่ไหน แต่ขายไม่ได้ก็จบ

ปัญหาสำคัญอันดับแรกของ Cell คือราคา เพราะว่า x86 มีกลไกการตลาดมายาวนานทำให้ผลิตได้ในราคาถูก แต่ปัญหานี้คงแก้ได้บ้าง ด้วยขนาดของพันธมิตร STI ที่แต่ละค่ายก็ระดับยักษ์ทั้งนั้น และการที่วาง Cell ไว้ในอุปกรณ์ที่มันต้องขายดีแน่ๆ อย่าง PS3 ก็การันตีจำนวนการผลิตของ Cell ได้พอสมควร

ปัญหาถัดมาที่ใหญ่กว่านั้นคือซอพท์แวร์ครับ การทำงานบน Cell ถึงจะอิงจากสถาปัตยกรรม Power แต่ก็ยังต้องมีการเขียนโค้ดใหม่กันพอสมควร ด้วยจำนวนซอพท์แวร์ (ในที่นี้คือเกม) ของ PS3 ก็คงช่วยให้ Cell เป็นจริงได้มากขึ้นในระยะแรกและตลาดเกม แต่ตลาดงานทั่วๆ ไปนอกจากเกมนั้น ก็ต้องอาศัยฝีมือด้านการตลาดของ STI แน่นอน

และปัญหาที่สามคือ OS ครับ ก่อนที่ปัญหาข้อสองคือซอพท์แวร์จากค่ายอื่นๆ จะเกิดได้ ก็ต้องมี OS สำหรับ Cell ก่อน ผลิตภัณฑ์ตัวแรกสุดย่อมเป็น PS3 และโซนี่ก็ต้องสร้าง Cell OS ให้ได้อยู่แล้ว เรารู้กันอยู่ว่าการสร้าง OS มันก็ไม่ได้ทำกันง่ายๆ ปีสองปีเสร็จ ถึงจะมีคนมาช่วยกันมากมายแบบลินุกซ์ก็ยังใช้เวลาเป็นสิบปีกว่าจะมาได้ถึงจุดนี้ ผมเดาว่าจะมี OS 4 ตัว ที่จะได้เกี่ยวข้องกับ Cell ในอนาคต - ตัวแรกคือ OS ของ PS3 เอง มันจะเป็น OS ที่ไม่มีอะไรมาก เพราะเน้นเอาไปใช้เล่นเกมอย่างเดียว เพื่อให้การพัฒนาเสร็จเร็วที่สุด ตอนนี้คาดว่าคงทำกันไปบางส่วนแล้ว ตามกำหนดการของ PS3 ในปลายปี 2006 แสดงว่าปลายปี 2005 มันควรจะรันได้เยอะแล้ว และให้เวลาในปี 2006 กับค่ายเกมในการสร้างเกมบน PS3 เราจะได้เห็นเจ้า Cell OS ตัวนี้ครั้งแรกจากเครื่อง PS3 Developer Kit จากไอบีเอ็มซึ่งจะแจกให้กับค่ายเกมในการเตรียมเกมสำหรับ PS3 ไม่นานนักจากนี้ครับ - ถัดมาคือ Linux โซนี่มีความสัมพันธ์กับลินุกซ์ค่อนข้างดี และ PS2 ก็ได้รับการสนับสนุนอย่างเป็นทางการจากโซนี่ให้รันลินุกซ์ได้ การที่ Cell เป็นสถาปัตยกรรมเปิด ย่อมต้องมีคนพอร์ทลินุกซ์ไปยัง Cell แน่นอน และเมื่อพอร์ทสำเร็จ ก็หมายความว่าซอพท์แวร์ที่มีอยู่มากมายบนลินุกซ์ สามารถย้ายไปรันบน Cell ได้ (ต้องการการคอมไพล์โค้ดใหม่ แต่ไม่ใช่เรื่องยากมากนักเทียบกับการเขียนโค้ดใหม่) ถ้า STI ต้องการรุกเข้าสู่ตลาดแอพพลิเคชั่นจริง ยังไงก็ต้องสนับสนุนลินุกซ์แน่ๆ เพียงแต่เมื่อไรเท่านั้นเอง - อย่างที่สามคือระบบปฏิบัติการที่ทำงานได้บน Power ได้สมบูรณ์ที่สุดในตอนนี้ครับ MacOSX เราไม่รู้ และไม่มีทางรู้ว่าแอปเปิลคิดยังไงกับ Cell แต่ถ้าแอปเปิลพลาด ก็อาจเจ๊งเหมือนคราวก่อนได้ เพราะถ้าแอปเปิลไม่ทำ - ไมโครซอพท์ก็มีสิทธิ์ที่จะทำแทน อย่าคิดว่าไมโครซอพท์จะยึดติดกับ x86 เหมือนที่ผ่านๆ มา การสร้าง Xbox2 ทำให้ไมโครซอพท์ต้องมีประสบการณ์ในการเขียน OS สำหรับสถาปัตยกรรม Power อยู่บ้าง ตอนนี้อาจยังกั๊กๆ อยู่ แต่ถ้า Cell บูมขึ้นมาจริง คุณคิดรึครับว่าเกตส์จะมองข้ามไป

ข้อสังเกต

แน่นอนว่าไม่มีอะไรรับประกันว่า Cell จะประสบความสำเร็จ เราอาจพิจารณาได้อีกครั้งในช่วงใกล้ๆ PS3 จะออก (ปลาย 2006) กว่า PS3 จะขายและคนจำนวนมากจะเปลี่ยนเครื่องเล่นเกมใหม่ก็คงกินเวลาซัก 2 ปี (2008) ซึ่งผมคิดว่าช่วงนั้น Linux for Cell คงเริ่มเป็นรูปเป็นร่าง และถ้าเราจะหันไปใช้ Cell กันแทน x86 ด้วยเหตุผลด้านประสิทธิภาพ ยังไงเสียไม่น่าจะเกิดก่อนปี 2010 ครับ ดังนั้นตอนนี้ก็เก็บพีซีของคุณเอาไว้ก่อนอย่าเพิ่งทิ้งไปไหน กว่ามันจะมาถึง ก็อีกนานเหมือนกัน

ทั้งหมดที่เขียนมานี้ไม่ได้เน้นในเรื่องเทคนิคมากนัก อยากให้รู้ว่า Cell มีอะไร และทำงานยังไงมากกว่า ถ้ามีอะไรผิดก็แจ้งมาตรงนี้ได้เลยครับผม

Get latest news from Blognone

Comments

By: lancaster
ContributorUbuntuWindows
on 12 January 2008 - 20:25 #39139

สองปีมาแล้ว มารอดูกันว่าอนาคต Cell จะเป็นไง

By: anu
Contributor
on 12 January 2008 - 23:25 #39169

http://en.wikipedia.org/wiki/Cell_microprocessor

เยี่ยมไปเลย..

By: HyBRiD
ContributoriPhoneSymbianUbuntu
on 13 January 2008 - 02:54 #39191
HyBRiD's picture

ไมไม่มี comment

By: e20vni on 10 February 2009 - 23:00 #84885

ขอบคุณครับ

By: hisoft
ContributorWindows PhoneWindows
on 27 March 2010 - 23:50 #165215
hisoft's picture
  • ยังไงเสียไม่น่าจะเกิดก่อนปี 2010 ครับ

ปัจจุบัน ๒๐๑๐ แล้วครับ นอกจาก Server & PS3 ผมไม่เห็นวี่แววเลย - -'

By: lancaster
ContributorUbuntuWindows
on 28 March 2010 - 01:24 #165238

ข่าวข้ามปีจริงๆ

By: F16
iPhoneWindows PhoneAndroidIn Love
on 28 March 2010 - 13:10 #165304

เหมือนย้อนอดีตได้ ^^

By: hononbier
iPhoneAndroidWindows
on 18 November 2013 - 10:54 #655518

ล่าสุด ปี 2013 ps4 ยังคงเป็น x86 ส่วน PC ก็ยังคงเป็น x86 เยอะอยู่ บางส่วนไป x64 ส่วน Cell หายกริบไปแล้ว 5555+

By: hisoft
ContributorWindows PhoneWindows
on 18 November 2013 - 11:37 #655544 Reply to:655518
hisoft's picture

จริงๆ x64 (x86-64 ก็นับรวมอยู่ใน x86 นั่นแหละครับ เพราะถ้าทำเป็น IA64 ที่ไม่รองรับ x86 ก็ไม่รอดเหมือนกัน

By: koalaz
ContributorAndroid
on 18 November 2013 - 17:05 #655673
koalaz's picture

Cell เทพที่สุดใน 3 โลก ...


Shut up and ヽ༼ຈل͜ຈ༽ノ raise your dongers ヽ༼ຈل͜ຈ༽ノ