2009-06-30 37 views
16

Linus Torvalds được sử dụng để làm việc cho một công ty xử lý có tên Transmeta. Bộ vi xử lý mà họ tạo ra là một đối tượng dựa trên RISC trong lõi. Nếu tôi nhớ chính xác, ý tưởng là lõi chạy một lớp mô phỏng bộ xử lý tùy ý và có thể nâng cấp (có thể là x86, powerpc, vv), đã dịch các opcodes mức cao thành tập lệnh lõi RISC.Biến đổi mã ở đâu?

Điều gì đã xảy ra với ý tưởng này và ý kiến ​​của bạn là ưu điểm, nhược điểm và tình huống mà cách tiếp cận đó có thể có lợi thế (về mặt lập trình)?

+2

+1 Câu hỏi rất thú vị. Tôi đang chờ ai đó dịch trình phát Flash x86 sang ARM. :-) – Zifre

+0

Code morphing đã thấy sự hồi sinh trong lõi NVIDIA * Denver * đầu tiên được sử dụng trong máy tính bảng HTC Google Nexus 9 (có Tegra K1 SoC có hai lõi * Denver *). Bên trong, đó là VLIW 7-in. NVIDIA gọi công nghệ biến đổi mã "tối ưu hóa mã động". Về cơ bản nó dịch và tối ưu hóa mã ARMv8-A khi chạy cho lõi bên dưới và lưu trữ kết quả trong một khối bộ nhớ chuyên dụng. Trong điều kiện lý tưởng (ví dụ:mã lặp lại, có thể dự đoán được), nó hoạt động gần giống như máy tính để bàn * Haswell *; trong điều kiện ít hơn lý tưởng, nó có thể không nhanh hơn Cortex-A53 nhiều. – bwDraco

+0

Tôi sở hữu Nexus 9 và sử dụng nó khá rộng rãi; trong hầu hết các tác vụ đơn luồng đơn giản hơn, nó hoạt động khá tốt, nhưng nó bị hiệu suất kém khi được yêu cầu làm nhiều việc cùng một lúc. Chỉ có hai lõi và không thích mã không thể đoán trước (trong đó các phiên bản tối ưu hóa chưa được lưu trữ và cần phải được biên dịch trước hoặc không hoàn toàn phù hợp với bộ nhớ cache 128 MB) đáng chú ý gây tổn hại đến hiệu suất công việc phức tạp. Bộ vi xử lý nội bộ có bộ giải mã ARM làm dự phòng cho mã chưa được dịch và tối ưu hóa nhưng nó rất, rất chậm. Tốc độ xung nhịp cao (2,3 GHz) phần nào bù đắp cho nó. – bwDraco

Trả lời

7

