x86 และ ARM: พวกเขาสามารถทำงานบนพีซีในเวลาเดียวกันได้หรือไม่?

อุปกรณ์ PostPC ต้องเปลี่ยนพีซีซึ่งมีการกล่าวไว้เมื่อไม่กี่ปีก่อน ในตอนท้าย? เรากำลังทำงานกับอุปกรณ์ที่พูดภาษาต่างกันและในบางกรณีก็บังคับให้เราสลับไปมาระหว่างอุปกรณ์ต่างๆตลอดเวลา แต่ด้วยการมาถึงในอนาคตของ ARM- พีซีที่ใช้เราสงสัยว่าเราจะเห็นโปรเซสเซอร์ผสมกับ x86 หรือไม่

ในอีกด้านหนึ่งเรามีพีซีที่มีโปรแกรมรวบรวมสำหรับชุดรีจิสเตอร์ x86 และคำแนะนำในทางกลับกันเรามีอุปกรณ์ PostPC ที่เรียกว่าแอปพลิเคชันที่พูดใน ARM แต่ในช่วงไม่กี่ครั้งที่ผ่านมาผู้ออกแบบโปรเซสเซอร์สำหรับระบบ PostPC ได้แสดงให้เห็นว่าพวกเขาต้องการที่จะข้ามไปยังพีซีไม่ใช่เพื่อ x86 แต่จะมีพีซีที่ใช้ ARM

x86 และ ARM

สิ่งนี้จบลงด้วยการทำให้มีตลาดที่แตกต่างกันสองตลาดแต่ละแห่งพูดภาษาของตนและแอปพลิเคชันจำนวนไม่สิ้นสุดซึ่งเข้ากันไม่ได้กับระบบอื่น สถานการณ์ในอุดมคติ? การมีพีซีที่มีความสามารถในการรันโปรแกรมและระบบทั้งสองด้านสำหรับทั้ง ARM และ x86

แต่เป็นไปได้หรือไม่? เราจะพยายามอธิบายปัญหาที่สถาปนิกต้องเผชิญเมื่อออกแบบทั้งระบบไฮบริดและ SoC แบบไฮบริดรวมถึงเหตุผลว่าทำไม อินเทล และ เอเอ็มดี ยังไม่ได้เปิดตัวโปรเซสเซอร์แบบผสม

AMD และ Intel ไม่สนใจ CPU ผสมระหว่าง ARM และ x86

Intel-AMD-ARM

ปัญหาแรกคือใบอนุญาต x86 ได้รับอนุญาตจาก Intel และ AMD เท่านั้นดังนั้นทั้งสอง บริษัท นี้จึงเป็น บริษัท เดียวที่สามารถสร้าง ซีพียู เข้ากันได้กับไบนารี x86 ดังนั้นก่อนอื่นเราต้องคิดสักนิดว่าจะเกิดอะไรขึ้นถ้า บริษัท เหล่านี้สร้าง CPU ที่สามารถรันโปรแกรมที่ออกแบบมาสำหรับ ARM ได้

เราต้องจำไว้ว่ามันจะเป็นไปไม่ได้ที่จะเรียกใช้สภาพแวดล้อมบน x86 และบน ARM ในเวลาเดียวกันดังนั้นนักพัฒนาส่วนใหญ่ที่รู้ว่าพีซีที่มี x86 สามารถเรียกใช้รหัส ARM จะไม่รบกวนโค้ดทีละน้อย x86 จะล้าสมัยและ ARM จะเพิ่มขึ้นตามเปอร์เซ็นต์การใช้งาน

โลกที่ผู้คนไม่ใช้โปรแกรม x86 เป็นโลกที่ไม่คุ้มค่าสำหรับ Intel และ AMD ดังนั้นโปรเซสเซอร์ในส่วนของพวกเขาที่สามารถทำงานได้ทั้งสองสภาพแวดล้อมจึงไม่เหมาะอย่างยิ่ง

การปรับใช้ x86 และ ARM บนระบบเดียว

แสดงผล procesador

