2009-09-05 38 views
19

nếu chúng ta triển khai trình thông dịch java trong phần cứng thì làm cách nào chúng ta có thể đạt được tính trung lập kiến ​​trúc của bytecode java ... java có sử dụng JIT (chỉ trong trình thông dịch thời gian) không? và cách tất cả điều này liên quan đến khái niệm Máy ảo của hệ điều hành và máy ảo java (JVM)chúng ta có thể thực hiện một trình thông dịch java trong phần cứng thực thi các bytecode Java một cách tự nhiên không?

+1

Danh sách triển khai: https://en.wikipedia.org/wiki/Java_processor –

Trả lời

10

Đã có một số triển khai phần cứng của hệ thống Java (tức là một CPU có thể thực thi bytecode) nhưng chúng không trở thành chủ đạo. Điều này rất có thể là do việc triển khai phần mềm đó hoạt động tốt hoặc thậm chí tốt hơn khi CPU đã trở nên nhanh hơn và nhanh hơn. Như bạn sẽ thấy khi điều tra kỹ hơn, các chi tiết của việc triển khai JVM không quan trọng (và thay đổi một chút) nhưng tất cả đều thực thi ngôn ngữ máy của mã byte JVM - java. Nếu bạn ở trong thế giới Java và không liên kết trong nội dung "bản địa", bạn sẽ ổn với bất kỳ triển khai nào bạn chọn.

Công ty này kiếm sống bằng việc cung cấp các hệ thống máy chủ điều chỉnh cho các chương trình Java, họ có thể bạn quan tâm: http://www.azulsystems.com/

+0

một câu hỏi nhanh, cấu hình thiết bị nào phải chạy phiên bản phần mềm jvm? – inquisitive

+1

@Inquisitive Ai đó phải tạo một JVM cho thiết bị đó. Cấu hình sau đó phải đáp ứng các yêu cầu cho JVM. –

+1

Ở đây trong năm 2017, CPU đã ngừng hoạt động nhanh hơn và nhanh hơn. Thay vào đó, phần mềm JVM sử dụng nhiều bộ nhớ hơn để giữ thông tin lược tả mà JIT có thể sử dụng để tạo ra mã máy cực kỳ được tối ưu hóa ở nơi nó quan trọng. Việc triển khai phần cứng thường không có tùy chọn đó để chúng không thể tối ưu hóa nhiều. Với phần cứng giống hệt nhau, giải pháp phần mềm sẽ thắng. –

3
  • Thực hiện JVM trong phần cứng bỏ qua lợi thế của việc chạy mã được quản lý. Những gì khác nhau sau đó sẽ được từ bất kỳ mã nguồn gốc khác. Và có, nền tảng trung lập cũng bị cản trở. Bất kể, có những triển khai như vậy, hãy kiểm tra loạt bộ xử lý aJile và Jazelle của ARM. Đây là những mục tiêu tại các nền tảng nhúng mặc dù.
  • Trình biên dịch của Sun, HotSpot sử dụng JIT. Cá nhân tôi đã không sử dụng những người khác nhưng nó phải là một công nghệ được sử dụng rất cao.
  • JVM có thể được coi là một VM tài nguyên giới hạn, được nhắm mục tiêu tại chỉ một nền tảng cụ thể (mã Java bytecode).
+0

có nghĩa là ảo hóa java (hoặc có thể gọi là jre?) Khác với ảo hóa hệ điều hành ... Tôi có đúng không? – paragjain

+0

Ảo hóa, như tôi đã hiểu là mô phỏng phần cứng sử dụng phần mềm. Ứng dụng khách (ứng dụng java hoặc hệ điều hành) xem VM như một máy tính khác và sử dụng mã gốc để tương tác với nó.Mặt khác, máy ảo hiểu mã nguồn máy chủ, giải thích những gì ứng dụng đang yêu cầu và sau đó tự thực hiện các hành động, miễn là có các ủy quyền và quyền cần thiết tại chỗ. Vì vậy, theo định nghĩa này, ảo hóa các ứng dụng java hoặc hệ điều hành là tương tự, phạm vi hoạt động của nó được cung cấp cho khách và sức mạnh của VM khác nhau. – Chintan

+0

ảo hóa đề cập đến việc thay đổi một máy vật lý hoàn chỉnh thành một chương trình đang chạy trên một máy vật lý khác –

6

Có, bạn có thể. Mặc dù điều này có vẻ như nó bị mắc kẹt trong giai đoạn đặc tả (hoặc đã bị hủy bỏ), picoJava cho phép thực thi native bytecode Java. picoJava has a port available on a FPGA. Có Jazelle, cũng như cho bộ vi xử lý ARM.

Cho rằng phần cứng sẽ thực thi trực tiếp bytecode, tất cả các tối ưu hóa cũng sẽ phải được thực hiện trong phần cứng. JIT sẽ không được yêu cầu, vì bộ vi xử lý sẽ thực thi bytecode trực tiếp. Sau khi tất cả việc triển khai phần cứng sẽ liên quan đến việc triển khai mô hình JVM như được định nghĩa trong Java Virtual Machine Specification. Tối ưu hóa có thể được thực hiện, sẽ được trên các dòng tối ưu hóa phần cứng - hướng dẫn pipelining, sử dụng bộ nhớ cache, vv

Phần cứng trung lập không bị mất, vì thực thi bytecode trên một phần cứng sẽ tiếp tục làm việc trên một phần mềm thực hiện tốt. Nó là tiêu chuẩn bytecode cho phép Java trung hòa phần cứng.

+0

Rất hay khi chỉ ra rằng "Tính trung lập phần cứng không bị mất, vì mã byte thực thi trên thực thi phần cứng cũng sẽ tiếp tục hoạt động trên phần mềm thực hiện. Đây là tiêu chuẩn bytecode cho phép Java trung hòa phần cứng". Tuy nhiên, –

6

Vâng, có một số việc triển khai Java phần cứng. Tuy nhiên, chúng không phải lúc nào cũng hoạt động tốt hơn phần mềm chạy trên silicon đa dụng hơn.

Mark Lam đã viết several interesting blogs entries về chủ đề này.

+0

Một trong những vấn đề cơ bản là tối ưu hóa phần mềm có thể được 'vá'. Phần cứng không thể. –

+1

Thậm chí nếu việc thực hiện xảy ra trong phần cứng thì không có gì cản trở JVM phần cứng để làm bất cứ việc tối ưu nào mà nó muốn. Máy có RAM và tất cả mọi thứ :) –

+4

Thực ra, không thể cho phần mềm nhanh hơn phần cứng. Nếu phần cứng chậm hơn, điều đó có nghĩa là phần cứng kém phát triển. Ví dụ, nếu Hotspot JIT nhanh hơn so với một số phần cứng thực hiện của Java, bạn chỉ có thể di chuyển phần mềm HotIT JIT sang phần cứng, điều này chắc chắn sẽ nhanh hơn phần cứng hiện tại. Nhưng trong mọi trường hợp, tôi nghi ngờ JIT là cách nhanh nhất để triển khai JVM trong phần cứng. @Vineet: 1. Bất cứ điều gì có thể được thực hiện trong phần mềm có thể được thực hiện trong phần cứng. 2. x86 thực hiện tối ưu hóa nghiêm ngặt ở cấp độ phần cứng. –

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