Công ty không hoạt động tốt như mong đợi, và cuối cùng được Novafora mua lại vì công nghệ tiết kiệm năng lượng của nó. (http://www.novafora.com/pr01-28-09.html)

Từ tất cả các tài khoản mà tôi biết, công nghệ đơn giản là không cạnh tranh với các hệ thống hiện có. Họ đã giảm rất ít số hiệu suất của họ. Ngoài ra, trong khi nó có thể có thể đặt một dịch giả trên đầu trang của thiết kế VLIW của họ, tôi không nhận thức được bất kỳ sản phẩm mà họ sản xuất đã làm. Tôi không nhớ chip Crusoe có thể chấp nhận bản tải xuống "dịch mã" thay thế.

Cá nhân tôi sở hữu một thiết bị sử dụng bộ vi xử lý Crusoe, và trong khi nó chắc chắn được phân phối trên thời lượng pin, hiệu suất của thiết bị khá ảm đạm. Một số đổ lỗi có thể có thể được san bằng trên phiên bản đặc biệt của Windows nó được sử dụng, nhưng nó vẫn còn chậm.

Tốt nhất, nó tốt cho máy tính để bàn di động từ xa.

IMHO, công nghệ này có những lợi ích tương tự như phần mềm máy ảo của như Net và JVM:

  • Ngược ở đây là bạn có thể có thể tăng tốc mã nhanh hơn với một giải pháp phần cứng (như IBM thực hiện với là bộ vi xử lý tăng tốc Java) so với JIT phần mềm thuần túy.
  • Nhược điểm là bạn không bao giờ có được hiệu suất thô mà bộ vi xử lý thực thi mã số gốc .

Từ một số quan điểm, bạn có thể nghĩ về các chip x86 hiện đại như biến hình mã, mặc dù là các mã rất chuyên biệt.Chúng dịch kiến ​​trúc x86 thành một tập hợp con như RISC hiệu quả hơn, và sau đó thực thi chúng.

Một ví dụ khác về loại công nghệ này có thể là các FPGA có thể được lập trình để mô phỏng trên một mức mạch khác nhau của các bộ vi xử lý hoặc mạch thô. Tôi tin rằng một số hệ thống Cray có thể đi kèm với "nút tăng tốc" của loại này.

3

ưu hiển nhiên:

  • Khả năng chạy bất kỳ hệ điều hành (chỉ cần chuyển đổi các mô phỏng vi xử lý với những gì là cần thiết)
  • Khả (với sự hỗ trợ hạt nhân tất nhiên) chạy mã nhị phân cho các kiến ​​trúc khác nhau trên bộ vi xử lý tương tự/HĐH không hỗ trợ phần mềm.

Rõ ràng con:

  • lớp phụ thi đua == overhead hơn == bộ xử lý nhanh hơn cần thiết để có được hiệu suất tương đương cho tất cả mọi thứ.
4

Đối với một điều, hầu hết các bộ vi xử lý CISC dịch nội bộ opcodes của họ để phát hiện vi lệnh hoạt động tương tự như RISC ops. Pipelining và nhiều lõi đã thu hẹp khoảng cách trên các bộ vi xử lý RISC đến mức có sự khác biệt rất nhỏ giữa chúng, nếu có. Nếu bạn cần khả năng tương thích chéo từ nguồn C hoặc một giao diện người dùng khác, bạn có thể sử dụng LLVM. http://llvm.org/

2

Hầu hết các bộ vi xử lý hiện đại thực sự triển khai bộ hướng dẫn của họ bằng cách sử dụng microcode. Có nhiều lý do cho việc này, bao gồm các mối quan tâm về tính tương thích, nhưng cũng có các lý do khác là .

Sự khác biệt giữa phần cứng là gì và phần mềm "" thực sự khó thực hiện là gì. Các máy ảo hiện đại như JVM hoặc CIL (.NET) cũng có thể được triển khai trong phần cứng, nhưng điều đó có thể chỉ được thực hiện bằng cách sử dụng microcode.

Một trong những lý do có nhiều lớp trừu tượng trong hệ thống là các kỹ sư/lập trình viên không cần phải suy nghĩ về các chi tiết không liên quan khi họ đang làm việc ở mức .

Thư viện hệ thống và hệ điều hành cũng cung cấp các lớp trừu tượng bổ sung. Nhưng có những lớp này chỉ làm cho hệ thống "chậm hơn" nếu một người không cần các tính năng mà họ cung cấp (tức là việc lập lịch trình luồng được thực hiện bởi hệ điều hành). Nó không phải là nhiệm vụ dễ dàng để có được chương trình lập kế hoạch cụ thể của riêng bạn để đánh bại một trong hạt nhân Linux.

3

Tôi có thể nói rằng giảm chi phí đi kèm với số lượng, vì vậy một số thứ như chip Transmeta phải bán rất nhiều trước khi nó có thể cạnh tranh về giá với chip x86 có khối lượng cao hiện tại.

Nếu tôi nhớ lại, điểm của chip Transmeta là nó có công suất thấp. Có ít cửa silicon để lật qua lại mỗi chu kỳ đồng hồ giúp tiết kiệm năng lượng. Mã morphing là do đó bạn có thể chạy một bộ lệnh phức tạp (CISC) trên một chip RISC điện năng thấp.

Bộ vi xử lý đầu tiên của Transmeta, Crusoe, không hoạt động tốt do các sự cố thậm chí chạy phần mềm chuẩn. Bộ vi xử lý thứ hai của họ, Efficeon, đã quản lý để sử dụng ít năng lượng hơn so với Intel Atom (trong cùng một loại hiệu suất), và hoạt động tốt hơn so với Centrino trong cùng một phong bì quyền lực.

Bây giờ, nhìn vào nó từ quan điểm phần mềm và tính linh hoạt như bạn đang có, Code Morphing chỉ là một hình thức biên dịch Just-In-Time, với tất cả những lợi ích và sự phản đối của công nghệ đó. Mã x86 của bạn về cơ bản đang chạy trên một máy ảo và được bộ xử lý khác mô phỏng. Lợi ích lớn nhất của ảo hóa ngay bây giờ là khả năng chia sẻ một bộ xử lý duy nhất trong số nhiều máy ảo để bạn có ít chu trình CPU nhàn rỗi hơn, chi phí hiệu quả hơn (chi phí phần cứng và chi phí năng lượng).

Vì vậy, có vẻ như với tôi rằng mã biến đổi, giống như bất kỳ hình thức ảo hóa nào, là tất cả về việc hiệu quả hơn với tài nguyên.

3

Đối với một cách tiếp cận khác để hỗ trợ ảo hóa x86 ISA hỗ trợ phần cứng, bạn có thể muốn đọc về CPU Loongson 3.

Các vấn đề liên quan