เรามีตัวอย่างนี้หรือไม่? ใช่เรามีที่อยู่ในบ้านหลายสิบล้านที่เรียกว่า เพลย์สเต 4 ซึ่งเป็นคอนโซลที่มีโปรเซสเซอร์หลักคือ AMD SoC ที่ใช้ x86 แต่มีโปรเซสเซอร์ตัวที่สองพร้อมโปรเซสเซอร์ ARM โปรเซสเซอร์นี้จะเปิดใช้งานเมื่อคอนโซลอยู่ในโหมดสแตนด์บายรันระบบปฏิบัติการแบบขนานและมีของตัวเอง แรม หน่วยความจำ

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

ปัญหาอื่น ๆ จะมาจากการใช้อุปกรณ์ I / O ของระบบซึ่งทั้งหมดควรมีให้สำหรับโปรเซสเซอร์ของ ISA ทั้งสองดังนั้นฮาร์ดแวร์ที่เข้าถึงอุปกรณ์ต่อพ่วงจะซ้ำกันหรือสร้างองค์ประกอบทั่วไป ซึ่งขัดแย้งกับวิธีการต่างๆที่โปรเซสเซอร์แต่ละประเภทพูดคุยกับพวกเขา

สอง ISA ทำงานพร้อมกันบน SoC เดียวเป็นไปได้หรือไม่?

แขน x86

หากมีบางอย่างที่แสดงลักษณะของ SoC ไม่ใช่แค่ส่วนประกอบทั้งหมดที่อยู่บนชิปเดียวกันเท่านั้น แต่ยังใช้การเข้าถึงหน่วยความจำเดียวกันทั้งหมด แต่จะเกิดอะไรขึ้นเมื่อโปรเซสเซอร์สองตัวไม่เข้าใจภาษาเดียวกัน นั่นไม่ใช่ปัญหาเนื่องจาก SoC มีใน GPU ซึ่งเป็นวิธีที่แตกต่างไปจาก CPU เพื่ออ่านไบนารีสิ่งที่จำเป็นคือการทำเครื่องหมายในหน่วยความจำที่ระบุว่าส่วนใดเป็นของ ARM และส่วนใดสำหรับ x86

ฟังดูง่ายใช่ไหม ไม่เหตุผลก็คือ x86 คือ Little Endian ซึ่งหมายความว่ามันผ่านหน่วยความจำจากที่อยู่หน่วยความจำต่ำสุดไปยังสูงสุด ARM คือ Bi-Endian ดังนั้นโปรแกรมสามารถเริ่มต้นที่ปลายทั้งสองข้างและขึ้นหรือลงขึ้นอยู่กับกรณี . ตามหลักการแล้วการเชื่อมโยงจุดสิ้นสุดกับแต่ละ ISA นั้นเป็นเรื่องง่าย แต่มีระบบปฏิบัติการสำหรับ ARM ที่ทำงานใน Little Endian

การกำหนดเส้นทาง PCB

ปัญหาอื่น ๆ คือความจริงที่ว่า RAM ได้รับการออกแบบมาเพื่อให้บริการโปรเซสเซอร์ในเวลาเดียวกันดังนั้นหากเรามีโปรเซสเซอร์สองตัวที่เข้าถึงในเวลาเดียวกันตัวหนึ่งจะมีข้อโต้แย้งในการเข้าถึงหน่วยความจำดังนั้นแอปพลิเคชันที่ออกแบบมาสำหรับทั้งสอง ISA ไม่ทำงานด้วยความสะดวกแบบเดียวกันไม่ต้องพูดถึงว่าทรัพยากรที่ใช้ร่วมกันระหว่างทั้งสองภายใน SoC ก็จะทำได้

ดังนั้น. มันเป็นอย่างไร GPU สามารถแบ่งปันพื้นที่กับ CPU ได้อย่างราบรื่น? สำหรับข้อเท็จจริงง่ายๆที่ว่า GPU แม้ว่าจะจัดการข้อมูลและรันโปรแกรม แต่ไม่ได้ออกแบบมาเพื่อเรียกใช้ระบบปฏิบัติการและการมีอยู่ของระบบปฏิบัติการจิตเภทที่สมบูรณ์ซึ่งสามารถเข้าใจได้ด้วยสถาปัตยกรรมสองแบบในเวลาเดียวกันนั้นเป็นไปไม่ได้ โดยที่แต่ละคนมีวิธีการระบุหน่วยความจำและการเข้าถึงอุปกรณ์ต่อพ่วงของตัวเอง