0 Replies Latest reply on Feb 12, 2012 10:58 PM by kean.lau

    HSA and Portable Native Client virtual ISA


      At a high level the Heterogeneous Systems Architecture and Google's Portable Native Client virtual instruction set architecture/intermediate language (http://src.chromium.org/viewvc/native_client/data/site/pnacl.pdf) share a lot of similarities:

      • Both are a low level instruction sets which can be encoded in a bytecode form
      • The instruction sets of both are platform neutral
      • The bytecode form of both are intended to be portable
      • The bytecode form of both are JIT compiled on the target machine
      • Both are based on LLVM

      Some possible differences include:

      • Instructions in Portable Native Client are executed in a sandbox after JIT
      • Portable Native Client currently only supports 32-bit integers and pointers
      • Portable Native Client seems to only support a weak consistency memory model, though HSA probably has to adopt this too to be platform neutral
      • HSA's instruction set is also suitable for vector processors
      • HSA also supports invoking fixed function hardware
      • On HSA all of the different types of processors share the same virtual address space

      With the exception of Portable Native Client's 32-bit integer and pointer limitation, the difference features of Portable Native Client and HSA should be beneficial for each other. HSA could be a pretty ideal platform for Portable Native Client to run on.


      AMD is approaching the virtual portable ISA problem from a system level architecture level upwards whereas Google is approaching from an application layer downwards. In the middle where the 2 virtual ISAs exist, they have very similar goals so it doesn't make sense to develop 2 competing platforms.


      Has there been collaboration between AMD and Google? Anyone from AMD want to comment?