Các thiết bị PostPC phải thay thế PC, điều đó đã được nói vài năm trước. Cuối cùng? Chúng tôi đang làm việc với các thiết bị nói các ngôn ngữ khác nhau và trong một số trường hợp, chúng buộc chúng tôi phải chuyển đổi giữa các thiết bị khác nhau mọi lúc. Nhưng với sự xuất hiện trong tương lai của ARMPC dựa trên chúng tôi tự hỏi liệu chúng tôi có thấy bộ vi xử lý hỗn hợp với x86 hay không.
Một mặt, chúng tôi có các PC có chương trình được biên dịch cho tập hợp các thanh ghi và lệnh x86, mặt khác chúng tôi có cái gọi là thiết bị PostPC, có các ứng dụng nói bằng ARM. Tuy nhiên, trong thời gian gần đây, các nhà thiết kế bộ vi xử lý cho hệ thống PostPC đã cho thấy rằng họ muốn chuyển sang PC, không phải x86, mà là PC dựa trên ARM.
Điều này dẫn đến việc cuối cùng có hai thị trường khác nhau, mỗi thị trường nói ngôn ngữ của nó và vô số ứng dụng không tương thích với hệ thống khác. Kịch bản lý tưởng? Có một PC với khả năng chạy các chương trình và hệ thống trên cả hai mặt, cho cả ARM và x86.
Nhưng điều này có khả thi không? Chúng tôi sẽ cố gắng giải thích những vấn đề mà các kiến trúc sư sẽ gặp phải khi thiết kế cả hệ thống hybrid và SoC hybrid, cũng như lý do tại sao Intel và AMD chưa phát hành bộ xử lý hỗn hợp của họ.
AMD và Intel không quan tâm đến CPU hỗn hợp giữa ARM và x86
Vấn đề đầu tiên là giấy phép x86 chỉ được cấp phép bởi Intel và AMD, vì vậy hai công ty này là những công ty duy nhất có khả năng tạo ra CPU tương thích với mã nhị phân x86. Vì vậy, trước hết, chúng ta phải suy nghĩ một chút về điều gì sẽ xảy ra nếu các công ty này tạo ra một CPU có khả năng thực thi các chương trình được thiết kế cho ARM.
Chúng tôi phải lưu ý rằng sẽ không thể chạy môi trường trên x86 và trên ARM cùng một lúc, vì vậy hầu hết các nhà phát triển biết rằng PC có x86 cũng có thể chạy mã ARM sẽ không bận tâm, từng chút một, mã x86 sẽ trở nên lỗi thời và ARM sẽ tăng lên về tỷ lệ sử dụng.
Một thế giới mà mọi người không sử dụng các chương trình x86 là một thế giới không đáng có đối với Intel và AMD, vì vậy một bộ xử lý về phía họ có thể chạy cả hai môi trường sẽ không phải là lý tưởng của họ
Triển khai x86 và ARM trên một hệ thống duy nhất
Chúng tôi có một ví dụ về điều này? Có, chúng tôi có một cái trong hàng chục triệu ngôi nhà được gọi là PlayStation 4, một bảng điều khiển có bộ xử lý chính là AMD SoC dựa trên x86 nhưng sau đó có bộ xử lý thứ hai với bộ xử lý ARM. Bộ xử lý này chỉ được kích hoạt khi bảng điều khiển ở chế độ chờ, chạy song song một hệ điều hành và có RAM ký ức.
Ý tưởng đơn giản nhất để thống nhất cả hai thế giới là tạo ra một máy tính, tùy thuộc vào mức tiêu thụ được yêu cầu tại mọi thời điểm, kích hoạt SoC này hay SoC khác, hệ thống được kích hoạt theo cách này hay cách khác, nhưng điều này có nghĩa là hai hệ thống đều có trong cùng một máy tính và thiết kế toàn bộ hệ thống phân phối điện cho hai hệ thống, đó không phải là một nhiệm vụ khó khăn.
Vấn đề khác sẽ đến trong việc sử dụng các thiết bị I / O của hệ thống, tất cả chúng đều phải có sẵn cho bộ xử lý của cả hai ISA, do đó phần cứng truy cập thiết bị ngoại vi bị trùng lặp hoặc một phần tử chung được tạo ra. , xung đột với các cách khác nhau mà mỗi loại bộ xử lý nói chuyện với chúng.
Hai ISA chạy cùng lúc trên một SoC, liệu có khả thi?
Nếu có điều gì đó đặc trưng cho các SoC, đó không chỉ là tất cả các thành phần đều nằm trên cùng một con chip, mà chúng đều chia sẻ cùng một quyền truy cập bộ nhớ, nhưng điều gì sẽ xảy ra khi hai bộ xử lý không hiểu cùng một ngôn ngữ? Chà, đó không phải là vấn đề vì các SoC có trong GPU của họ một cách khác để CPU đọc các mã nhị phân, tất cả những gì cần thiết là đánh dấu địa chỉ bộ nhớ phần nào dành cho ARM và phần nào dành cho x86.
Nghe có vẻ dễ dàng phải không? À không, lý do là x86 là Little Endian, nghĩa là nó đi qua bộ nhớ từ địa chỉ bộ nhớ thấp nhất đến cao nhất, ARM là Bi-Endian nên các chương trình có thể bắt đầu ở cả hai đầu và đi lên hoặc xuống tùy trường hợp. . Về nguyên tắc, sẽ dễ dàng liên kết một điểm cuối với mỗi ISA, nhưng có những hệ điều hành dành cho ARM hoạt động trong Little Endian.
Vấn đề khác là thực tế RAM được thiết kế để phục vụ một bộ xử lý cùng một lúc, vì vậy nếu chúng ta có hai bộ xử lý truy cập cùng một lúc, một bộ xử lý sẽ có sự tranh chấp nhau trong việc truy cập bộ nhớ, vì vậy các ứng dụng được thiết kế cho cả hai ISA sẽ không chạy dễ dàng như nhau, chưa kể rằng các tài nguyên được chia sẻ giữa cả hai bên trong SoC cũng sẽ làm như vậy.
Vì thế. Làm thế nào nó là một GPU có thể chia sẻ không gian với CPU một cách trơn tru? Vâng, thực tế đơn giản là GPU, mặc dù chúng thao tác dữ liệu và chạy chương trình, không được thiết kế để chạy hệ điều hành, và sự tồn tại của một hệ điều hành hoàn toàn phân liệt có thể hiểu được với hai kiến trúc cùng một lúc là không thể. Nơi mỗi người có một cách riêng để xác định địa chỉ bộ nhớ và truy cập thiết bị ngoại vi.